Repository navigation
v0.1.3 | Lands the `deno_core` 0.408 bump deferred from 0.1.2 — a V8 isolate must now be constructed inside an entered tokio runtime or the process aborts — and makes the V8 heap ceiling environment-tunable.
LatestFixed
-
A V8 isolate constructed outside a tokio runtime aborted the process
(#37).deno_core
0.408 capturestokio::runtime::Handle::try_current()when it registers an
isolate and spawns V8's delayed foreground tasks — GC memory-reducer work —
on that handle; with no handle it prints a diagnostic and calls
std::process::abort(). The synchronous constructors
(BrowserJsRuntime::new/with_profile/with_options) are public API
callable from a plainfn mainor a#[test], so they now enter a
process-lifetime fallback runtime when the caller has none. Applies to both
the page and worker realms.Worth being precise, because it shaped the 0.1.2 release: the abort is
not debug-gated and not platform-specific. Release builds passed only
while V8 happened not to post a delayed task inside the window under test —
i.e. a latent production abort, which is why the bump was held back from
0.1.2 rather than shipped. Reproduced on Linux, macOS and Windows.
Added
-
Environment-tunable V8 heap limits. The right ceiling is a property of
the deployment, not of the engine, and the previous hard-coded 4 GB silently
over-committed small containers.BROWSER_OXIDE_HEAP_MAX_MB— default4096(4 GB)BROWSER_OXIDE_HEAP_INITIAL_MB— default1024(1 GB)
Unparseable or zero values fall back to the defaults with a warning rather
than failing; an initial above the ceiling is clamped, since V8 rejects that
pairing. Both are per-isolate, so aPagePoolof N pages can commit up
to N × the ceiling — seedocs/CONFIGURATION.md.
Dependencies
deno_core0.404 → 0.408 (V8 149.2.0 → 149.4.0), the bump deferred from
0.1.2.
Changed
- CI runs
cargo testwith--nocapture. Not cosmetic: libtest captures each
test's output and replays it only on failure, so when a test aborts the
reason dies with it. That is why #37 first surfaced as a bare
signal: 6, SIGABRTwith no diagnosis. Any future abort-on-construction
would otherwise be undiagnosable from CI logs alone.
Verified
- Canvas fingerprint byte-identical across the V8 bump —
examples/canvas_fp_probe.rsreportslen=17502 fnv1a=5b1d42ee9bdc9713, the
same value as 0.1.1 and 0.1.2. - Real-site regression vs
main, 15 open sites, both engine paths: zero
regressions; the warm-reuse fix from 0.1.2 still holds (pool 11/15 → 12/15). - Full CI matrix green on ubuntu (stable/beta/nightly), macOS and Windows —
including the debug jobs that previously aborted.
Installation
Rust (crates.io)
cargo add browser_oxidePython (PyPI)
pip install browser-oxideMCP Server (for AI assistants)
cargo install browser_oxide_mcpOr download a pre-built browser-oxide-mcp binary for Linux, macOS, or Windows
from the assets below.
Platform Support (MCP binary)
| Platform | Architecture | Archive |
|---|---|---|
| Linux | x86_64 (glibc) | browser-oxide-mcp-x86_64-unknown-linux-gnu.tar.gz |
| macOS | ARM64 (Apple Silicon) | browser-oxide-mcp-aarch64-apple-darwin.tar.gz |
| macOS | x86_64 (Intel) | browser-oxide-mcp-x86_64-apple-darwin.tar.gz |
| Windows | x86_64 | browser-oxide-mcp-x86_64-pc-windows-msvc.tar.gz |
Changelog
See CHANGELOG.md for full details.