[racket] Greetings!
Welcome!
Thank you for your past work. Trying to emulate it concretized and
motivated almost all of my high school and undergraduate math classes.
On 03/18/2015 02:59 PM, John Carmack wrote:
> ...
>
> I have a specification for a VR related file format that is headed towards JSON, but I am seriously considering changing it to s-expressions and embedding a trivial (not Racket) Scheme for scripting.
What kind of Scheme did you have in mind?
It's not terribly hard to embed Racket, nor to create a "#lang" language
that gives access to only the leanest parts of the language and libraries.
On the other hand, it's easy to write a Scheme interpreter. But you
don't get the JIT, optimizer, and other goodies.
> I'm teaching my son with Racket. He has worked in a few different imperative languages prior.
If he's interested in 3D, he might like Pict3D, a 3D engine written in
Racket that has a purely functional interface. (Most of the internals
are purely functional as well.) Disclaimer: the API is stable, but I'm
still expanding it, and I haven't used my own kids as guinea pigs yet.
> I would be interested in hearing any guidance for high performance servers written in Racket. GC delays in the tens of milliseconds will be problematic for at least part of this application, but I could split that part off into a separate server and still leave the other part in Racket if necessary. The main benefit is currently development productivity, so obnoxious micro-architectural optimizations aren't useful, but broad strategic guidelines would be appreciated.
Listen to Jay. :) He doesn't use DrRacket, though, so he's left
something out.
When you do performance testing and statistical profiling, it's fine to
use DrRacket if you turn off debugging and (the other) profiling
support, and uncheck "Preserve stacktrace" in the "Choose Language" dialog.
But when measuring GCs, run programs from the command line. DrRacket and
its tools use a lot of heap. In their initial state, this adds about
10ms to minor collections and 500ms to major collections. Using Typed
Racket will magnify the differences because its compile-time analysis is
quite memory-heavy.
Neil ⊥