4 ms·
Then add immutable objects to JS, which enable a host of other optimizations and are useful in single-threaded contexts too. Shared-memory multithreading is ju
by spankalee 9y ago
Then add immutable objects to JS, which enable a host of other optimizations and are useful in single-threaded contexts too.
Shared-memory multithreading is just very difficult to use correctly. Actor-style concurrency hasn't really caught on (possibly because of the poor performance of workers and postMessage), but there is probably a middle ground that's easier for developers to get right.
- phailhaus 9y agoJS already supports immutable objects, by using Object.freeze().
- spankalee 9y agoThat's not deeply immutable like you'd want for sharing objects across threads, or even for using in contexts like React and Redux.
- phailhaus 9y agoNot too hard to call Object.freeze() recursively to get the deep immutability you need. And of course there's ImmutableJS for other immutable data structures.
- bzbarsky 9y agoThat doesn't really make things immutable. Even ignoring the deep vs shallow issue, consider what effect Object.freeze has on a JS Map (hint: none, really; you can still add/remove things).
- phailhaus 9y agoRight, that's where libraries like ImmutableJS come in.
- amelius 9y agoI don't think it is a good idea to stray away from the bare metal in this case. We're trying to bootstrap other languages on top of JS. They can introduce their own abstractions to shield off the programmer. Just my 2ct.