SlideShare a Scribd company logo
1 of 19
Hacking Go Compiler 
Internals 
Moriyoshi Koizumi <mozo@mozo.jp>
Intended Audience 
โ€ข An eccentric Go programmer who happens to want 
to add feture XX to the language, knowing her 
patch will never be merged. 
โ€ข A keen-minded programmer who wants to know 
how the compiler works.
Overall Architecture 
Lexer 
Parser 
Escape Analysis 
Typegen GCproggen 
Codegen
Phase 1. Lexer
Lexer 
โ€ข A lexer scans over the source code and cut it into a 
bunch of meaningful chunks (the first abstraction). 
โ€ข Example: 
a := b + c() 
LNAME LASOP LNAME + LNAME ( )
Lexer 
src/go/cmd/gc/lexer.c 
static int32 
_yylex(void) 
{ 
... 
l0: 
c = getc(); 
if(yy_isspace(c)) { 
if(c == 'n' && curio.nlsemi) { 
ungetc(c); 
DBG("lex: implicit semin"); 
return ';'; 
} 
goto l0; 
} 
...
Lexer 
... 
switch(c) { 
... 
case '+': 
c1 = getc(); 
if(c1 == '+') { 
c = LINC; 
goto lx; 
} 
if(c1 == '=') { 
c = OADD; 
goto asop; 
} 
break; 
.... 
}
When do you want to hack the 
lexer 
โ€ข Modify the keyword such as func and make. 
โ€ข Modify the operator only cosmetically (e.g. != โ†’ 
~=) 
โ€ข Modify how literals and identifiers are represented. 
โ€ข Add a new keyword or operator to the language to 
later use in the parser.
Example: Emojis for identifiers 
โ€ข http://moriyoshi.hatenablog.com/entry/2014/06/0 
3/121728 
โ€ข Go doesnโ€™t treat emojis as part of identifiers. 
./sushi.go:8: invalid identifier character U+1f363 
โ€ข But I wanted to have ๅฏฟๅธ(in the source)
Example: Emojis for identifiers 
โ€ข Patched the following place to let it accept emojis: 
if(c >= Runeself) { 
ungetc(c); 
rune = getr(); 
// 0xb7 ยท is used for internal names 
if(!isalpharune(rune) && !isdigitrune(rune) && 
(importpkg == nil || rune != 0xb7)) 
yyerror("invalid identifier character U+%04x", 
rune); 
cp += runetochar(cp, &rune); 
} else if(!yy_isalnum(c) && c != '_') 
break;
Phase 2. Parser
Parser 
โ€ข Parser repeatedly calls the lexer to fetch the tokens 
and builds an abstract syntax tree (AST) that 
represents the source code. 
โ€ข The AST is retouched (โ€œtypecheckโ€and โ€œwalkโ€ sub-phase) 
during type inference and assersion phase 
so it would be less verbose and contain information 
helpful for the later stages. 
โ€ข src/cmd/gc/go.y, src/cmd/gc/dcl.c 
src/cmd/gc/typecheck.c, 
src/cmd/gc/walk.c, 
src/cmd/gc/reflect.c
Parser 
LNAME LASOP LNAME + LNAME ( ) 
OAS 
ONAME OADD 
ONAME 
OCALL 
ONAME โˆ… 
Tokens 
AST
Parser 
โ€ข src/cmd/gc/go.y 
โ€ฆ 
/* 
* expressions 
*/ 
expr: 
uexpr 
| expr LOROR expr 
{ 
$$ = nod(OOROR, $1, $3); 
} 
| expr LANDAND expr 
{ 
$$ = nod(OANDAND, $1, $3); 
} 
โ€ฆ
Example: Bracket operator 
overload! 
โ€ข Let the following code (A) expand to (B) 
โ€ข https://gist.github.com/moriyoshi/c0e2b2f9be688 
3e33251 
(A) 
(B) 
a := &struct{}{} 
fmt.Println(a[1]) 
a[1] = "test2" 
fmt.Println(a.__getindex(1)) 
a.__setindex(1, "test2")
Example: Bracket operator 
overload! 
โ€ข Things to do: 
โ€ข Introduce a new AST node type (e.g. OINDEXINTER) 
โ€ข Add a branch point in โ€œtypecheckโ€ to handle the case 
where the indexed target is neither a string, array, slice 
nor map type. 
โ€ข Supply a code in โ€œwalkโ€ to specially treat the assignment 
and dereference that involves that kind of node. The 
code synthesizes the node to invoke the special 
functions, then typecheck and walk over themselves in a 
recursive manner. 
โ€ข Donโ€™t forget to take care of evaluation order corrector.
Helpful functions to debug your 
hack 
โ€ข print(const char *, โ€ฆ) 
โ€ข This is actually printf() of standard libc. 
โ€ข Accepts the following extra format specifiers: 
โ€ข %N (node) 
โ€ข %T (type) 
โ€ข %E, %J, %H, %L, %O, %S, %V, %Z, %B, %F
Roll-up 
โ€ข Goโ€™s compiler internals should look complex at first 
glance, but it would turn out pretty straightforward 
and hacker-friendly ;)
Hacking Go Compiler Internals / GoCon 2014 Autumn

More Related Content

What's hot

C++20 the small things - Timur Doumler
C++20 the small things - Timur DoumlerC++20 the small things - Timur Doumler
C++20 the small things - Timur Doumlercorehard_by
ย 
C++ via C#
C++ via C#C++ via C#
C++ via C#Egor Bogatov
ย 
Explaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to ComeExplaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to ComeCory Forsyth
ย 
Cluj Big Data Meetup - Big Data in Practice
Cluj Big Data Meetup - Big Data in PracticeCluj Big Data Meetup - Big Data in Practice
Cluj Big Data Meetup - Big Data in PracticeSteffen Wenz
ย 
Stupid Awesome Python Tricks
Stupid Awesome Python TricksStupid Awesome Python Tricks
Stupid Awesome Python TricksBryan Helmig
ย 
Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeDmitri Nesteruk
ย 
C++11 & C++14
C++11 & C++14C++11 & C++14
C++11 & C++14CyberPlusIndia
ย 
Fantom - Programming Language for JVM, CLR, and Javascript
Fantom - Programming Language for JVM, CLR, and JavascriptFantom - Programming Language for JVM, CLR, and Javascript
Fantom - Programming Language for JVM, CLR, and JavascriptKamil Toman
ย 
A CTF Hackers Toolbox
A CTF Hackers ToolboxA CTF Hackers Toolbox
A CTF Hackers ToolboxStefan
ย 
Writing Parsers and Compilers with PLY
Writing Parsers and Compilers with PLYWriting Parsers and Compilers with PLY
Writing Parsers and Compilers with PLYDavid Beazley (Dabeaz LLC)
ย 
JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6Solution4Future
ย 
NativeBoost
NativeBoostNativeBoost
NativeBoostESUG
ย 
C++11: Feel the New Language
C++11: Feel the New LanguageC++11: Feel the New Language
C++11: Feel the New Languagemspline
ย 
Summary of C++17 features
Summary of C++17 featuresSummary of C++17 features
Summary of C++17 featuresBartlomiej Filipek
ย 
Basic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python ProgrammersBasic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python ProgrammersAppier
ย 
Fun with Lambdas: C++14 Style (part 2)
Fun with Lambdas: C++14 Style (part 2)Fun with Lambdas: C++14 Style (part 2)
Fun with Lambdas: C++14 Style (part 2)Sumant Tambe
ย 

What's hot (20)

C++20 the small things - Timur Doumler
C++20 the small things - Timur DoumlerC++20 the small things - Timur Doumler
C++20 the small things - Timur Doumler
ย 
C++ via C#
C++ via C#C++ via C#
C++ via C#
ย 
Goไน‹้“
Goไน‹้“Goไน‹้“
Goไน‹้“
ย 
Explaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to ComeExplaining ES6: JavaScript History and What is to Come
Explaining ES6: JavaScript History and What is to Come
ย 
Cluj Big Data Meetup - Big Data in Practice
Cluj Big Data Meetup - Big Data in PracticeCluj Big Data Meetup - Big Data in Practice
Cluj Big Data Meetup - Big Data in Practice
ย 
Stupid Awesome Python Tricks
Stupid Awesome Python TricksStupid Awesome Python Tricks
Stupid Awesome Python Tricks
ย 
Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/Invoke
ย 
C++11 & C++14
C++11 & C++14C++11 & C++14
C++11 & C++14
ย 
Fantom - Programming Language for JVM, CLR, and Javascript
Fantom - Programming Language for JVM, CLR, and JavascriptFantom - Programming Language for JVM, CLR, and Javascript
Fantom - Programming Language for JVM, CLR, and Javascript
ย 
A CTF Hackers Toolbox
A CTF Hackers ToolboxA CTF Hackers Toolbox
A CTF Hackers Toolbox
ย 
Modern C++
Modern C++Modern C++
Modern C++
ย 
Writing Parsers and Compilers with PLY
Writing Parsers and Compilers with PLYWriting Parsers and Compilers with PLY
Writing Parsers and Compilers with PLY
ย 
JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6JavaScript - new features in ECMAScript 6
JavaScript - new features in ECMAScript 6
ย 
NativeBoost
NativeBoostNativeBoost
NativeBoost
ย 
Python
PythonPython
Python
ย 
C++11: Feel the New Language
C++11: Feel the New LanguageC++11: Feel the New Language
C++11: Feel the New Language
ย 
Summary of C++17 features
Summary of C++17 featuresSummary of C++17 features
Summary of C++17 features
ย 
Basic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python ProgrammersBasic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python Programmers
ย 
Fun with Lambdas: C++14 Style (part 2)
Fun with Lambdas: C++14 Style (part 2)Fun with Lambdas: C++14 Style (part 2)
Fun with Lambdas: C++14 Style (part 2)
ย 
The best language in the world
The best language in the worldThe best language in the world
The best language in the world
ย 

Viewers also liked

Develop android application with mono for android
Develop android application with mono for androidDevelop android application with mono for android
Develop android application with mono for androidNicko Satria Consulting
ย 
Golang web database3
Golang web database3Golang web database3
Golang web database3NISCI
ย 
Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹
Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹
Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹Moriyoshi Koizumi
ย 
Golang workshop
Golang workshopGolang workshop
Golang workshopVictor S. Recio
ย 
CoreOS Overview
CoreOS OverviewCoreOS Overview
CoreOS OverviewVictor S. Recio
ย 
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
Authentication, Authorization, OAuth, OpenID Connect and PyramidAuthentication, Authorization, OAuth, OpenID Connect and Pyramid
Authentication, Authorization, OAuth, OpenID Connect and PyramidMoriyoshi Koizumi
ย 
NSQ-Centric Architecture (GoCon Autumn 2014)
NSQ-Centric Architecture (GoCon Autumn 2014)NSQ-Centric Architecture (GoCon Autumn 2014)
NSQ-Centric Architecture (GoCon Autumn 2014)guregu
ย 
PHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑ
PHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑPHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑ
PHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑMoriyoshi Koizumi
ย 
HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™
HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™
HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™Moriyoshi Koizumi
ย 
Goใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑ
Goใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑGoใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑ
Goใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑMoriyoshi Koizumi
ย 

Viewers also liked (10)

Develop android application with mono for android
Develop android application with mono for androidDevelop android application with mono for android
Develop android application with mono for android
ย 
Golang web database3
Golang web database3Golang web database3
Golang web database3
ย 
Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹
Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹
Pyramidใฎrendererใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ™ใ‚‹
ย 
Golang workshop
Golang workshopGolang workshop
Golang workshop
ย 
CoreOS Overview
CoreOS OverviewCoreOS Overview
CoreOS Overview
ย 
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
Authentication, Authorization, OAuth, OpenID Connect and PyramidAuthentication, Authorization, OAuth, OpenID Connect and Pyramid
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
ย 
NSQ-Centric Architecture (GoCon Autumn 2014)
NSQ-Centric Architecture (GoCon Autumn 2014)NSQ-Centric Architecture (GoCon Autumn 2014)
NSQ-Centric Architecture (GoCon Autumn 2014)
ย 
PHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑ
PHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑPHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑ
PHP7ใ‚’้ญ”ๆ”น้€ ใ—ใŸ่ฉฑ
ย 
HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™
HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™
HLSใซใคใ„ใฆ็Ÿฅใฃใฆใ„ใ‚‹ใ“ใจใ‚’่ฉฑใ—ใพใ™
ย 
Goใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑ
Goใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑGoใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑ
Goใ‚’ใ‚ซใƒณใ‚นใƒˆใ•ใ›ใ‚‹่ฉฑ
ย 

Similar to Hacking Go Compiler Internals / GoCon 2014 Autumn

How to check valid Email? Find using regex.
How to check valid Email? Find using regex.How to check valid Email? Find using regex.
How to check valid Email? Find using regex.Poznaล„ Ruby User Group
ย 
Specialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingSpecialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingPositive Hack Days
ย 
Code Analysis-run time error prediction
Code Analysis-run time error predictionCode Analysis-run time error prediction
Code Analysis-run time error predictionNIKHIL NAWATHE
ย 
C Programming Training in Ambala ! Batra Computer Centre
C Programming Training in Ambala ! Batra Computer CentreC Programming Training in Ambala ! Batra Computer Centre
C Programming Training in Ambala ! Batra Computer Centrejatin batra
ย 
Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++Kenneth Geisshirt
ย 
A Life of breakpoint
A Life of breakpointA Life of breakpoint
A Life of breakpointHajime Morrita
ย 
0100_Embeded_C_CompilationProcess.pdf
0100_Embeded_C_CompilationProcess.pdf0100_Embeded_C_CompilationProcess.pdf
0100_Embeded_C_CompilationProcess.pdfKhaledIbrahim10923
ย 
Generating parsers using Ragel and Lemon
Generating parsers using Ragel and LemonGenerating parsers using Ragel and Lemon
Generating parsers using Ragel and LemonTristan Penman
ย 
Klee and angr
Klee and angrKlee and angr
Klee and angrWei-Bo Chen
ย 
(8) cpp abstractions separated_compilation_and_binding_part_i
(8) cpp abstractions separated_compilation_and_binding_part_i(8) cpp abstractions separated_compilation_and_binding_part_i
(8) cpp abstractions separated_compilation_and_binding_part_iNico Ludwig
ย 
Writing a compiler in go
Writing a compiler in goWriting a compiler in go
Writing a compiler in goYusuke Kita
ย 
What has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you developWhat has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you developAndrey Karpov
ย 
React Native Evening
React Native EveningReact Native Evening
React Native EveningTroy Miles
ย 
A Replay Approach to Software Validation
A Replay Approach to Software ValidationA Replay Approach to Software Validation
A Replay Approach to Software ValidationJames Pascoe
ย 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced FeaturesMichael Redlich
ย 
Raleigh Code Camp 2103 - .Net Metaprogramming Essentials
Raleigh Code Camp 2103 - .Net Metaprogramming EssentialsRaleigh Code Camp 2103 - .Net Metaprogramming Essentials
Raleigh Code Camp 2103 - .Net Metaprogramming EssentialsSean McCarthy
ย 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced FeaturesMichael Redlich
ย 
printf tricks
printf tricksprintf tricks
printf tricksShaun Colley
ย 
JavaScript in 2015
JavaScript in 2015JavaScript in 2015
JavaScript in 2015Igor Laborie
ย 
Lex (lexical analyzer)
Lex (lexical analyzer)Lex (lexical analyzer)
Lex (lexical analyzer)Sami Said
ย 

Similar to Hacking Go Compiler Internals / GoCon 2014 Autumn (20)

How to check valid Email? Find using regex.
How to check valid Email? Find using regex.How to check valid Email? Find using regex.
How to check valid Email? Find using regex.
ย 
Specialized Compiler for Hash Cracking
Specialized Compiler for Hash CrackingSpecialized Compiler for Hash Cracking
Specialized Compiler for Hash Cracking
ย 
Code Analysis-run time error prediction
Code Analysis-run time error predictionCode Analysis-run time error prediction
Code Analysis-run time error prediction
ย 
C Programming Training in Ambala ! Batra Computer Centre
C Programming Training in Ambala ! Batra Computer CentreC Programming Training in Ambala ! Batra Computer Centre
C Programming Training in Ambala ! Batra Computer Centre
ย 
Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++
ย 
A Life of breakpoint
A Life of breakpointA Life of breakpoint
A Life of breakpoint
ย 
0100_Embeded_C_CompilationProcess.pdf
0100_Embeded_C_CompilationProcess.pdf0100_Embeded_C_CompilationProcess.pdf
0100_Embeded_C_CompilationProcess.pdf
ย 
Generating parsers using Ragel and Lemon
Generating parsers using Ragel and LemonGenerating parsers using Ragel and Lemon
Generating parsers using Ragel and Lemon
ย 
Klee and angr
Klee and angrKlee and angr
Klee and angr
ย 
(8) cpp abstractions separated_compilation_and_binding_part_i
(8) cpp abstractions separated_compilation_and_binding_part_i(8) cpp abstractions separated_compilation_and_binding_part_i
(8) cpp abstractions separated_compilation_and_binding_part_i
ย 
Writing a compiler in go
Writing a compiler in goWriting a compiler in go
Writing a compiler in go
ย 
What has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you developWhat has to be paid attention when reviewing code of the library you develop
What has to be paid attention when reviewing code of the library you develop
ย 
React Native Evening
React Native EveningReact Native Evening
React Native Evening
ย 
A Replay Approach to Software Validation
A Replay Approach to Software ValidationA Replay Approach to Software Validation
A Replay Approach to Software Validation
ย 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
ย 
Raleigh Code Camp 2103 - .Net Metaprogramming Essentials
Raleigh Code Camp 2103 - .Net Metaprogramming EssentialsRaleigh Code Camp 2103 - .Net Metaprogramming Essentials
Raleigh Code Camp 2103 - .Net Metaprogramming Essentials
ย 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
ย 
printf tricks
printf tricksprintf tricks
printf tricks
ย 
JavaScript in 2015
JavaScript in 2015JavaScript in 2015
JavaScript in 2015
ย 
Lex (lexical analyzer)
Lex (lexical analyzer)Lex (lexical analyzer)
Lex (lexical analyzer)
ย 

More from Moriyoshi Koizumi

ใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸ
ใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸ
ใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸMoriyoshi Koizumi
ย 
Haxeใซใคใ„ใฆ
Haxeใซใคใ„ใฆHaxeใซใคใ„ใฆ
Haxeใซใคใ„ใฆMoriyoshi Koizumi
ย 
PHP language update 201211
PHP language update 201211PHP language update 201211
PHP language update 201211Moriyoshi Koizumi
ย 
mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†
mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†
mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†Moriyoshi Koizumi
ย 
HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹
HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹
HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹Moriyoshi Koizumi
ย 
Phjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ
Phjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆPhjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ
Phjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆMoriyoshi Koizumi
ย 
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใงAaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใงMoriyoshi Koizumi
ย 
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใงAaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใงMoriyoshi Koizumi
ย 
ctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซ
ctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซ
ctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซMoriyoshi Koizumi
ย 
LLใฎ่™Ž semifinal: ๆฎบไผPython
LLใฎ่™Ž semifinal: ๆฎบไผPythonLLใฎ่™Ž semifinal: ๆฎบไผPython
LLใฎ่™Ž semifinal: ๆฎบไผPythonMoriyoshi Koizumi
ย 
Introducing E-Cell 3.2
Introducing E-Cell 3.2Introducing E-Cell 3.2
Introducing E-Cell 3.2Moriyoshi Koizumi
ย 
GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹
GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹
GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹Moriyoshi Koizumi
ย 
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3Moriyoshi Koizumi
ย 
10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹Go
10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹Go10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹Go
10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹GoMoriyoshi Koizumi
ย 
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑPHPใฎใ™ในใ‚‰ใชใ„่ฉฑ
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑMoriyoshi Koizumi
ย 

More from Moriyoshi Koizumi (20)

Uguisudani
UguisudaniUguisudani
Uguisudani
ย 
ใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸ
ใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸ
ใ‚ˆใ„ใ“ใจใ‚‚ๆ‚ชใ„ใ“ใจใ‚‚ใœใ‚“ใถPHPใŒๆ•™ใˆใฆใใ‚ŒใŸ
ย 
Ik in action
Ik in actionIk in action
Ik in action
ย 
Nginx lua
Nginx luaNginx lua
Nginx lua
ย 
Haxeใซใคใ„ใฆ
Haxeใซใคใ„ใฆHaxeใซใคใ„ใฆ
Haxeใซใคใ„ใฆ
ย 
Gocon2013
Gocon2013Gocon2013
Gocon2013
ย 
PHP language update 201211
PHP language update 201211PHP language update 201211
PHP language update 201211
ย 
mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†
mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†
mod_himoteใ‹ใ‚‰ใฏใ˜ใ‚ใ‚ˆใ†
ย 
HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹
HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹
HPHPใฏ็ด„ๆŸใฎๅœฐใชใฎใ‹
ย 
Pyfes201110
Pyfes201110Pyfes201110
Pyfes201110
ย 
Phjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ
Phjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆPhjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ
Phjosh(ไปฎ)ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ
ย 
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใงAaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใง
ย 
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใงAaใชใ‚ฒใƒผใƒ ใ‚’jsใง
Aaใชใ‚ฒใƒผใƒ ใ‚’jsใง
ย 
ctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซ
ctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซ
ctypesๆ‹กๅผตใƒขใ‚ธใƒฅใƒผใƒซ
ย 
LLใฎ่™Ž semifinal: ๆฎบไผPython
LLใฎ่™Ž semifinal: ๆฎบไผPythonLLใฎ่™Ž semifinal: ๆฎบไผPython
LLใฎ่™Ž semifinal: ๆฎบไผPython
ย 
Introducing E-Cell 3.2
Introducing E-Cell 3.2Introducing E-Cell 3.2
Introducing E-Cell 3.2
ย 
GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹
GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹
GoใงKVSใ‚’ๆ›ธใ‘ใ‚‹ใฎใ‹
ย 
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ#3
ย 
10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹Go
10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹Go10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹Go
10ใ€œ30ๅˆ†ใงไฝ•ใจใชใๅˆ†ใ‹ใ‚‹Go
ย 
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑPHPใฎใ™ในใ‚‰ใชใ„่ฉฑ
PHPใฎใ™ในใ‚‰ใชใ„่ฉฑ
ย 

Recently uploaded

2k Shot Call girls Laxmi Nagar Delhi 9205541914
2k Shot Call girls Laxmi Nagar Delhi 92055419142k Shot Call girls Laxmi Nagar Delhi 9205541914
2k Shot Call girls Laxmi Nagar Delhi 9205541914Delhi Call girls
ย 
Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...rahim quresi
ย 
Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...
Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...
Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...Riya Pathan
ย 
Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...
Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...
Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...mriyagarg453
ย 
Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...
Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...
Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...rajveermohali2022
ย 
Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...
Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...
Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...Riya Pathan
ย 
Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...
Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...
Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...ritikasharma
ย 
VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...SUHANI PANDEY
ย 
Desi Bhabhi Call Girls In Goa ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort Goa
Desi Bhabhi Call Girls  In Goa  ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort GoaDesi Bhabhi Call Girls  In Goa  ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort Goa
Desi Bhabhi Call Girls In Goa ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort Goarussian goa call girl and escorts service
ย 
Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...
Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...
Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...ritikasharma
ย 
๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call Girls
๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call Girls๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call Girls
๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call GirlsNitya salvi
ย 
Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...
Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...
Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...aamir
ย 
Kanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment Booking
Kanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment BookingKanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment Booking
Kanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment BookingNitya salvi
ย 
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser... Shivani Pandey
ย 
Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...
Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...
Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...ritikasharma
ย 
College Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls Service
College Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls ServiceCollege Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls Service
College Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls ServiceNitya salvi
ย 
Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034 Independent Chenna...
Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034  Independent Chenna...Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034  Independent Chenna...
Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034 Independent Chenna... Shivani Pandey
ย 
Top Rated Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...
Top Rated  Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...Top Rated  Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...
Top Rated Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...Call Girls in Nagpur High Profile
ย 
โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….
โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….
โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….Nitya salvi
ย 
Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...
Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...
Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...aamir
ย 

Recently uploaded (20)

2k Shot Call girls Laxmi Nagar Delhi 9205541914
2k Shot Call girls Laxmi Nagar Delhi 92055419142k Shot Call girls Laxmi Nagar Delhi 9205541914
2k Shot Call girls Laxmi Nagar Delhi 9205541914
ย 
Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata โœ” 6297143586 โœ” Hot Model With Sex...
ย 
Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...
Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...
Independent Diamond Harbour Escorts โœ” 9332606886โœ” Full Night With Room Online...
ย 
Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...
Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...
Navsari Escorts Service โ˜Ž๏ธ 6378878445 ( Sakshi Sinha ) High Profile Call Girl...
ย 
Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...
Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...
Zirakpur Call Girls๐Ÿ‘ง Book Now๐Ÿ“ฑ8146719683 ๐Ÿ“ž๐Ÿ‘‰Mohali Call Girl Service No Advanc...
ย 
Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...
Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...
Independent Hatiara Escorts โœ” 9332606886โœ” Full Night With Room Online Booking...
ย 
Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...
Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...
Book Sex Workers Available Kolkata Call Girls Service Airport Kolkata โœ” 62971...
ย 
VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Koregaon Park ( Pune ) Call ON 8005736733 Starting From ...
ย 
Desi Bhabhi Call Girls In Goa ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort Goa
Desi Bhabhi Call Girls  In Goa  ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort GoaDesi Bhabhi Call Girls  In Goa  ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort Goa
Desi Bhabhi Call Girls In Goa ๐Ÿ’ƒ 730 02 72 001๐Ÿ’ƒdesi Bhabhi Escort Goa
ย 
Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...
Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...
Top Rated Kolkata Call Girls Dum Dum โŸŸ 6297143586 โŸŸ Call Me For Genuine Sex S...
ย 
๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call Girls
๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call Girls๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call Girls
๐Ÿ“ž Contact Number 8617697112 VIP Ganderbal Call Girls
ย 
Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...
Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...
Tikiapara Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex A...
ย 
Kanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment Booking
Kanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment BookingKanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment Booking
Kanpur call girls ๐Ÿ“ž 8617697112 At Low Cost Cash Payment Booking
ย 
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
ย 
Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...
Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...
Hotel And Home Service Available Kolkata Call Girls Diamond Harbour โœ” 6297143...
ย 
College Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls Service
College Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls ServiceCollege Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls Service
College Call Girls Pune 8617697112 Short 1500 Night 6000 Best call girls Service
ย 
Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034 Independent Chenna...
Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034  Independent Chenna...Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034  Independent Chenna...
Verified Trusted Call Girls Ambattur Chennai โœ”โœ”7427069034 Independent Chenna...
ย 
Top Rated Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...
Top Rated  Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...Top Rated  Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...
Top Rated Pune Call Girls Pimpri Chinchwad โŸŸ 6297143586 โŸŸ Call Me For Genuin...
ย 
โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….
โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….
โคPersonal Whatsapp Number Keylong Call Girls 8617697112 ๐Ÿ’ฆโœ….
ย 
Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...
Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...
Nayabad Call Girls โœ” 8005736733 โœ” Hot Model With Sexy Bhabi Ready For Sex At ...
ย 

Hacking Go Compiler Internals / GoCon 2014 Autumn

  • 1. Hacking Go Compiler Internals Moriyoshi Koizumi <mozo@mozo.jp>
  • 2. Intended Audience โ€ข An eccentric Go programmer who happens to want to add feture XX to the language, knowing her patch will never be merged. โ€ข A keen-minded programmer who wants to know how the compiler works.
  • 3. Overall Architecture Lexer Parser Escape Analysis Typegen GCproggen Codegen
  • 5. Lexer โ€ข A lexer scans over the source code and cut it into a bunch of meaningful chunks (the first abstraction). โ€ข Example: a := b + c() LNAME LASOP LNAME + LNAME ( )
  • 6. Lexer src/go/cmd/gc/lexer.c static int32 _yylex(void) { ... l0: c = getc(); if(yy_isspace(c)) { if(c == 'n' && curio.nlsemi) { ungetc(c); DBG("lex: implicit semin"); return ';'; } goto l0; } ...
  • 7. Lexer ... switch(c) { ... case '+': c1 = getc(); if(c1 == '+') { c = LINC; goto lx; } if(c1 == '=') { c = OADD; goto asop; } break; .... }
  • 8. When do you want to hack the lexer โ€ข Modify the keyword such as func and make. โ€ข Modify the operator only cosmetically (e.g. != โ†’ ~=) โ€ข Modify how literals and identifiers are represented. โ€ข Add a new keyword or operator to the language to later use in the parser.
  • 9. Example: Emojis for identifiers โ€ข http://moriyoshi.hatenablog.com/entry/2014/06/0 3/121728 โ€ข Go doesnโ€™t treat emojis as part of identifiers. ./sushi.go:8: invalid identifier character U+1f363 โ€ข But I wanted to have ๅฏฟๅธ(in the source)
  • 10. Example: Emojis for identifiers โ€ข Patched the following place to let it accept emojis: if(c >= Runeself) { ungetc(c); rune = getr(); // 0xb7 ยท is used for internal names if(!isalpharune(rune) && !isdigitrune(rune) && (importpkg == nil || rune != 0xb7)) yyerror("invalid identifier character U+%04x", rune); cp += runetochar(cp, &rune); } else if(!yy_isalnum(c) && c != '_') break;
  • 12. Parser โ€ข Parser repeatedly calls the lexer to fetch the tokens and builds an abstract syntax tree (AST) that represents the source code. โ€ข The AST is retouched (โ€œtypecheckโ€and โ€œwalkโ€ sub-phase) during type inference and assersion phase so it would be less verbose and contain information helpful for the later stages. โ€ข src/cmd/gc/go.y, src/cmd/gc/dcl.c src/cmd/gc/typecheck.c, src/cmd/gc/walk.c, src/cmd/gc/reflect.c
  • 13. Parser LNAME LASOP LNAME + LNAME ( ) OAS ONAME OADD ONAME OCALL ONAME โˆ… Tokens AST
  • 14. Parser โ€ข src/cmd/gc/go.y โ€ฆ /* * expressions */ expr: uexpr | expr LOROR expr { $$ = nod(OOROR, $1, $3); } | expr LANDAND expr { $$ = nod(OANDAND, $1, $3); } โ€ฆ
  • 15. Example: Bracket operator overload! โ€ข Let the following code (A) expand to (B) โ€ข https://gist.github.com/moriyoshi/c0e2b2f9be688 3e33251 (A) (B) a := &struct{}{} fmt.Println(a[1]) a[1] = "test2" fmt.Println(a.__getindex(1)) a.__setindex(1, "test2")
  • 16. Example: Bracket operator overload! โ€ข Things to do: โ€ข Introduce a new AST node type (e.g. OINDEXINTER) โ€ข Add a branch point in โ€œtypecheckโ€ to handle the case where the indexed target is neither a string, array, slice nor map type. โ€ข Supply a code in โ€œwalkโ€ to specially treat the assignment and dereference that involves that kind of node. The code synthesizes the node to invoke the special functions, then typecheck and walk over themselves in a recursive manner. โ€ข Donโ€™t forget to take care of evaluation order corrector.
  • 17. Helpful functions to debug your hack โ€ข print(const char *, โ€ฆ) โ€ข This is actually printf() of standard libc. โ€ข Accepts the following extra format specifiers: โ€ข %N (node) โ€ข %T (type) โ€ข %E, %J, %H, %L, %O, %S, %V, %Z, %B, %F
  • 18. Roll-up โ€ข Goโ€™s compiler internals should look complex at first glance, but it would turn out pretty straightforward and hacker-friendly ;)