Skip to content

v0.6.0

Choose a tag to compare

@hymatrix-core hymatrix-core released this 05 Oct 04:27
· 7 commits to develop since this release
4a174bf

Release v0.6.0

馃殌 New Features

  • Per-VM Execution Queues: Each VM executes tasks serially through its own queue of 64 pending tasks, allowing different VMs to run concurrently. Apply, checkpoint, restore and initialization share the instance's serialized execution lifecycle.
  • Queue Admission Check: Messages are rejected with err_process_busy when the target VM has at least 48 pending tasks. This is an early admission check, not a capacity reservation; concurrent requests and the Node input backlog can still exceed the threshold.
  • Optional VM Checkpoints: Shutdown and single-VM stop skip VM checkpoints by default. Use hymx stop --checkpoint, CloseWithCheckpoint(), StopWithCheckpoint(pid) or POST /admin/vms/stopWithCheckpoint when a checkpoint is required.
  • Redis Outbox Queues: Outbox queues are persisted in Redis independently of VM checkpoints.

馃悰 Bug Fixes

  • Drain accepted VM tasks and wait for local result/outbox persistence before closing the node's backing services.
  • Stop all VM instances before waiting in KillAll, coordinate queue submissions with shutdown, and remove instances even if their underlying Close returns an error.
  • Copy mutable checkpoint state to avoid sharing it with later VM execution.

馃敡 Improvements

  • Shorten global VMM lock usage so one VM's execution or checkpoint does not hold the lock needed by other VMs.
  • Remove unused Node registry wait state and expand lifecycle, queue admission, shutdown and isolated Redis integration coverage.

馃攧 Upgrade Notes

  • Drain pending messages before upgrading from v0.5.0. Old in-memory outbox queues and outbox data in legacy VM checkpoints are not automatically imported into Redis; legacy checkpoint outbox fields are ignored.
  • Restarting retains messages already written to Redis but does not automatically resend them. Call SDK TrySend(pid, target) / POST /trysend, or submit a new message to the same queue, to resume delivery. Redis durability depends on its persistence and eviction configuration.
  • Skipping VM checkpoints can increase recovery time and requires database history to remain available. Payment state persistence is unchanged.
  • hymx stop --checkpoint uses SIGUSR1 and must only target a daemon running this version. The stop command confirms signal delivery, not shutdown or checkpoint completion.
  • This release provides Linux and macOS binaries for amd64 and arm64. Windows binaries are not included.
  • Graceful shutdown drains accepted tasks and local outputs; it does not guarantee remote outbox delivery or forcibly interrupt a VM that never returns.

馃摎 Documentation

  • Updated README shutdown/recovery instructions and admin API documentation.
  • Added an isolated local network verification script for checkpoint and recovery behavior.

Merged changes: #71, #73.

Full Changelog: v0.5.0...v0.6.0