-
v0.3.1
StableAll checks were successfulRelease / Create release (push) Successful in 39sTest / Sandbox (push) Successful in 40sTest / Hakurei (push) Successful in 1m36sTest / Create distribution (push) Successful in 26sTest / Sandbox (race detector) (push) Successful in 4m33sTest / Hpkg (push) Successful in 4m23sTest / Hakurei (race detector) (push) Successful in 5m11sTest / Flake checks (push) Successful in 1m37sreleased this
2025-11-12 00:53:14 +09:00 | 27 commits to master since this releaseFixes
- 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/initsetup pipe before fork/exec of initial process.
Enhancements
- Expose current instance identifier via the
--identifier-fdflag. - 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
StableAll checks were successfulRelease / Create release (push) Successful in 39sTest / Sandbox (push) Successful in 39sTest / Hakurei (push) Successful in 3m20sTest / Create distribution (push) Successful in 24sTest / Sandbox (race detector) (push) Successful in 4m0sTest / Hpkg (push) Successful in 3m37sTest / Hakurei (race detector) (push) Successful in 4m53sTest / Flake checks (push) Successful in 1m37sreleased this
2025-11-06 01:37:15 +09:00 | 38 commits to master since this releaseMigration
The
cmd/hsuuid format has changed and is now stabilised in packagehst. Existing installations need to migrate by manually runningchownrecursively over existing application data directories. The uid format can be found in hst/grp_pwd.go.Additionally,
TMPDIRandXDG_RUNTIME_DIRsharing between containers under the same identity is now optional and defaults to off. This is not an implementation detail. Some applications useTMPDIRfor communication and state tracking. Chromium is a good example of this. Test your apps, if they malfunction, setshare_runtimeorshare_tmpdirto true depending on the cause.API Changes
- Remove raw seccomp flags from package
hst. - All boolean fields in
ContainerConfigare packed into a single integer. Does not breakjson. - Package
systemnow operates exclusively on absolute pathnames. ProxyDBusno longer returns function to dump buffer.Waylandno longer returns the security context close file.- Container related fields are moved from the top level
Configstruct toContainerConfig. - Pathnames, bits, seccomp types are relocated from package
container. - Cross-platform
jsonadaptor provided forseccomptypes. - Message and check types are relocated from package
container. - The
wait_delayfield now takes a negative value. Such a value is equivalent to zero and bypasses default. - Rename
hst.AbsTmptohst.AbsPrivateTmp. - Remove
PlacePmethod from packagecontainer. - Remove
system/tmpfilesas it is no longer used. - Hold
hst.ExtraPermConfigby value instead of address. - Instance state now embeds
hst.Config. - State store entries are prefixed with a versioned header encoding the enablements byte.
container/paramsnow exposes the write end of setup pipe.hakurei --json psserialises to an array instead of a map.- Rename
NewMsgtoNewin packagemessage.
Fixes
- Do not incorrectly offset shim timeout base value.
- Apply configured filesystems late, enabling system mount points to be covered.
- Check
nscdsocket for path hiding instead of only for pd. - Use correct well-known address for
dbusfallback. - Fix synchronisation order in
containerandhelpertests. - Do not leak state (outside of dispatcher) in
systembuilder methods. - Ignore nondeterministic mount point in vm test.
- Fix occasional incorrect reporting of
wstatusincontainer/init. - Use
EOFas failsafe ininternal/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.Configaddress incmd/hakurei/print.
Enhancements
- Package
hstnow builds without cgo. - Significantly improve
hstdoc comments. - Stable enablements bits, instance state, exit codes, uid format in
hst. - Validate
hst.Configearly and export validation function. - Optionally share
TMPDIRandXDG_RUNTIME_DIRbetween containers under the same identity. - Dump
system/dbusbuffer internally. - Hang up
system/waylandsecurity context internally. - Only minimal pathnames required for
hst.Pathsare 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
overlaymount configuration inhst.Template. - Remove confusing or redundant/noisy entries in
hst.Template. - Eliminate the self pipe and copy
seccompprogram into managed memory. - Emulate
pam_systemdXDG_SESSION_TYPEbehaviour according to enablement bits. - Hakurei version is now exposed via
hst. - Print cleaner
jsonerror messages fromcmd/hakurei. - Improve
cmd/hakureicontainer flags string representation. - Export
prctlwrapper. - Improve signal handling in
container/init. - Do not suspend output in
container/initandinternal/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
Msgimplementation fromcontainer. - Package
internal/appis renamed tointernal/outcomeand cleaned up, with some of its code relocated to independent packages. - Permissive defaults behaviour is eliminated and relocated to
cmd/hakureirun command. - Clean up legacy
internal/outcomeintegration tests. - Check against setgid bit in
cmd/hsu. - Use much less ambiguous names which are set by the linker.
- The
internal/storeinterface is significantly improved, with much better efficiency and lower lock contention. - The
lockedfilepackage is relocated from the tool chain, and can be used by project internals going forward.
Full Changelog: v0.2.2...v0.3.0
Downloads
- Remove raw seccomp flags from package
-
v0.2.2
StableAll checks were successfulRelease / Create release (push) Successful in 1m8sTest / Sandbox (push) Successful in 51sTest / Hakurei (push) Successful in 1m9sTest / Create distribution (push) Successful in 37sTest / Hpkg (push) Successful in 4m38sTest / Sandbox (race detector) (push) Successful in 4m33sTest / Hakurei (race detector) (push) Successful in 3m11sTest / Flake checks (push) Successful in 1m42sreleased this
2025-09-28 21:58:19 +09:00 | 210 commits to master since this releaseFixes
- Handle goexit events more gracefully in
container/stub. - Mount
/dev/shmearly to avoid covering mount points fromhst. - Compensate parent WaitDelay value for shim timeout.
- Check for nil dbus configuration in
hakurei run.
Enhancements
- Initialise
exec.Cmdearly to expose additional methods. - Leave
$DISPLAYintact to work around buggy X clients. - Wrap errno values returned by the
mountsyscall. - 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/apperror tohst. - Return
hsurcuserid fromcmd/hsu.
Internal
- Use default value of NAME_REGEX from adduser for username check.
- Remove
internal/appinterfaces. - Do not return from shim start.
- Significant cleanups in
internal/app. - Replace
internal/syswithcontainer/stub. - Full test coverage has been achieved in system setup code.
- Move suspendable writer to
container, in preparation forinternal/hlogremoval 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
- Handle goexit events more gracefully in
-
v0.2.1
StableAll checks were successfulRelease / Create release (push) Successful in 43sTest / Sandbox (push) Successful in 40sTest / Hakurei (push) Successful in 3m17sTest / Create distribution (push) Successful in 24sTest / Hpkg (push) Successful in 3m36sTest / Sandbox (race detector) (push) Successful in 3m56sTest / Hakurei (race detector) (push) Successful in 5m6sTest / Flake checks (push) Successful in 1m31sreleased this
2025-08-26 03:33:45 +09:00 | 286 commits to master since this releaseDownloads
-
v0.2.0
StableAll checks were successfulRelease / Create release (push) Successful in 39sTest / Sandbox (push) Successful in 41sTest / Hakurei (push) Successful in 1m9sTest / Create distribution (push) Successful in 24sTest / Hpkg (push) Successful in 1m10sTest / Sandbox (race detector) (push) Successful in 4m5sTest / Hakurei (race detector) (push) Successful in 5m12sTest / Flake checks (push) Successful in 1m31sreleased this
2025-08-26 02:23:59 +09:00 | 288 commits to master since this releaseAPI Changes
- Remove
coverfield fromhst/container. - Remove
symlinkfield fromhst/container. - Field
datahas been renamed tohome. - field
dirhas been removed since it is made redundant byfilesystem. - All pathname fields now take the
*container.Absolutetype. Does not breakjson. - The
filesystemfield now accepts many types of supported filesystems. - Container root behaviour is now configured through the
filesystemfield. - Autoetc behaviour is now accessible through a special
bindtypefilesystem. - Autoroot behaviour is now accessible through a special
bindtypefilesystem. - The enablement flags are now represented in
jsonas 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
containerstate. - Package
containerno longer attempts to look up executable file from name. - Set up acl on X server socket.
- Check
containersetup op equivalence by value. - Validate
containersetup ops early.
Enhancements
- Export mount string constants.
- Export FHS pathname constants
- Mount mqueue as part of
/dev. - Mount container
/devread only. - High-level API for overlay mounts in
container. - The
hakurei showcommand now exposes more information. - Optionally isolate host abstract UNIX domain sockets via landlock.
- Ptrace protection via Yama LSM.
Internal
- Move
tmpfspathname 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
containersetup 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
- Remove
-
v0.1.3
StableAll checks were successfulTest / Create distribution (push) Successful in 26sRelease / Create release (push) Successful in 41sTest / Sandbox (push) Successful in 41sTest / Hakurei (push) Successful in 44sTest / Hakurei (race detector) (push) Successful in 44sTest / Sandbox (race detector) (push) Successful in 42sTest / Hpkg (push) Successful in 42sTest / Flake checks (push) Successful in 1m17sreleased this
2025-08-02 00:02:54 +09:00 | 386 commits to master since this releaseFixes
- Remount container
/read-only. - Remove hard coded nscd cover from NixOS module.
Enhancements
- Expose additional
tmpfsflags. - Expose remount behaviour.
- Relocate autoroot behaviour to package
container. - Display autoroot information in
hakurei show. - Expose
tmpfsinhst.
Internal
- Increase test vm memory allocation.
- Rename obsolete
hpkgpackage. - Cover
hakurei runbehaviour in tests. - Remount can now be called independently from bind.
Full Changelog: v0.1.2...v0.1.3
Downloads
- Remount container
-
v0.1.2
StableAll checks were successfulRelease / Create release (push) Successful in 41sTest / Sandbox (push) Successful in 40sTest / Hakurei (push) Successful in 2m37sTest / Create distribution (push) Successful in 24sTest / Sandbox (race detector) (push) Successful in 3m29sTest / Planterette (push) Successful in 3m5sTest / Hakurei (race detector) (push) Successful in 2m27sTest / Flake checks (push) Successful in 1m19sreleased this
2025-07-29 03:11:33 +09:00 | 401 commits to master since this releaseEnhancements
- Per-container configurable lingering process wait delay.
- Optionally forward
containercontext 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
StableAll checks were successfulRelease / Create release (push) Successful in 41sTest / Hakurei (push) Successful in 49sTest / Sandbox (push) Successful in 40sTest / Create distribution (push) Successful in 24sTest / Planterette (push) Successful in 3m13sTest / Sandbox (race detector) (push) Successful in 3m46sTest / Hakurei (race detector) (push) Successful in 2m18sTest / Flake checks (push) Successful in 1m21sreleased this
2025-07-09 05:42:31 +09:00 | 414 commits to master since this releaseFixes
- Fix prctl typo in
container/init. - Add
testtoolbuild tag fortest/sandbox.
Enhancements
- Add aarch64 constants.
Internal
- Remove split
internal/appimplementation. - 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
- Fix prctl typo in
-
v0.1.0
StableAll checks were successfulRelease / Create release (push) Successful in 39sTest / Sandbox (push) Successful in 39sTest / Hakurei (push) Successful in 1m9sTest / Sandbox (race detector) (push) Successful in 2m58sTest / Create distribution (push) Successful in 24sTest / Planterette (push) Successful in 3m48sTest / Hakurei (race detector) (push) Successful in 4m6sTest / Flake checks (push) Successful in 1m15sreleased this
2025-07-03 03:42:58 +09:00 | 430 commits to master since this releaseInitial Hakurei release.
Downloads