- libraries availability
- code size and speed
- debugging capabilities
- ...and interoperability with JS (I recall that F# uses TypeScript definition files, that's a nice approach)
Anyone has more experience with it?
- libraries availability
- code size and speed
- debugging capabilities
- ...and interoperability with JS (I recall that F# uses TypeScript definition files, that's a nice approach)
Anyone has more experience with it?
- interoperability with JS: Scala.js has its own TypeScript-like definition classes. But you can also interop in a dynamically typed way with the js.Dynamic type. In any case, the interop is very natural. Even the Scala syntax is close to JS syntax so method calls and property access just look the same.
- Code size: not exactly great, but manageable.
- Code speed: Scala.js has a very good optimizer that brings down typical macro benchmarks between 0.7x and 2x the time of the JS version (yes, 0.7x means it's actually faster!)
- Debugging capabilities: because of Source Maps, you basically step through your Scala.js code and step break points right inside your browser. All modern compile-to-JS languages have that.
WebSharper: http://www.websharper.com/
Blue Storm: https://www.assembla.com/spaces/bluestorm/wiki/
I got these from: https://github.com/jashkenas/coffeescript/wiki/list-of-langu...
Also, all of Scala's collections, including the persistent ones are supported.
Yes, I know most JS programs today use asynchronous execution successfully in practice, but to use it as the basis of a language platform is not a good idea IMHO. Especially when it comes to UIs, which need the responsiveness.
EDIT: web-workers are not a solution, because you can't share large data-structures efficiently between web-workers.