-
v0.3.0
StableAll checks were successfulTest / Create distribution (push) Successful in 45sRelease / Create release (push) Successful in 53sTest / Sandbox (push) Successful in 3m33sTest / Hakurei (push) Successful in 5m34sTest / Sandbox (race detector) (push) Successful in 5m50sTest / Hpkg (push) Successful in 6m43sTest / Hakurei (race detector) (push) Successful in 6m50sTest / Flake checks (push) Successful in 1m34sreleased this
2025-11-06 01:37:15 +09:00 | 1050 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 2m55sTest / Create distribution (push) Successful in 43sTest / Sandbox (push) Successful in 1m39sTest / Hakurei (race detector) (push) Successful in 3m13sTest / Hpkg (push) Successful in 4m58sTest / Hakurei (push) Successful in 4m49sTest / Sandbox (race detector) (push) Successful in 2m20sTest / Flake checks (push) Successful in 1m33sreleased this
2025-09-28 21:58:19 +09:00 | 1222 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 successfulTest / Create distribution (push) Successful in 44sRelease / Create release (push) Successful in 52sTest / Sandbox (push) Successful in 2m14sTest / Hakurei (push) Successful in 3m14sTest / Hpkg (push) Successful in 4m20sTest / Sandbox (race detector) (push) Successful in 4m43sTest / Hakurei (race detector) (push) Successful in 5m55sTest / Flake checks (push) Successful in 2m8sreleased this
2025-08-26 03:33:45 +09:00 | 1298 commits to master since this releaseDownloads
-
v0.2.0
StableAll checks were successfulTest / Create distribution (push) Successful in 47sRelease / Create release (push) Successful in 55sTest / Sandbox (push) Successful in 2m29sTest / Sandbox (race detector) (push) Successful in 4m30sTest / Hpkg (push) Successful in 5m10sTest / Hakurei (race detector) (push) Successful in 5m19sTest / Hakurei (push) Successful in 3m57sTest / Flake checks (push) Successful in 1m42sreleased this
2025-08-26 02:23:59 +09:00 | 1300 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 44sRelease / Create release (push) Successful in 51sTest / Sandbox (push) Successful in 2m3sTest / Sandbox (race detector) (push) Successful in 4m3sTest / Hpkg (push) Successful in 4m7sTest / Hakurei (race detector) (push) Successful in 4m46sTest / Hakurei (push) Successful in 2m19sTest / Flake checks (push) Successful in 1m19sreleased this
2025-08-02 00:02:54 +09:00 | 1398 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 1m55sTest / Create distribution (push) Successful in 44sTest / Sandbox (push) Successful in 1m43sTest / Sandbox (race detector) (push) Successful in 2m25sTest / Hakurei (push) Successful in 2m47sTest / Hakurei (race detector) (push) Successful in 3m21sTest / Planterette (push) Successful in 5m15sTest / Flake checks (push) Successful in 1m17sreleased this
2025-07-29 03:11:33 +09:00 | 1413 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 successfulTest / Create distribution (push) Successful in 38sRelease / Create release (push) Successful in 46sTest / Sandbox (push) Successful in 48sTest / Sandbox (race detector) (push) Successful in 49sTest / Hakurei (push) Successful in 52sTest / Planterette (push) Successful in 51sTest / Hakurei (race detector) (push) Successful in 54sTest / Flake checks (push) Successful in 1m29sreleased this
2025-07-09 05:42:31 +09:00 | 1426 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 successfulTest / Create distribution (push) Successful in 37sRelease / Create release (push) Successful in 46sTest / Sandbox (push) Successful in 46sTest / Sandbox (race detector) (push) Successful in 47sTest / Hakurei (push) Successful in 51sTest / Planterette (push) Successful in 49sTest / Hakurei (race detector) (push) Successful in 53sTest / Flake checks (push) Successful in 1m14sreleased this
2025-07-03 03:42:58 +09:00 | 1426 commits to master since this releaseInitial Hakurei release.
Downloads