3 ms·
I am most excited for the new SSA backend in go. I have been following commits to it here: https://github.com/golang/go/tree/dev.ssa https://github.com/golang/
by andrewchambers 11y ago
I am most excited for the new SSA backend in go. I have been following commits to it here:
https://github.com/golang/go/tree/dev.ssa https://github.com/golang/go/tree/dev.ssa
No idea how long it will take to mature, but I hope there are some decent performance improvements once it is fully functional.
- Spiritus 11y agoSSA?
- andrewchambers 11y agoInternal graph representation the compiler uses for programs. llvm uses SSA form of programs as its main low level representation. The benefits of SSA is that it enables some analysis and optimization techniques.
- seanmcdirmid 11y agoIt is basically a simplification that makes optimizations easier by eliminating re-assignment of local variables (where possible, for loops and conditions, merging phi values might be necessary). It has been awhile since I played with this, but it made CSE (common sub-expression elimination) really easy.
- sukilot 11y agoAnd writing programa in that style makes programs less bug-prone. :-)
- sukilot 11y agoAnd writing programa in that style makes programs less bug-prone. :-)
- bgaluszka 11y agoJust for those who are wondering what SSA is: https://en.wikipedia.org/wiki/Static_single_assignment_form https://en.wikipedia.org/wiki/Static_single_assignment_form
- e12e 11y agoI was exited by this: > Generate machine descriptions from PDFs (or maybe XML). > Will have a purely machine-generated instruction definition: > "Read in PDF, write out an assembler configuration". > Already deployed for the disassemblers. (my emphasis) That coupled with a whole tool chain in a friendly language like go, makes be exited for how this might be used by other language designers. While "compile to go" might not be as attractive as "compile to c" -- it's not half-bad. More importantly it kind of smells like part of this tool chain should make it quite easy to generate machine code quite easily. Nothing against llvm, rpython/pypy, graal etc - but the more the merrier!