• v0.3.1
    All checks were successful
    Release / Create release (push) Successful in 39s
    Test / Sandbox (push) Successful in 40s
    Test / Hakurei (push) Successful in 1m36s
    Test / Create distribution (push) Successful in 26s
    Test / Sandbox (race detector) (push) Successful in 4m33s
    Test / Hpkg (push) Successful in 4m23s
    Test / Hakurei (race detector) (push) Successful in 5m11s
    Test / Flake checks (push) Successful in 1m37s
    Stable

    cat released this 2025-11-12 00:53:14 +09:00 | 27 commits to master since this release

    Fixes

    • Format group lookup error message correctly.
    • Reject impossible user-supplied fd numbers.
    • Close initial process extra files on termination, which also keeps them alive until then.
    • Close container/init setup pipe before fork/exec of initial process.

    Enhancements

    • Expose current instance identifier via the --identifier-fd flag.
    • Set FD_CLOEXEC on files left open by the parent.

    Internal

    • Separate seccomp numbers from syscall numbers to prevent inadvertent use of PNRs.

    Full Changelog: v0.3.0...v0.3.1

    Downloads
  • v0.3.0
    All checks were successful
    Release / Create release (push) Successful in 39s
    Test / Sandbox (push) Successful in 39s
    Test / Hakurei (push) Successful in 3m20s
    Test / Create distribution (push) Successful in 24s
    Test / Sandbox (race detector) (push) Successful in 4m0s
    Test / Hpkg (push) Successful in 3m37s
    Test / Hakurei (race detector) (push) Successful in 4m53s
    Test / Flake checks (push) Successful in 1m37s
    Stable

    cat released this 2025-11-06 01:37:15 +09:00 | 38 commits to master since this release

    Migration

    The cmd/hsu uid format has changed and is now stabilised in package hst. Existing installations need to migrate by manually running chown recursively over existing application data directories. The uid format can be found in hst/grp_pwd.go.

    Additionally, TMPDIR and XDG_RUNTIME_DIR sharing between containers under the same identity is now optional and defaults to off. This is not an implementation detail. Some applications use TMPDIR for communication and state tracking. Chromium is a good example of this. Test your apps, if they malfunction, set share_runtime or share_tmpdir to true depending on the cause.

    API Changes

    • Remove raw seccomp flags from package hst.
    • All boolean fields in ContainerConfig are packed into a single integer. Does not break json.
    • Package system now operates exclusively on absolute pathnames.
    • ProxyDBus no longer returns function to dump buffer.
    • Wayland no longer returns the security context close file.
    • Container related fields are moved from the top level Config struct to ContainerConfig.
    • Pathnames, bits, seccomp types are relocated from package container.
    • Cross-platform json adaptor provided for seccomp types.
    • Message and check types are relocated from package container.
    • The wait_delay field now takes a negative value. Such a value is equivalent to zero and bypasses default.
    • Rename hst.AbsTmp to hst.AbsPrivateTmp.
    • Remove PlaceP method from package container.
    • Remove system/tmpfiles as it is no longer used.
    • Hold hst.ExtraPermConfig by value instead of address.
    • Instance state now embeds hst.Config.
    • State store entries are prefixed with a versioned header encoding the enablements byte.
    • container/params now exposes the write end of setup pipe.
    • hakurei --json ps serialises to an array instead of a map.
    • Rename NewMsg to New in package message.

    Fixes

    • Do not incorrectly offset shim timeout base value.
    • Apply configured filesystems late, enabling system mount points to be covered.
    • Check nscd socket for path hiding instead of only for pd.
    • Use correct well-known address for dbus fallback.
    • Fix synchronisation order in container and helper tests.
    • Do not leak state (outside of dispatcher) in system builder methods.
    • Ignore nondeterministic mount point in vm test.
    • Fix occasional incorrect reporting of wstatus in container/init.
    • Use EOF as failsafe in internal/outcome/shim.
    • Fallback runtime dir is no longer rooted in the fallback rundir.
    • State is now tracked in TMPDIR, aligning better with use case detailed in the XDG basedir spec.
    • Make application identifier string omitempty.
    • Handle nil hst.Config address in cmd/hakurei/print.

    Enhancements

    • Package hst now builds without cgo.
    • Significantly improve hst doc comments.
    • Stable enablements bits, instance state, exit codes, uid format in hst.
    • Validate hst.Config early and export validation function.
    • Optionally share TMPDIR and XDG_RUNTIME_DIR between containers under the same identity.
    • Dump system/dbus buffer internally.
    • Hang up system/wayland security context internally.
    • Only minimal pathnames required for hst.Paths are sent.
    • Outcome finalisation is fully modularised and tested.
    • Container is now finalised on the shim side, significantly reducing transfer size.
    • Outcome finalisation no longer clobbers supplied hst.Config.
    • Use more plausible overlay mount configuration in hst.Template.
    • Remove confusing or redundant/noisy entries in hst.Template.
    • Eliminate the self pipe and copy seccomp program into managed memory.
    • Emulate pam_systemd XDG_SESSION_TYPE behaviour according to enablement bits.
    • Hakurei version is now exposed via hst.
    • Print cleaner json error messages from cmd/hakurei.
    • Improve cmd/hakurei container flags string representation.
    • Export prctl wrapper.
    • Improve signal handling in container/init.
    • Do not suspend output in container/init and internal/outcome/shim.
    • Store priv-side pid in state store entries.
    • Measure duration of finalise and each process state.

    Internal

    • Almost all tests are parallelised.
    • Remove internal/hlog.
    • Remove global Msg implementation from container.
    • Package internal/app is renamed to internal/outcome and cleaned up, with some of its code relocated to independent packages.
    • Permissive defaults behaviour is eliminated and relocated to cmd/hakurei run command.
    • Clean up legacy internal/outcome integration tests.
    • Check against setgid bit in cmd/hsu.
    • Use much less ambiguous names which are set by the linker.
    • The internal/store interface is significantly improved, with much better efficiency and lower lock contention.
    • The lockedfile package is relocated from the tool chain, and can be used by project internals going forward.

    Full Changelog: v0.2.2...v0.3.0

    Downloads
  • v0.2.2
    All checks were successful
    Release / Create release (push) Successful in 1m8s
    Test / Sandbox (push) Successful in 51s
    Test / Hakurei (push) Successful in 1m9s
    Test / Create distribution (push) Successful in 37s
    Test / Hpkg (push) Successful in 4m38s
    Test / Sandbox (race detector) (push) Successful in 4m33s
    Test / Hakurei (race detector) (push) Successful in 3m11s
    Test / Flake checks (push) Successful in 1m42s
    Stable

    cat released this 2025-09-28 21:58:19 +09:00 | 210 commits to master since this release

    Fixes

    • Handle goexit events more gracefully in container/stub.
    • Mount /dev/shm early to avoid covering mount points from hst.
    • Compensate parent WaitDelay value for shim timeout.
    • Check for nil dbus configuration in hakurei run.

    Enhancements

    • Initialise exec.Cmd early to expose additional methods.
    • Leave $DISPLAY intact to work around buggy X clients.
    • Wrap errno values returned by the mount syscall.
    • Return dedicated error types for repeated nonrepeatable ops and ops in an invalid state.
    • Remove generic error wrapping from internal/hlog.
    • Significantly improve verbose reporting in container/init.
    • Move internal/app error to hst.
    • Return hsurc userid from cmd/hsu.

    Internal

    • Use default value of NAME_REGEX from adduser for username check.
    • Remove internal/app interfaces.
    • Do not return from shim start.
    • Significant cleanups in internal/app.
    • Replace internal/sys with container/stub.
    • Full test coverage has been achieved in system setup code.
    • Move suspendable writer to container, in preparation for internal/hlog removal in v0.3.x.
    • Use explicitly shared path in vm tests.
    • Assert certain writable paths in vm tests.

    Full Changelog: v0.2.1...v0.2.2

    Downloads
  • v0.2.1
    All checks were successful
    Release / Create release (push) Successful in 43s
    Test / Sandbox (push) Successful in 40s
    Test / Hakurei (push) Successful in 3m17s
    Test / Create distribution (push) Successful in 24s
    Test / Hpkg (push) Successful in 3m36s
    Test / Sandbox (race detector) (push) Successful in 3m56s
    Test / Hakurei (race detector) (push) Successful in 5m6s
    Test / Flake checks (push) Successful in 1m31s
    Stable

    cat released this 2025-08-26 03:33:45 +09:00 | 286 commits to master since this release

    Fixes

    • Mount writable tmpfs on /dev/shm.

    Full Changelog: v0.2.0...v0.2.1

    Downloads
  • v0.2.0
    All checks were successful
    Release / Create release (push) Successful in 39s
    Test / Sandbox (push) Successful in 41s
    Test / Hakurei (push) Successful in 1m9s
    Test / Create distribution (push) Successful in 24s
    Test / Hpkg (push) Successful in 1m10s
    Test / Sandbox (race detector) (push) Successful in 4m5s
    Test / Hakurei (race detector) (push) Successful in 5m12s
    Test / Flake checks (push) Successful in 1m31s
    Stable

    cat released this 2025-08-26 02:23:59 +09:00 | 288 commits to master since this release

    API Changes

    • Remove cover field from hst/container.
    • Remove symlink field from hst/container.
    • Field data has been renamed to home.
    • field dir has been removed since it is made redundant by filesystem.
    • All pathname fields now take the *container.Absolute type. Does not break json.
    • The filesystem field now accepts many types of supported filesystems.
    • Container root behaviour is now configured through the filesystem field.
    • Autoetc behaviour is now accessible through a special bind type filesystem.
    • Autoroot behaviour is now accessible through a special bind type filesystem.
    • The enablement flags are now represented in json as boolean fields.
    • Net and Abstract fields have been renamed. Does not break json.
    • Autoroot prefix has been removed.
    • Share path now uses hsu userid.

    Fixes

    • Unexport internal container state.
    • Package container no longer attempts to look up executable file from name.
    • Set up acl on X server socket.
    • Check container setup op equivalence by value.
    • Validate container setup ops early.

    Enhancements

    • Export mount string constants.
    • Export FHS pathname constants
    • Mount mqueue as part of /dev.
    • Mount container /dev read only.
    • High-level API for overlay mounts in container.
    • The hakurei show command now exposes more information.
    • Optionally isolate host abstract UNIX domain sockets via landlock.
    • Ptrace protection via Yama LSM.

    Internal

    • Move tmpfs pathname prefixing to caller.
    • Expose interactive testing vm for tracing.
    • Reduce noise in non-verbose tests and test failures.
    • CAP_DAC_OVERRIDE is now raised for container/init.
    • Container setup ops are now able to share global state.
    • Enforce nonrepeatable autoetc and autoroot.
    • Container now spawns on a locked thread tied to its lifecycle.
    • Full test coverage has been achieved in container setup code.
    • NixOS module config validation is now implemented via hakurei show.
    • Output of initial hakurei run in vm tests is no longer discarded.

    Full Changelog: v0.1.3...v0.2.0

    Downloads
  • v0.1.3
    All checks were successful
    Test / Create distribution (push) Successful in 26s
    Release / Create release (push) Successful in 41s
    Test / Sandbox (push) Successful in 41s
    Test / Hakurei (push) Successful in 44s
    Test / Hakurei (race detector) (push) Successful in 44s
    Test / Sandbox (race detector) (push) Successful in 42s
    Test / Hpkg (push) Successful in 42s
    Test / Flake checks (push) Successful in 1m17s
    Stable

    cat released this 2025-08-02 00:02:54 +09:00 | 386 commits to master since this release

    Fixes

    • Remount container / read-only.
    • Remove hard coded nscd cover from NixOS module.

    Enhancements

    • Expose additional tmpfs flags.
    • Expose remount behaviour.
    • Relocate autoroot behaviour to package container.
    • Display autoroot information in hakurei show.
    • Expose tmpfs in hst.

    Internal

    • Increase test vm memory allocation.
    • Rename obsolete hpkg package.
    • Cover hakurei run behaviour in tests.
    • Remount can now be called independently from bind.

    Full Changelog: v0.1.2...v0.1.3

    Downloads
  • v0.1.2
    All checks were successful
    Release / Create release (push) Successful in 41s
    Test / Sandbox (push) Successful in 40s
    Test / Hakurei (push) Successful in 2m37s
    Test / Create distribution (push) Successful in 24s
    Test / Sandbox (race detector) (push) Successful in 3m29s
    Test / Planterette (push) Successful in 3m5s
    Test / Hakurei (race detector) (push) Successful in 2m27s
    Test / Flake checks (push) Successful in 1m19s
    Stable

    cat released this 2025-07-29 03:11:33 +09:00 | 401 commits to master since this release

    Enhancements

    • Per-container configurable lingering process wait delay.
    • Optionally forward container context cancellation to the initial process.
    • Expose signal forwarding behaviour in hst.

    Internal

    • Use more reliable nonexistence.
    • Improve container testing setup.
    • Move shim signal handler outcome to Go.

    Full Changelog: v0.1.1...v0.1.2

    Downloads
  • v0.1.1
    All checks were successful
    Release / Create release (push) Successful in 41s
    Test / Hakurei (push) Successful in 49s
    Test / Sandbox (push) Successful in 40s
    Test / Create distribution (push) Successful in 24s
    Test / Planterette (push) Successful in 3m13s
    Test / Sandbox (race detector) (push) Successful in 3m46s
    Test / Hakurei (race detector) (push) Successful in 2m18s
    Test / Flake checks (push) Successful in 1m21s
    Stable

    cat released this 2025-07-09 05:42:31 +09:00 | 414 commits to master since this release

    Fixes

    • Fix prctl typo in container/init.
    • Add testtool build tag for test/sandbox.

    Enhancements

    • Add aarch64 constants.

    Internal

    • Remove split internal/app implementation.
    • Use /proc/self for initial filesystem setup.
    • Improve seccomp test case representation.
    • Check seccomp state on all vm test cases.

    Full Changelog: v0.1.0...v0.1.1

    Downloads
  • v0.1.0
    All checks were successful
    Release / Create release (push) Successful in 39s
    Test / Sandbox (push) Successful in 39s
    Test / Hakurei (push) Successful in 1m9s
    Test / Sandbox (race detector) (push) Successful in 2m58s
    Test / Create distribution (push) Successful in 24s
    Test / Planterette (push) Successful in 3m48s
    Test / Hakurei (race detector) (push) Successful in 4m6s
    Test / Flake checks (push) Successful in 1m15s
    Stable

    cat released this 2025-07-03 03:42:58 +09:00 | 430 commits to master since this release

    Initial Hakurei release.

    Downloads