On 2012-02-09, at 19:34 , Guido van Rossum wrote:
They all agree multi-core is the future and whichever language can deal with them better is the future too.
Surely not JavaScript (which is single-threaded and AFAIK also uses refcounting :-).
I don't think I've seen a serious refcounted JS implementation in the last decade. , although it is possible that JS runtimes have localized usage of references and reference-counted resources. AFAIK all modern JS runtimes are JITed which probably does not mesh well with refcounting. In any case, V8 (Chrome's runtime) uses a stop-the-world generational GC for sure[0], Mozilla's SpiderMonkey uses a GC as well[1] although I'm not sure which type (the reference to JS_MarkGCThing indicates it could be or at least use a mark-and-sweep amongst its strategies), Webkit/Safari's JavaScriptCore uses a GC as well[2] and MSIE's JScript used a mark-and-sweep GC back in 2003[3] (although the DOM itself was in COM, and reference-counted).
And note that a single-threaded event-driven process can serve 100,000 open sockets -- while no JVM can create 100,000 threads.
Only because it's OS threads of course, Erlang is not evented and has no problem spawning half a million (preempted) processes if there's RAM enough to store them. [0] http://code.google.com/apis/v8/design.html#garb_coll [1] https://developer.mozilla.org/en/SpiderMonkey/1.8.5#Garbage_collection [2] Since ~2009 http://www.masonchang.com/blog/2009/3/26/nitros-garbage-collector.html [3] http://blogs.msdn.com/b/ericlippert/archive/2003/09/17/53038.aspx