This is an experimental yk-jit-enabled SOM++ interpreter.
First, initialise the core-lib submodule (SOM standard library):
$ git submodule update --init
Yk requires its own modified clang toolchain, supplied via yk-config. Update the yk_config path at the top of justfile to point to your installation.
To build with Yk support:
$ just build-yk # debug build → cmake-yk/SOM++
$ just build-yk-release # release build → cmake-yk/SOM++To build without Yk (plain SOM++):
$ just build # release build → cmake-build/SOM++
$ just build-debug # debug build → cmake-debug/SOM++$ just hello-yk # run Examples/Hello.som under the JIT
$ just test-yk # run the full SOM test suite under the JITTo run an Are-We-Fast-Yet benchmark directly:
$ cmake-yk/SOM++ -cp Smalltalk:Examples/AreWeFastYet Examples/AreWeFastYet/Harness.som <Benchmark> <iterations> <inner-iterations>To compare all AWFY benchmarks plain vs Yk side-by-side:
$ just awfy-compare-
Lower the hot-loop threshold so tracing fires quickly:
YK_HOT_THRESHOLD=5 cmake-yk/SOM++ -cp Smalltalk Examples/Hello.som -
Write tracing statistics to a JSON file:
YKD_LOG_STATS=ykstats.json cmake-yk/SOM++ -cp Smalltalk:Examples/AreWeFastYet Examples/AreWeFastYet/Harness.som Sieve 5 1 cat ykstats.jsontraces_compiled_ok > 0andtrace_executions > 0confirm the JIT is working. -
See
doc/Yk/for a full account of the integration.