Making Nock Fly
Nock is a combinator language designed to fully specify an operating system and applications on top of it. It also turns out to be an excellent language for a zkVM. The only problem is that its highly dynamic nature has made it difficult to execute performantly. A new static analysis which Edward calls "subject knowledge analysis" is being implemented in the Ares solid-state interpreter for Nock. This allows to eliminate most indirect calls, Destination-driven code generation a la Chez scheme provides a means to registerize Nock programs. When combined with a refinement of the "cheney on the MTA" stack allocation and copying scheme, this opens the door to standard compiler optimizations which are difficult to apply directly to Nock, and enables performant execution of Urbit and other programs implemented in Nock.