Skip to content
AsHyAmS
Network state observed every site read A snapshot, not live telemetry.

Updateschanged

l3i stable 2.1.0 → 2.1.2

Published by l3i. release migration artifacts

Channel stable

  • changed: stable head 2.1.0 → 2.1.2

stable: Artifacts

  • changed: Artifact crate size 2416845 bytes → 2419486 bytes

Releases

  • added: Release 2.1.2stable, available, dated 2026-10-15 by its publisher
  • added: Release 2.1.1stable, available, dated 2026-10-15 by its publisher

Publisher's notes for 2.1.2 stable

2.1.1's fixes, released through the pipeline: 2.1.1 went to crates.io by hand, without its GitHub release or documentation.

Changed

  • Two push closures end with a semicolon, as the pedantic lints ask. Nothing else differs from 2.1.1.

Migration

Nothing to change. Take 2.1.2 in place of 2.1.1; they are the same code.

Written by the publisher and shown verbatim, rendered through a sanitizer.

Publisher's notes for 2.1.1 stable

Fixes to 2.1.0's limits: no push or host-level allocation aborts the process, a wait the time limit cuts short fails the call it ends, process.run stops at the limit whatever holds its pipes, and a child finds programs on the host's PATH again.

Fixed

  • A child started without process.environment gets the host's PATH along with what env names, so process.run('git') finds a program where the host would, and so does whatever that program starts. 2.1.0 cleared PATH with the rest, and a bare name fell back to libc's default path. clearEnv = true still clears it.
  • bytes.shortest(value, 'f32') answers nil for a double past single precision's range, which narrows to an infinity. It formatted that infinity as inf, found no exponent, and aborted the process from inside the native call.
  • Every scalar, vector, light userdata and pinned-value push makes room on the stack first, and pinning a value, making a table, a closure or a userdata, and looking up a global run under protection at host level. A host that filled the stack, or ran out of memory under the cap while doing any of those outside a Lua call, aborted with Rust cannot catch foreign exceptions; it gets Err.
  • A @dream/tcp poller's or @dream/dns request's wait cut short by the execution time limit marks the call expired, as process.sleep and process.run do, so a script that ends with the wait fails with the limit instead of returning Ok.
  • process.run ends at the execution time limit even while a process the child started holds a captured pipe open, abandoning the capture instead of waiting for its reader, and kills and reaps a child whose wait fails.

Migration

Nothing to change. A host that wanted a child to have no PATH passes clearEnv = true. Value::clone, Value::type_of and Value::eq answer as for an invalid value (an invalid clone, Type::None, false) when the main thread has no stack slot left, where they could abort before.

Written by the publisher and shown verbatim, rendered through a sanitizer.