This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Affected surfaces
ReleasePort's take
Light signalThe JS engine now uses an in‑tree hesojs determinism fork from rquickjs. The `heso search` command defaults to Mojeek, Brave, Marginalia, Wikipedia (plus SearXNG) instead of DuckDuckGo.
Why it matters: Engine change may affect deterministic behavior; new default search providers alter query results for users relying on prior settings.
Summary
AI summaryUpdates Release Notes, Install heso-cli 0.3.0, and Install heso-verify 0.3.0 across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
`heso search` defaults to Mojeek, Brave, Marginalia, Wikipedia (plus SearXNG) instead of DuckDuckGo. `heso search` defaults to Mojeek, Brave, Marginalia, Wikipedia (plus SearXNG) instead of DuckDuckGo. Source: llm_adapter@2026-05-31 Confidence: high |
— |
| Feature | Low |
README now publishes macOS arm64 release‑binary stats (size, cold‑start latency, engine‑only latency). README now publishes macOS arm64 release‑binary stats (size, cold‑start latency, engine‑only latency). Source: llm_adapter@2026-05-31 Confidence: high |
— |
| Deprecation | Low |
`disable-assertions` (`-DNDEBUG`) workaround and the four‑step `Drop` GC dance removed. `disable-assertions` (`-DNDEBUG`) workaround and the four‑step `Drop` GC dance removed. Source: llm_adapter@2026-05-31 Confidence: high |
— |
| Bugfix | Medium |
`eval-dom` no longer aborts runtime teardown on iterator‑helper shutdown‑GC cycles. `eval-dom` no longer aborts runtime teardown on iterator‑helper shutdown‑GC cycles. Source: llm_adapter@2026-05-31 Confidence: high |
— |
| Bugfix | Medium |
First‑run signing‑identity creation is now atomic, preventing half‑written key failures. First‑run signing‑identity creation is now atomic, preventing half‑written key failures. Source: llm_adapter@2026-05-31 Confidence: high |
— |
| Refactor | High |
JS engine switched to in‑tree hesojs determinism fork from rquickjs. JS engine switched to in‑tree hesojs determinism fork from rquickjs. Source: llm_adapter@2026-05-31 Confidence: high |
— |
Full changelog
Release Notes
Changed
- The JS engine is now built from the in-tree hesojs determinism
fork (a QuickJS-NG fork) instead of stockrquickjs's vendored tree
(ADR 0030). Determinism is injected at the C layer —
JS_SetClockSource/JS_SetRandomSource/JS_SetRuntimeTimezone
replace the JS-side monkey-patches (theWrappedDateshim, the
Math.random/performance.nowclosures, and the process-global
TZ=UTCpin).cryptois now a pure-JS shim over the seeded engine
RNG rather than a Rust closure. heso searchno longer queries the DuckDuckGo endpoints by default —
they202/403-throttle scripted callers per IP and only added a
blockedrow from a normal egress IP. They remain available opt-in
via--engines ddg,ddg-lite. The default pool is now Mojeek + Brave +
Marginalia + Wikipedia (plus SearXNG when--searx-urlis set).- Repository and homepage links updated to
github.com/heso-inc/heso
across the Cargo, npm, and PyPI package metadata, the CLI banner, and
the docs.
Added
- The README publishes measured macOS arm64 release-binary stats
(binary size, cold-start latency over the network, and engine-only
latency).
Removed
- The
disable-assertions(-DNDEBUG) workaround and the four-step
DropGC dance. heso now ships with C assertions ON: the
ES2025 iterator-helper shutdown-GC reference cycle that aborted
eval-domon some pages is fixed at the engine (hesojs F1), with
JS_FreeRuntimeForceas the safety net.
Fixed
eval-domno longer aborts tearing down the runtime on pages that
exercise the iterator-helper shutdown-GC cycle (e.g. astro.build,
vercel.com).- First-run signing-identity creation is now atomic: the 32-byte key is
written to a temp file and hard-linked into place, so concurrentheso
invocations on a fresh machine can no longer observe a half-written key
and fail withidentity key file ... has wrong length: expected 32, got 0.
Note:
plat_hashshifts for pages that read the date or RNG.
NativeDate.toString()andMath.randomproduce different bytes
than the old JS shims (determinism still holds: same seed + same
engine version → identical bytes). Re-stamp cassettes recorded
against the old engine. Plats over static content (no date/RNG) are
unaffected and replay byte-identically across the swap.
heso-cli 0.3.0
Install heso-cli 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/heso-inc/heso/releases/download/v0.3.0/heso-cli-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/heso-inc/heso/releases/download/v0.3.0/heso-cli-installer.ps1 | iex"
Download heso-cli 0.3.0
| File | Platform | Checksum |
|--------|----------|----------|
| heso-cli-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| heso-cli-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| heso-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| heso-cli-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| heso-cli-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
heso-verify 0.3.0
Install heso-verify 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/heso-inc/heso/releases/download/v0.3.0/heso-verify-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/heso-inc/heso/releases/download/v0.3.0/heso-verify-installer.ps1 | iex"
Download heso-verify 0.3.0
| File | Platform | Checksum |
|--------|----------|----------|
| heso-verify-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| heso-verify-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| heso-verify-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| heso-verify-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| heso-verify-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
Breaking Changes
- JS engine switched from stock rquickjs to in‑tree hesojs fork; behavior of Date, Math.random, and crypto changes accordingly.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About blank3rs/heso](https:
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]