Yehor Lvivski @lvivski
View Slide
The Dart side of theMoon
class-basedsingle inheritanceobject-oriented
History
Oct 11, 2011 Apr 16, 2013 Summer 2013
M1, July 2012 • No explicit interfaces • No `+` on Strings • Cascades `o..method()`
M2, December 2012 • Better Dart2js • PUB • Better libraries API
M3, February 2013 • Streams API • Lazy Iterators
M4, April 2013 Stability!
Who’s behind?
Why?
Performance
main(){}!Tree shaking Classes and Interfaces Optional types Concurrency Operator overloading Optional and Named arguments Lightweight syntax
It’s not a syntaxsugar
Standalone VM Browser integrated VM dart2js Compiler
How it works
Is it even possible?
Generated code is faster, thanhandwritten. Prototype-less code is faster, thanPrototype chains. Inlined functions, are faster too ;)
Laziness
Laziness • map()!• where() (filter analogue) • expand()!
Streams Reactive Programming
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
Streams are Everywhere • Iterators (List, Queue, Set) • IO (File, HTTP) • Events
Infrastructure
Editors
Package manager
Components
Dart Web UI Package
Demo time!
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