I share Rick's worry about weak maps. It's not clear how to make an efficient GC in the presence of weak maps.
As Brendan rightly points out there is already a lot of complexity in the GC of a typical JS implementation because it is interacting with the (typically) reference counted, C++ based DOM. Adding complexity in the form of a new weak reference model looks like it could limit JS implementations severely down the road. One of the hallmarks of a real language implementation vs. a 'toy scripting language' ala PHP is a good GC. I'd really like to see someone do a low-latency GC with weak maps before we hobble the language with something that can't be implemented efficiently. By modern I mean generational and either parallel or concurrent. (In a parallel GC there are several threads doing GC in parallel while the actual JS program is stopped. In a concurrent GC there is one or more threads doing GC while the JS program is still making progress). It is true that the language is not multithreaded and never will be. This does not limit the implementation from making use of several threads/CPUs when doing garbage collection. We actually have a V8 prototype that has a parallel GC http://codereview.chromium.org/3615009/show though probably it won't be landed in its current form. We will likely be investigating a slightly different approach. But in principle this is quite possible: a single threaded JS implementation where part of the runtime is multithreaded. Just for clarity, since Brendan brought up the limitations of the V8 GC: At the moment the V8 GC is accurate (not conservative), moving (resistent to fragmentation) and generational (most pauses are small). But there is plenty of room for improvement in terms of very large heaps, worst-case pause times and making use of multiple CPUs. Let's be careful not to add things to the language that will limit implementations from getting the sorts of modern GC implementations that Java and .NET have. -- Erik Corry _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

