3 ms·
Not question but just a note of appreciation: I've actually been hands deep in the bowels of a widespread production-use interpreter, so I'm hardly new to the
by smueller1234 9y ago
Not question but just a note of appreciation:
I've actually been hands deep in the bowels of a widespread production-use interpreter, so I'm hardly new to the topic. Yet as soon as I started reading your book yesterday on the way home, I haven't been able to stop reading. While I have a reasonable grasp about most things covered (so far), I find myself making additional connections and having implicit questions answered that I didn't know I had.
So thank you very, very much for this!
- smueller1234 9y agoPS: There are a couple of extremely minor things I've come across that I'd consider correcting. Do you care for those? If so, github pull request? I'll give an example below. IIRC you say that all non-trivial interpreters have abolished ref-counting and usually using some mix of tracing and ref-counting (o//r just tracing GC). Your example for an interpreter that was using ref-counting is Ruby. The example of a non-trivial interpreter that continues to be fully ref-counted is perl. [rant]Worse yet, perl goes fast and loose in one edge case: it eschews ref-count operations on values on argument stacks, which is a source of bugs that couldn't be more hilarious. So yeah, perl doesn't detect cycles. It's really quite sad. It's also not fundamentally impossible to add in a tracing GC for detecting cycles. But it'd be a reasonably daunting task given the code base. I've occasionally thought about whether it's possible (and if so at what cost) to move perl (5) away from ref-counting. Perl (the language) happens to give strong guarantees about when objects are destroyed / hooks are triggered, and that's commonly relied upon in RAII-like use cases.[/rant]