Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PNaCl/LLVM Go Compiler

We are interested in truly distributed development environments for the internet of things. Environments where you can compile, debug, and run your code anywhere, on your workstation, laptop, phone, refrigerator, or wherever. Sandboxing is a prerequisite technology that allows code to be run safely and portably across a range of devices. In this talk, we present a new technology to compile programs written in the Go language to the Portable Native Client (PNaCl) sandbox, based on LLVM.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Login to see the comments

  • Be the first to like this

PNaCl/LLVM Go Compiler

  1. 1. PNaCl/LLVM Go Compiler Jason Hickey, Herbert Czymontic, Michal Cierniak {jyh,herbertc,cierniak}@google.com
  2. 2. Vision • Apps run anywhere and everywhere • Your browser is a full featured development environment • Includes code development, compilation, debugging, security • How do we run anywhere? • How do we develop anywhere? • How do we debug anywhere?
  3. 3. Running Go in Chrome
  4. 4. Future Directions
  5. 5. Basic Strategy • Want 100% compatibility with standard gc runtime • Full support for goroutines, stack extension, precise garbage collection, etc. • Can’t use the LLVM stack • Can’t be extended, doesn’t support inspection, garbage collection, or stack switching • Solution • Custom compiler (written in Go) • Ignore the LLVM stack and use our own
  6. 6. Go calling convention • All arguments and return values are passed on the stack • All registers are caller-save (the callee can trash them)
  7. 7. LLVM: introduce an explicit stack
  8. 8. Phases
  9. 9. Status • Available in the Vanadium Internet of Things project Complete Go-based development env, security, networking https://vanadium.googlesource.com/release.go.pnacl Vanadium: http://v.io • Most features are implemented, aiming for Dec.

×