Releases: davmac314/dinit
v0.13.0: Alpha release #4
Dinit is very close to being feature-complete.
This is the fourth Alpha release. It contains a number of improvements and new features over the previous release.
NOTE: This release has some minor backwards-incompatible changes. Please read these notes carefully.
This release includes changes contributed by Daniel Kolesa.
Changes:
- A new dinitctl subcommand, "status", can be used to query extended status information for an individual service.
- The default directory for user services has moved to
~/.config/dinit.d
(rather than~/dinit.d
). - Some service settings now expand environment variables (given in the form
$VARNAME
, in any location that it appears within the setting value). The affected settings are:socket_path
,logfile
,env_file
,working_dir
andpid_file
. - The variable substitution in command lines (which remains dependent on the
sub-vars
load option, for now) uses the same substitution rules and logic as for other settings. In particular, this means that a variable expansion can occur as part of a command line argument (previously it always replaced whole arguments). - The dinitctl program now uses the value of the
DINIT_SOCKET_PATH
environment variable, if set, as the default control socket path. (If not set, behaviour is the same as for previous versions). - A
poweroff
symlink for shutdown will be installed alongside other symlinks (reboot
,halt
etc). This allows integration in environments that expect such a command to be available.
v0.12.0: Alpha release #3
This is the third Alpha release, issued as a follow-up to the previous Alpha
releases. It contains a number of minor improvements.
Changes:
- A new "--ignore-unstarted" option to dinitctl, causing it to return success when attempting to restart a service which is not started (including when no service description for it exists).
- Add an "always-chain" service option, so that chaining to another service (as specified via the "chain-to" setting) becomes unconditional.
Feature contributed by Alexander Sherikov. - Add support for multiple service directories to be specified (via multiple --services-dir options).
Feature contributed by Alexander Sherikov. - Improve control socket creation / stale socket removal. Previously, a system instance would unconditionally unlink a pre-existing socket file, and non-system instances would fail if a pre-existing socket file existed (even if it was not active, i.e. no dinit instance was accepting connections on it). Now, if there is an existing socket file, dinit will attempt to connect to it, and will refuse to start if this succeeds, or unlink it otherwise. Unfortunately this cannot be done atomically, so it should not be relied on as a general means to prevent more than one instance of dinit from starting.
v0.11.0: Alpha release #2
This is a second Alpha release, issued as a follow-up to the previous Alpha release. It contains some minor bugfixes and a number of other improvements (all detailed below).
Important: the default system socket location has changed. If version 0.11 of shutdown, halt etc are installed, they may not be able to communicate with the already-running (v0.10.0 or prior) dinit daemon. In this case, to shut the system down, use:
dinitctl -p /dev/dinitctl shutdown
Important: the "no-sigterm" option has been removed. To specify that no SIGTERM signal should be sent to a process to stop it, specify a different signal (or "none") via the "term-signal" setting. It is no longer possible to have both SIGTERM and an additional signal sent, but the settings should be less confusing.
Changes:
- dinit and dinitctl now support --version command line argument.
- Improved diagnostic message if a service description file exists but can't be opened.
- Default system socket location has changed from /dev/dinitctl to /run/dinitctl (see note above).
- Active status is indicated in "dinitctl list" output. Square brackets indicate a service is marked active (i.e. it has been explicitly started) and curly brackets indicate a service that has started due to being the dependent of an active service.
- The "dinitcheck" utility now performs a number of additional checks.
- Better feedback is provided for various "dinitctl" commands. The affected service name is reported for any status update.
- Fixed bug processing rlimit settings.
- Fixed issue with interpreting unwanted command line parameters passed from linux kernel as service names.
v0.10.0: Alpha release
This release is a major step towards a version-1.0 release. It should be considered an Alpha release; core functionality is complete but some ancillary functionality is still unimplemented. It is believed to be of good quality but bugs may be present.
- When not running as system init, dinit will now fail to start if the control socket cannot be opened. In particular this should prevent accidentally starting multiple instances of dinit (and all services).
- Services of type bgproc will no longer load if the pid-file setting is not supplied. Previously such services could be started, but stopping them would leave the process running.
- Re-worked manual service stop (via command). Previously, manually stopping a service would inhibit automatic restart of the service, but not of its dependents; this meant that the service might still restart due to a dependent. In this version, manually stopping a service inhibits restart of the service and all dependents (note that the --force option is required, as previously, in order to stop a service which has active dependents).
- Re-worked soft dependency handling slightly. A dependency now (re-)attaches to its dependent if it starts (or starts again) while the dependent is started. This leads to overall more consistent behaviour (and is simpler to implement properly).
- Re-worked pinning. A service that is pinned stopped can now prevent dependents from starting (the behaviour is the same as if the service failed to start).
- Support start-timeout setting for process services. Previously this setting was ignored for such services. It is mostly useful for services which also have readiness notification configured (since otherwise, a process service is considered started as soon as it begins execution).
- If a process-based service fails to restart, restart of dependent services will be inhibited. This should prevent repeated attempts to launch a failing process caused by a restarting dependent service.
- Fixed some cases where service target state would not be set correctly. This could cause output of "dinitctl list" to incorrectly show that a service would restart after stopping, when in fact it would remain stopped.
- Fixed various corner-case bugs in service management.
v0.9.1: Development release with bug fix
This is a bug-fix release.
- Fix a service getting stuck in the "stopping" state, if a dependent is set to auto-restart ("restart = true").
v0.9.0: Development release with minor new features
This release includes some new features, and bugfixes.
- The service specified via the "chain-to" setting will now only be started if the initiating service completes successfully, i.e. if it terminates normally (with an exit code of 0) and only if it is not manually stopped.
- New option "--container" (-o) inhibits system management functions (such as machine shutdown/restart) that are normally enabled when dinit runs as process ID 1. A complementary "--system-mgr" (-m) option enables system management (even when not running as PID 1).
- Fixed pinned-started services stopping when released by a dependent service, instead of remaining in the started state, and some other bugs related to pinning. Some issues may remain to be fixed in a later release.
v0.8.2: Development release with bugfixes
This is a bug-fix release.
- Fixed group not being set correctly when "run-as" or "socket-uid" were used.
- Fixed "dinitctl rm-dep" command
- Fixed bug preventing shutdown when auto-restart services were configured
- Fixed smooth recovery of bgprocess services
v0.8.1: development release with bugfixes
This is a bug-fix release, fixing some significant bugs which found their way into the 0.8.0 release.
- Fixed crash on service load error.
- Fixed an unchecked allocation leading to possible unexpected termination.
- Fixed a slow memory leak (in the bundled Dasynq library).
- Fixed --help option for "dinitcheck" not working.
- Fixed badly formatted error message from process launch failure.
- Fixed issue where log file would not always be flushed on exit.
- Fixed "dinitcheck" crashing if service description could not be found.
v0.8.0: development release with usability features
This release includes major usability features.
- New command "dinitcheck" checks service descriptions for errors (without attempting to load
or start the service). Checks the named service(s) and any dependencies. - Service descriptions can now be reloaded, using "dinitctl reload service-name". This works
for services which are started, with some restrictions, and for services which are stopped,
and allows dependencies to be altered. - dinitctl now defaults to the system process socket location when run as root. This means that
using '-s' is no longer necessary (it is still supported for backwards compatibility). A new
'-u' option can be used to communicate with the user daemon, if there is one.
v0.7.0: development release
This release adds a minor feature, and includes a re-work of some base functionality
(which should not affect most use cases).
- dinitctl "restart" command added. Re-starts an already-running service without affecting
activation or dependency links. - dinitctl "stop" command now requires a
--force
option if dependents of the specified
service would also need to stop. - dinitctl "wake" command now reconnects dependency links from dependents of the specified
service, and can only be used if at least one such dependent is started.