3 ms·
The GC is mostly precise. We haven't yet eliminated our use of the C stack (so full GC has to examine the appropriate registers and memory locations to find po
by chromatic 16y ago
The GC is mostly precise. We haven't yet eliminated our use of the C stack (so full GC has to examine the appropriate registers and memory locations to find pointers not otherwise anchored), but when we do, we'll have a fully precise GC.
Our current GC in trunk right now still stops the world, even when concurrency is active, but that's an incidental detail of implementation and not a requirement for the algorithm. We could make it incremental with a small investment of time, but our priority now is to migrate to the improved generational GC on the branch first.
- hga 16y agoSounds promising. Oh yeah, as I recall Hotspot doesn't have production quality generational GC yet. That tends to pay off big in functional languages and if I'd had to guess before reading about your priorities I would have bet that generational would be fairly advantageous for a lot of Perl code, certainly the majority I've written (e.g. ETL programs). Good luck! Nail down this and your concurrency by the time Clojure-in-Clojure is written (there's no guess when that'll happen) and I wouldn't be surprised if someone chooses Parrot as a porting target.
- chromatic 16y agoGenerational GC will be very useful for Perl 6 and other languages running on Parrot, especially if we can add reliable escape analysis. The ability to perform the equivalent of stack allocation in C offers many performance benefits.