- New Racket CS 7.8: CS is Chez Scheme, BC is the old half-assed C runtime.
Big plus: ARM64 support!
Big minus: Neither DRRacket nor any built .app launches on the Mac, you have to call them from command line. Gross incompetence & zero testing.
My basic gridtest.rkt demo still takes 100ms to render a frame, needs to be <16ms. But that's interpreting from the shell, and I may look and see if they have a more efficient graphics API.
The bigger problem is that compiling doesn't work with packages, or at least I don't have the right magic invocations:
% cat build.zsh
#!/bin/zsh
rm -rf build
mkdir build
# Windows: --ico foo.ico
# Mac: --icns foo.icns
time raco exe --cs --gui ++lib memoize ++lib rsound ++lib portaudio -o build/gridtest gridtest.rkt
% ./build.zsh && ./build/gridtest.app/Contents/MacOS/gridtest
raco exe --cs --gui ++lib memoize ++lib rsound ++lib portaudio -o 39.14s user 2.40s system 87% cpu 47.390 total
ffi-lib: could not load foreign library
path: libportaudio.2.dylib
system error: dlopen(libportaudio.2.dylib, 6): image not found
context...:
raise-dll-error
.../ffi/unsafe.rkt:131:0: get-ffi-lib
call-in-empty-metacontinuation-frame
proc
call-in-empty-metacontinuation-frame
body of '#%embedded:portaudio/portaudio:
temp35_0
run-module-instance!
[repeats 6 more times]
perform-require!
call-in-empty-metacontinuation-frame
eval-one-top
eval-compiled-parts
embedded-load
proc
call-in-empty-metacontinuation-frame
Well, that's fucked. 40 seconds and a fuck you because it doesn't bring in the dylib it needs.
Obviously I could just say "install Racket, run this script", but that's lame and distributes source, which in a real game I don't want to do.