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.

Essential ElixirScript - Roman Senin

99 views

Published on

Elixir Evening Club 1
01.06.2017
Kyiv, Hub 4.0

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Essential ElixirScript - Roman Senin

  1. 1. ESSENTIAL JAVASCRIPT ELIXIRSCRIPT @rastopyr_ua
  2. 2. André Maginot
  3. 3. what is elixirscript? source-to-source compiler elixir -> javascript
  4. 4. success stories • clojurescript • closure compiler • coffeescript • typescript • babel
  5. 5. How it happens • pass code to elixir compiler • compile(and get error messages) • load modules(and expand macros)
  6. 6. transform ast • convert to elixir ast • transforms to Javascript AST • transforms to Javascript CODE
  7. 7. show what you can • most special forms • modules • functions • pattern matching • public macros • protocols • structs • sigils • bitstring
  8. 8. Primitive Mapping elixir javascript List Array Map Object Atom Symbol Binary String Integer,Float Number Bitstring ErlangTypes.Bitstring Tuple ErlangTypes.Tuple PID ErlangTypes.PID Reference ErlangTypes.Reference
  9. 9. limitations • No OTP • Buggy Processes • Not all special forms • No private macros • incomplete standard library • babel
  10. 10. JS interop • spec compatible • es6 • es5(legacy support)
  11. 11. JS interop • web API • window • document • html5
  12. 12. JS.<javascript operator name> JS interop
  13. 13. build tools • webpack • brunch
  14. 14. Not optimized build
  15. 15. DEMO TIME
  16. 16. Future* • not production ready yet • not enough documentation • increase support of standard library • dependency resolution(oh god!) • add support of source maps(really?) • stable processes *але е одне але
  17. 17. WebAssembly
  18. 18. Elixir Javascript Binary format
  19. 19. CONCLUSIONS • Very interesting for research • Not ready for production
  20. 20. QUESTIONS? Senin Roman

×