jpolitz
Joined 14 years ago
Joined 14 years ago
My homepage has a number of flavors of that course (Rust, Ocaml, AOT, JIT, etc)
Quick answer just to this part: So the design challenge I was trying to solve here was doing AOT+JIT in one ugrad compilers class. This eats into some of the later assignments, but actually “worked”, in the sense that many students wrote first-call specialization.
I view it as a mild plus that the confusion around the name has educated so many about confectionery taxonomies.
Tweet thread explainer: https://twitter.com/ShriramKMurthi/status/142918126348784435...
https://dcic-world.org/2021-08-21/part_appendix.html#%28part...
https://people.cs.umass.edu/~arjun/main/papers/2016-rehearsa...
https://ucsd-cse131-s18.github.io https://course.ccs.neu.edu/cs4410/lec_let-and-stack_notes.ht... https://ucsd-progsys.github.io/131-web/lectures/05-cobra.htm...
(I designed the original version, though it's improved a lot in the past few years)
Stopify is a JavaScript -> JavaScript compiler, implemented as a Babel transform, that enables pausing and restarting control operators for JavaScript programs.
A lot of the comments note the rich history of systems for debugging and execution control. Stopify's goal is to enable those kinds of systems, efficiently, while constrained by the browser's execution model.
This is a problem we've thought a lot about with Pyret, and have different concrete solutions. Rather than use heuristics that turn long-running computations into errors, we capture continuations and yield to the browser periodically. This allows long-running computations to eventually complete, while allowing the user to fully interact with buttons and the page while it's happening. This generalizes to nice abstractions for functional event loops and ways to manage asynchronous APIs for novices.
The Doppio JVM and the Whalesong compiler for Racket have similar underlying approaches.
It's quite a bit of effort to work around this inherent limitation of the browser's evaluation model for web-based IDEs!
I've used this informally as justification before when renting housing and bringing my dog to work (she's a plain CGC).
I think there's value in having these be more recognized. I especially wish they were by airlines.
Note that this isn't the same thing as the issue with service animals, where credentials are at a totally different standard, and more important than where I can bring my pet.
This archives the state of the system when we made the switch:
https://github.com/brownplt/pyret-lang/releases/tag/pyret-20...
Some things, like the grammar (https://github.com/brownplt/pyret-lang/blob/5f22ec7c8affde15...) have survived largely intact from that prototype for years.