[racket] Best Way to Really Understand the Compilation and Execution Model?
Hello everyone,
I work on Hacker News[1], which is written in Arc[2], and am tasked
with making it faster. The Arc compiler targets Racket[3], but
doesn't do so in such a way that function names or source locations
are preserved. This makes output from the sampling profiler and error
messages mostly useless.
I'd like to make Arc work as a Racket language (and in the process
preserve srclocs and names), and have made some progress[4]. However,
I'm hitting a wall trying to implement Arc's macros. Specifically, I
need to find a way for the macros themselves to use previously defined
Arc functions as part of their processing. I understand that there are
good reasons for Racket's hygiene and syntax phases, but I'm
implementing an existing language that has its own strong opinions.
I'm almost certain that accomplishing my goal is possible with the
right understanding, but despite reading much of the Racket Reference,
I don't truly get it yet.
With that motivation in mind, what's the best way for me to become
intimately familiar with Racket's runtime, execution and compilation
model? Should I read through and make sure I understand the debugger?
The macro stepper? Is there any kind of guide to Racket Internals?
Thanks for any advice.
Best,
Nick
[1] https://news.ycombinator.com
[2] http://arclanguage.org
[3] Well, really mzscheme
[4] https://github.com/kogir/rark