Skip to content

Commit 7fa6b92

Browse files
dsblankclaude
andcommitted
Add 2.1.5 changelog entry
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent 9844d63 commit 7fa6b92

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

ChangeLog.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
## Release 2.1.5 (Jul 23, 2026)
2+
3+
* Fixed a real JIT inlining bug: `odd?` compiled to a raw
4+
`n % 2 != 0`, diverging from the real primitive (`n % 2 == 1`) for
5+
any non-integer argument -- e.g. `(odd? 2.5)` returned `#t` from
6+
JIT-compiled code and `#f` everywhere else. Found by a new
7+
differential fuzzer (`tests/test_jit_fuzz.py`) that generates many
8+
random small Scheme programs and compares the trampoline, Phase 2,
9+
and JIT execution paths on each one; see `tests/test_jit_odd_float.py`
10+
for the pinned regression.
11+
* Extended the JIT/Phase-2 tag-parity guard tests
12+
(`tests/test_jit_tag_parity.py`) to also cover `_phase2_safe_walk`,
13+
closing the same class of gap for the walker whose certification
14+
errors are the most dangerous (a wrongly-certified proc can commit
15+
`apply_proc` to a live Phase-2 attempt and silently re-run side
16+
effects on fallback).
17+
118
## Release 2.1.4 (Jul 23, 2026)
219

320
* Fixed a latent JIT/Phase-2 safety gap: `_apply_direct` (used by

0 commit comments

Comments
 (0)