Repository navigation
Alice v1.0.2
- fix:
alice runandalice buildon loose files now compile through the IL backend, the 1.0 default (ADR 0033). 1.0.0 and 1.0.1 resolved--backend/ALICE_BACKENDand dropped the result, so both commands always used the C# printer + Roslyn (onlyalice emit --ilreached the IL backend). OneBackendcall inCompileCommandsfeeds both;--backend csharpandALICE_BACKEND=csharpselect C#. A program the IL backend cannot compile yet (e.g. a CCallbackparameter,examples/interop/libc.al) or one with@[Native]C uses the C# image with a one-linenote:on stderr, never silently. The status line names the backend (Compiling main (il, 1.3s)); an IL build writes its.pdb; the run cache keys on the backend.alice checkstays on the C# diagnostic gate. Package and workspace builds (alice.toml, MSBuild) still compile the generated C#. Pinned byBackendSelectionTests. - fix: a plain
alice proveat the repository root works: a directory holding a.alice-noprovefile (and everything below it) is left out of the source scan, like a nested package.tools/fuzz/findings(fuzzer inputs meant not to compile),benchmarks,docs,examplesandsrccarry the marker, so the root provesRULES.alalone, the same asalice prove RULES.al. Pinned byA_plain_prove_skips_directories_marked_alice_noprove. - docs: ADR 0033, docs/tooling.md, README, docs/performance.md and the 1.0.0 release notes now say what 1.0.2 does: loose files default to IL, package builds stay on C# until 1.1. IL gaps that fall back to C# are pinned as skipped tests in
tests/Alice.Tests/Backends/IlGapTests.cs(1.1 items). - fix:
Par.Range/Par.Reducewith a struct kernel allocated a fresh job (and, forReduce, its partials array) on any call whose previous call still had queued helpers. That happens whenever the pool wakes late and the caller runs every chunk itself: on 3-core macOS runners,Jobs_are_reused_in_steady_statesaw 288 B (a 72 B job plus 24 partials). The owner now always reuses its job. The chunk count and the claim counter share one 64-bit word, replaced atomically after the run's fields are set, so a late helper either finds its old run closed or joins the current one. Pinned byJobs_are_reused_while_their_helpers_are_still_queued: every pool thread is held, then the test expects exact 0 B and exact sums. Before the fix it saw 288 B on 3 cores and 1120 B on 28. alice checkwithout files skips.alice-noprovedirectories too (the same scan helper asalice prove). Pinned byA_plain_check_skips_directories_marked_alice_noprove.- perf: typed JSON readers (
from_json,JSON.parse(T, ...)) are fast again: since 1.0.0 every field-name miss re-encoded the name to UTF-8 and every empty array allocated 4 slots (benchmarks/core/json twitter typed-gen 0.60 -> 1.44 ms, citm_catalog 0.85 -> 1.17 ms, both C# and IL). Names are now grouped by UTF-8 length and compared withJsonMap.IsAscii(length first), andJsonMap.NewArraystarts empty: twitter 0.66 ms, citm_catalog 0.96 ms (STJ source-gen 1.16 / 4.46 ms), allocations back to 342832 / 862048 B. Pinned byReaders_match_names_by_length_and_empty_arrays_allocate_nothing. - benchmarks re-run on 1.0.1 (b2e41c8, the forge, 2026-11-04): bend2 serial for all 16 workloads with the IL image (
alice emit --il), the C# image and C; IL vs C# backend (geomean 0.963); arena ports vs records; Alice Core regex, JSON and library modules. Raw hyperfine files inbenchmarks/bend2/results/1.0.1/,benchmarks/core/results/1.0.1/.bend2/report.pyreads the serial core pair fromresults/serial_cpus.txt(written byrun.sh). The all-core tables are not re-run yet.
Archives built from 18d73e5. Build and package checks: https://github.com/alicelanguage/alice/actions/runs/41917991062