Repository navigation
v0.0.143
rePIU v0.0.143
Everything since the previous release, v0.0.136. This stretch is about performance:
pumpit2 gameplay went from 69.3 to 107.2 frames per second, +54.7%.
⚠️ The executable was renamed
repiu_loader_win32.exe is now repiu.exe. Update any script or shortcut that points
at the old name.
Performance
Removing the inline-cache patch round trip is where the frames came from: +54.7%.
Every indirect call/jump cache miss writes fourteen bytes into the code cache, and the
guest thread was waking a worker thread and waiting for it to do that — roughly 350 times
per frame, holding 30.4% of the guest thread's sampled positions. The guest now patches its
own caches.
Glide setter state elision skips the host round trip when a setter is called with the
value already applied; 89.6% of setter calls are now elided, and grDitherMode costs 95%
less per call. Draw batching collects consecutive primitives into one submission,
raising the mean batch from 2.0 to 32.1 primitives.
All three are on by default and each has an off switch:
REPIU_AOT_INLINE_CACHE_PATCH_INLINE=0, REPIU_GLIDE_SETTER_ELIDE=0 and
REPIU_GLIDE_DRAW_BATCH=0.
Diagnostics
A host crash reporter now records the exception code, address, access kind and a
symbolised call stack with source lines. It earned itself immediately: a teardown crash
that five rounds of guessing had failed to find was named on the first crashing run.
The asynchronous present axis was closed as a measurement error. grBufferSwap looked
large with vsync on, but that was display wait; with vsync off it is 2.9%. The
implementation stays opt-in, kept on accuracy grounds rather than speed.
Build and CI
OpenWatcom is pinned to an immutable dated snapshot instead of upstream's rolling
Current-build, whose asset is replaced in place so that a pinned hash expires with nothing
here changing. The toolchain moved with it and the sample baseline did not: 819 samples
build, 528 pass, zero regressions. And the sample suite now builds without the
original asset tree — it compiles its own DOS programs and never loads the game, but the
environment check demanded the assets anyway.
Versions included
v0.0.137, v0.0.138, v0.0.139, v0.0.140, v0.0.141, v0.0.142, v0.0.143.
Full Changelog: v0.0.137...v0.0.143