I&#x27;ve had the same experience with node, but normally there aren&#x27;t that many problems with V8 or the language itself. Most of the rough corners seem to be in node&#x27;s core libraries.<p>IMO this is what we need:<p>* a better designed standard library. Maybe more like Dart&#x27;s[1] - we already have Bluebird as the de-facto replacement for callbacks - all we need now are something like Dart&#x27;s streams to fix the built in quirky streams.<p>* built from the ground up with optional types i.e. TypeScript or Flow (eliminates most of JS&#x27;s type-related quirks while preserving most of the dynamism and duck typing <i>and</i> being very helpful when the time comes to refactor)<p>Now that typescript has support for type definitions inside node_modules[2] there are no barriers remaining to do this. node + V8 + typescript can provide a development experience that matches Dart (exceeds it in some cases, e.g. REPL) without throwing away the entire existing JS ecosystem in the process.<p>[1]: <a href="https:&#x2F;&#x2F;api.dartlang.org&#x2F;1.12.1&#x2F;dart-async&#x2F;dart-async-library.html#classes" rel="nofollow">https:&#x2F;&#x2F;api.dartlang.org&#x2F;1.12.1&#x2F;dart-async&#x2F;dart-async-librar...</a><p>[2]: <a href="https:&#x2F;&#x2F;github.com&#x2F;DefinitelyTyped&#x2F;tsd&#x2F;issues&#x2F;208" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;DefinitelyTyped&#x2F;tsd&#x2F;issues&#x2F;208</a><p>p.s. [2] can actually detect some situations in which there would be problems when multiple library versions coexist together (e.g. when you pass instances that come from library v3 to a function of library v2, explained in detail at  <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8213273" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8213273</a>). However if the interfaces are structurally satisfied, the compiler will not complain. As a result I&#x27;m pretty sure that its possible to write a tool that detects semver violation based on .d.ts files (similar to what Elm does) or suggest the exact amount of version number increment by comparing the definition files