Skip to content

Mako v0.6.35

Choose a tag to compare

@github-actions github-actions released this 15 Sep 13:12
· 61 commits to main since this release

Actor performance and scaling

  • Single-port loops receive up to 16 ready messages per lock acquisition without waiting to fill a batch. FIFO ordering, early returns, and typed cleanup of unprocessed messages are preserved.
  • Single boolean messages and pairs of signed 24-bit integers avoid envelope allocations. Larger pairs fall back to full-width envelopes without truncation.
  • Shared and borrowed slice payloads remain isolated snapshots. Exclusive heap backing can transfer without an additional copy, with recursive checks for nested slices.
  • Named-port polling avoids temporary Result allocations and preserves per-message control priority.
  • Added bounded, keyed sharding examples, multi-producer regression tests, and throughput/latency benchmarks. Cross-shard transactions still require application coordination.
  • Fixed cleanup of channel arrays and native channel fields/aliases, raw actor handles, inline message strings, and mangled port names such as exec.

Earlier actor correctness fixes included

Includes the fixes for #60–#63: typed payloads, constructor arguments, early returns, multi-file self resolution and state persistence, nested-slice double-free fixes, and safe rejected-send/shutdown cleanup. The documented self-aliasing local-variable workaround remains available.

Validation and measured performance

  • CI for this revision: all 16 jobs passed, including ASan, UBSan, TSan, memory-safety gates, all three platforms, and the unchanged strict 1.5× performance contract. Timing jobs required a fresh-runner retry.
  • Local full test suites: 470/470 native and 470/470 C with ASan/UBSan.
  • Local strict 1.5×-Rust gate passed all seven kernels; actor200k measured 1.35× Rust and chan50k 0.91× Rust.
  • Seven alternating payload benchmark runs on the local Apple arm64 host: integer pairs improved from 17.20 ms to 5.32 ms, and booleans from 16.98 ms to 5.19 ms, for 200,000 messages. Measured send-to-handler latency remained 4/12/15 microseconds at p50/p95/p99.
  • Local memory-safety gate passed, including 800/800 HTTP soak requests with stable RSS. Focused C/native actor and sharding leak checks reported zero leaks.

Measurements are workload- and host-specific. The mailbox remains mutex-based; an experimental direct-lock send path did not improve contended throughput and was removed.

actor_len counts queued messages and excludes the bounded in-flight batch. Raw failed sends retain ownership; prefer generated consuming send helpers, and use Name_drop_message for discarded owned messages.

Full changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35

Full Changelog: v0.6.34...v0.6.35