Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dart Side of the Moon

lvivski
June 02, 2013

Dart Side of the Moon

lvivski

June 02, 2013
Tweet

More Decks by lvivski

Other Decks in Science

Transcript

  1. Yehor Lvivski
    @lvivski

    View Slide

  2. The Dart side of the
    Moon

    View Slide

  3. View Slide

  4. class-based
    single inheritance
    object-oriented

    View Slide

  5. History

    View Slide

  6. Oct 11, 2011 Apr 16, 2013 Summer 2013

    View Slide

  7. M1, July 2012
    • No explicit interfaces
    • No `+` on Strings
    • Cascades `o..method()`

    View Slide

  8. M2, December 2012
    • Better Dart2js
    • PUB
    • Better libraries API

    View Slide

  9. M3, February 2013
    • Streams API
    • Lazy Iterators

    View Slide

  10. M4, April 2013

    Stability!

    View Slide

  11. Who’s behind?

    View Slide

  12. View Slide

  13. View Slide

  14. Why?

    View Slide

  15. Performance

    View Slide

  16. main(){}!
    Tree shaking
    Classes and Interfaces
    Optional types
    Concurrency
    Operator overloading
    Optional and Named arguments
    Lightweight syntax

    View Slide

  17. It’s not a syntax
    sugar

    View Slide

  18. Standalone VM

    Browser integrated VM

    dart2js Compiler

    View Slide

  19. View Slide

  20. How it works

    View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. Is it even possible?

    View Slide

  25. Generated code is faster, than
    handwritten.
    Prototype-less code is faster, than
    Prototype chains.
    Inlined functions, are faster too ;)

    View Slide

  26. View Slide

  27. Laziness

    View Slide

  28. View Slide

  29. Laziness
    • map()!
    • where() (filter analogue)
    • expand()!

    View Slide

  30. Streams
    Reactive Programming

    View Slide

  31. Streams
    •  emit a repeating series of events (such as messages,
    file data, user clicks)
    •  single- or multi-subscriber
    •  methods to take partial data  (first,  take,  
    skip...)  
    •  check data (contains,  any,  every)  
    •  transform

    View Slide

  32. Streams are Everywhere
    • Iterators (List, Queue, Set)
    • IO (File, HTTP)
    • Events

    View Slide

  33. Infrastructure

    View Slide

  34. Editors

    View Slide

  35. View Slide

  36. View Slide

  37. Package manager

    View Slide

  38. View Slide

  39. Components

    View Slide

  40. Dart Web UI Package

    View Slide

  41. View Slide

  42. Demo time!

    View Slide

  43. Links
    •  h'p://www.dartlang.org  
    •  h'p://github.com/dart-­‐lang/web-­‐ui  
    •  h'p://github.com/lvivski  
    – speaker,  start,  hart,  gloss,  quart,  archer  
    Thanks

    View Slide