O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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.

  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

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.