Repository navigation
Releases
Recode v1.6.0
Recode v1.6.0
Recode 1.6.0 is the official Linux x86-64 C11 performance release, built from merged main commit 0e4a9cca12a45dd5964ee4e9108455878b3256de.
Integer native code now uses bounded caller-saved register assignment, deterministic spills, block-local dead pure-write removal, compact constants and direct register operations. The arithmetic fixture shrinks from 81 to 27 bytes and eliminates nine explicit stack accesses.
Batch execution groups unsampled records while preserving sampling positions, validation, fail-fast result prefixes, error offsets and native ownership pins. Compilation reuses one validated layout through RW-to-RX publication and avoids temporary CFG allocations for straight-line programs.
The seven-round comparison against v1.5.0 shows 11–32% lower warm public batch latency at 128 records across six fixtures. Arithmetic measures 19.040 to 14.599 ns/record; loop kernel latency measures 18.598 to 10.172 ns. These Intel N150 measurements are workload-specific. LLVM/MIR remain faster in warm public throughput. One-item batching, some compilation cases and short-lived contexts regress; concurrent ordering is inconclusive.
The 31 public functions, existing structures and enum values are unchanged. Documented 1.x source compatibility remains; rebuild existing consumers with matching 1.6 headers/library. The SONAME is librecode.so.1.6; cross-minor binary substitution is not promised. MIT licensing is unchanged.
The attached source archive was rebuilt and tested after the five PRs were merged. See VERIFICATION.md for the exact revision and checks, and SHA256SUMS for asset integrity.
Generated instructions are not sanitizer-instrumented; independent differential, ABI and guard-page tests provide separate evidence. Recode is not a sandbox or an arbitrary-binary optimizer. Native per-record entry, page-rounded mappings and existing platform/execution limits remain.
Recode v1.5.0
The main addition is rc_runtime_call_integer_batch: evaluate one registered integer program over many independent argument/view records with one handle lookup and call-long native protection. Earlier successful results survive a later bounds error; completed identifies the failing record while error.offset identifies its instruction. Inputs stay borrowed through return. See the API contract and the installed examples/batch-rules consumer.
Batching supports INTERPRET, FIXED and ADAPTIVE. Tier selection occurs at request boundaries, and the first batch on each handle is interpreted. One-item requests and large cold/adaptive batches can regress. Native pins can delay eviction and removal. The interface provides no deadline, cancellation or sandbox isolation.
The integer emitter uses compact stack displacements and bounded local RAX forwarding. Stack slots remain authoritative at control-flow joins, and existing native ABI, read bounds and RW-to-RX publication rules remain. The immutable study shows smaller code and improved native-kernel medians on five fixtures, with some compilation and managed-call regressions retained in the report.
The optional independent comparison suite includes actual LLVM ORC LLJIT and MIR, plus C and Recode paths. LLVM/MIR remain outside the normal library dependencies. Measured compilation/memory costs can favor Recode, while optimized competitor native functions and direct C usually execute faster. Batching reduces managed per-record overhead; it does not establish general superiority over other compilers. See comparison methodology, baseline and batch evidence.
Existing supported v1.0 source rebuilds against 1.5. No old function or enum value is removed or renumbered. The library exports 31 public functions. API version remains 1; version macros/package metadata become 1.5.0 and SONAME becomes 1.5. Cross-minor binary compatibility is not promised. Read migration.
Compiler sanitizers instrument C, not generated instructions. Tests include native ABI, guarded reads, independent differential results, partial failures, mapping rollback and concurrent cache pressure. These checks are evidence, not a security proof. Persistent metadata/application memory and total RSS remain outside the executable-byte budget. Optional C analysis is incomplete; limitations are retained in the verification reports.
Exact candidate checks and remaining maintainer actions are recorded in verification, with the complete v1.0/v1.5 technical comparison.
Recode v1.0.0
Recode 1.0.0 release notes
Recode 1.0.0 is the first stable release. The v0.8, v0.9 and v1.0
preparation changes are merged into main.
Recode is a C11 execution library for Linux x86-64 only. Applications construct
bounded integer rules or translate the documented accumulator instruction subset.
It does not optimize arbitrary binaries and provides no sandboxing.
It supplies validation, interpretation, whole-function native compilation,
call statistics and a managed executable cache. Accumulator-only tracing remains
available and can be substantially slower than whole-function compilation.
Since v0.7, integer rules can read a caller-owned byte buffer through a bounded,
read-only, little-endian view. Invalid reads return BOUNDS and preserve results.
The independent installed data-rules example executes arithmetic and conditional
filters over external records and checks C/interpreter/native equivalence.
Stability work revalidates private native-emitter inputs, hides internal shared
symbols, adds bounded optional fuzzing, concurrent lifecycle stress and failure
regressions. All 30 installed functions are covered by the public API contract.
1.x preserves documented source compatibility; consumers rebuild across minor
releases. Binary compatibility is promised only within a major/minor patch line;
the first stable SONAME is librecode.so.1.0. See public-api.md and migration.md.
Installation uses CMake and Recode::recode with libc/POSIX threads; MIT licensing
is unchanged. No accounts, telemetry, commercial dependencies or hosted service
are required. Read getting-started.md, troubleshooting.md and release-verification.md
for actual build, integration, measurement and failure behavior.
Direct optimized C is faster in the measured workloads. Expanded interpreter
dispatch regressed in v0.8; compilation validation adds cold cost. ADAPTIVE can
remain interpreted and has timing-sensitive decisions. No universal speedup is
claimed. Cold and steady measurements, variation and cache pressure are retained.
Unsupported: arbitrary binaries/ELF optimization, other platforms/ABIs, raw pointer
integer arguments, stores, external calls, syscalls, integer TRACE, host-process
isolation, total-memory quotas and native/managed execution deadlines. Recode is
not a sandbox. Callers must supply valid pointers/lifetimes, bound hostile input,
and synchronize destruction. Sanitizers do not instrument generated instructions.