|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## v0.255.7 — Portability: gcc Sanitizer Detection, POSIX strcasecmp, Empty TUs |
| 4 | + |
| 5 | +CI on ubuntu-24.04, ubuntu-24.04-arm, and windows-2022 went red on |
| 6 | +the v0.255.6 push with three pre-existing portability bugs that |
| 7 | +landed sometime in the v0.241-v0.252 cycle but didn't surface |
| 8 | +locally: |
| 9 | + |
| 10 | +* `src/gc/internal.h:150` -- `defined(__has_feature) && |
| 11 | + __has_feature(address_sanitizer)` doesn't short-circuit at the |
| 12 | + preprocessor level under gcc. gcc evaluates the right side |
| 13 | + syntactically and fails with "missing binary operator before |
| 14 | + token '('". Split into nested `#if defined(__has_feature)` so |
| 15 | + gcc never sees the `__has_feature(...)` call when the macro |
| 16 | + isn't defined. |
| 17 | + |
| 18 | +* `main.c:815` -- `strcasecmp` is POSIX, declared in `<strings.h>` |
| 19 | + (not `<string.h>`). Add the include under `#ifndef _WIN32`; on |
| 20 | + Windows alias `mino_strcasecmp` to `_stricmp`. Call sites updated |
| 21 | + to use the portable name. |
| 22 | + |
| 23 | +* `src/eval/bc/jit/{helpers,emit,patcher,patcher_x86_64,stats}.c` |
| 24 | + -- empty translation unit under `-Werror=pedantic` when |
| 25 | + `MINO_CPJIT_HOST` isn't defined for the build target (e.g., |
| 26 | + mingw without `MINO_CPJIT_X86_64_WINDOWS`). Added a sentinel |
| 27 | + typedef after each `#endif` to keep each TU non-empty. |
| 28 | + |
| 29 | +* `src/eval/bc/jit/entry.c:680` -- `mino_jit_invoke` stub had 4 |
| 30 | + parameters; header declared 5 (`mino_env *env` was added |
| 31 | + in the v0.219+ refactor and the stub wasn't updated). Stub |
| 32 | + signature now matches the header. |
| 33 | + |
| 34 | +Verified: full local build + tests pass (1273 tests / 4555 |
| 35 | +assertions, 0 failed). Pushed to trigger a fresh CI run. |
| 36 | + |
3 | 37 | ## v0.255.6 — Fix: BC Speculative Fold Longjmps Through Active Try-Frame |
4 | 38 |
|
5 | 39 | Surfaced by mino-tests v0.7.0's `gen_program.clj`: a `defn` whose |
|
0 commit comments