NEWS 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. == Version 0.13.0
  2. NOTE: This release has some minor backwards-incompatible changes. Please read
  3. these notes carefully.
  4. This release includes changes contributed by Daniel Kolesa.
  5. Changes:
  6. * A new dinitctl subcommand, "status", can be used to query extended status
  7. information for an individual service.
  8. * The default directory for user services has moved to ~/.config/dinit.d
  9. (rather than ~/dinit.d).
  10. * Some service settings now expand environment variables (given in the form
  11. $VARNAME, in any location that it appears within the setting value). The
  12. affected settings are: socket_path, logfile, env_file, working_dir and
  13. pid_file.
  14. * The variable substitution in command lines (which remains dependent on the
  15. 'sub-vars' load option, for now) uses the same substitution rules and logic
  16. as for other settings. In particular, this means that a variable expansion
  17. can occur as part of a command line argument (previously it always replaced
  18. whole arguments).
  19. * The dinitctl program now uses the value of the DINIT_SOCKET_PATH
  20. environment variable, if set, as the default control socket path. (If not
  21. set, behaviour is the same as for previous versions).
  22. * A "poweroff" symlink for shutdown will be installed alongside other symlinks
  23. ("reboot", "halt" etc). This allows integration in environments that expect
  24. such a command to be available.
  25. == Version 0.12.0
  26. This is the third Alpha release, issued as a follow-up to the previous Alpha
  27. releases. It contains a number of minor improvements.
  28. Changes:
  29. * A new "--ignore-unstarted" option to dinitctl, causing it to return success
  30. when attempting to restart a service which is not started (including when
  31. no service description for it exists).
  32. * Add an "always-chain" service option, so that chaining to another service
  33. (as specified via the "chain-to" setting) becomes unconditional.
  34. Feature contributed by Alexander Sherikov.
  35. * Add support for multiple service directories to be specified (via multiple
  36. --services-dir options).
  37. Feature contributed by Alexander Sherikov.
  38. * Improve control socket creation / stale socket removal. Previously, a
  39. system instance would unconditionally unlink a pre-existing socket file,
  40. and non-system instances would fail if a pre-existing socket file existed
  41. (even if it was not active, i.e. no dinit instance was accepting
  42. connections on it). Now, if there is an existing socket file, dinit will
  43. attempt to connect to it, and will refuse to start if this succeeds, or
  44. unlink it otherwise. Unfortunately this cannot be done atomically, so it
  45. should not be relied on as a general means to prevent more than one
  46. instance of dinit from starting.
  47. == Version 0.11.0
  48. This is a second Alpha release, issued as a follow-up to the previous Alpha
  49. release. It contains some minor bugfixes and a number of other improvements
  50. (all detailed below).
  51. Important: the default system socket location has changed. If version 0.11 of
  52. shutdown, halt etc are installed, they may not be able to communicate with the
  53. already-running (v0.10.0 or prior) dinit daemon. In this case, to shut the
  54. system down, use:
  55. dinitctl -p /dev/dinitctl shutdown
  56. Important: the "no-sigterm" option has been removed. To specify that no
  57. SIGTERM signal should be sent to a process to stop it, specify a different
  58. signal (or "none") via the "term-signal" setting. It is no longer possible to
  59. have both SIGTERM and an additional signal sent, but the settings should be
  60. less confusing.
  61. Changes:
  62. * dinit and dinitctl now support --version command line argument.
  63. * Improved diagnostic message if a service description file exists but
  64. can't be opened.
  65. * Default system socket location has changed from /dev/dinitctl to
  66. /run/dinitctl (see note above).
  67. * Active status is indicated in "dinitctl list" output. Square brackets
  68. indicate a service is marked active (i.e. it has been explicitly started)
  69. and curly brackets indicate a service that has started due to being the
  70. dependent of an active service.
  71. * The "dinitcheck" utility now performs a number of additional checks.
  72. * Better feedback is provided for various "dinitctl" commands. The affected
  73. service name is reported for any status update.
  74. * Fixed bug processing rlimit settings.
  75. * Fixed issue with interpreting unwanted command line parameters passed from
  76. linux kernel as service names.
  77. == Version 0.10.0
  78. This release is a major step towards a version 1.0 release. It should be
  79. considered an Alpha release; core functionality is complete but some
  80. ancillary functionality is still unimplemented. It is believed to be of
  81. good quality but bugs may be present.
  82. * When not running as system init, dinit will now fail to start if the control
  83. socket cannot be opened. In particular this should prevent accidentally
  84. starting multiple instances of dinit (and all services).
  85. * Services of type bgproc will no longer load if the pid-file setting is not
  86. supplied. Previously such services could be started, but stopping them would
  87. leave the process running.
  88. * Re-worked manual service stop (via command). Previously, manually stopping
  89. a service would inhibit automatic restart of the service, but not of its
  90. dependents; this meant that the service might still restart due to a
  91. dependent. In this version, manually stopping a service inhibits restart
  92. of the service and all dependents (note that the --force option is required,
  93. as previously, in order to stop a service which has active dependents).
  94. * Re-worked soft dependency handling slightly. A dependency now (re-)attaches
  95. to its dependent if it starts (or starts again) while the dependent is
  96. started. This leads to overall more consistent behaviour (and is simpler
  97. to implement properly).
  98. * Re-worked pinning. A service that is pinned stopped can now prevent dependents
  99. from starting (the behaviour is the same as if the service failed to start).
  100. * Support start-timeout setting for process services. Previously this setting
  101. was ignored for such services. It is mostly useful for services which also
  102. have readiness notification configured (since otherwise, a process service is
  103. considered started as soon as it begins execution).
  104. * If a process-based service fails to restart, restart of dependent services
  105. will be inhibited. This should prevent repeated attempts to launch a failing
  106. process caused by a restarting dependent service.
  107. * Fixed some cases where service target state would not be set correctly. This
  108. could cause output of "dinitctl list" to incorrectly show that a service would
  109. restart after stopping, when in fact it would remain stopped.
  110. * Fixed various corner-case bugs in service management.
  111. == Version 0.9.1
  112. This is a bug-fix release.
  113. * Fix a service getting stuck in the "stopping" state, if a dependent is
  114. set to auto-restart ("restart = true").
  115. == Version 0.9.0
  116. This release includes some new functionality and a rework of the chain-load
  117. mechanism.
  118. * The service specified via the "chain-to" setting will now only be started
  119. if the initiating service completes successfully, i.e. if it terminates
  120. normally (with an exit code of 0) and only if it is not manually stopped.
  121. * New option "--container" (-o) inhibits system management functions (such
  122. as machine shutdown/restart) that are normally enabled when dinit runs as
  123. process ID 1. A complementary "--system-mgr" (-m) option enables system
  124. management (even when not running as PID 1).
  125. * Fixed pinned-started services stopping when released by a dependent
  126. service, instead of remaining in the started state, and some other bugs
  127. related to pinning. Some issues may remain to be fixed in a later release.
  128. == Version 0.8.2
  129. This is a bug-fix release.
  130. * Fixed group not being set correctly when "run-as" or "socket-uid" were used.
  131. * Fixed "dinitctl rm-dep" command
  132. * Fixed bug preventing shutdown when auto-restart services were configured
  133. * Fixed smooth recovery of bgprocess services
  134. == Version 0.8.1
  135. This is a bug-fix release.
  136. * Fixed crash on service load error.
  137. * Fixed an unchecked allocation leading to possible unexpected termination.
  138. * Fixed a slow memory leak (in the bundled Dasynq library).
  139. * Fixed --help option for "dinitcheck" not working.
  140. * Fixed badly formatted error message from process launch failure.
  141. * Fixed issue where log file would not always be flushed on exit.
  142. * Fixed "dinitcheck" crashing if service description could not be found.
  143. == Version 0.8.0
  144. This release includes major usability features.
  145. * New command "dinitcheck" checks service descriptions for errors (without attempting to load
  146. or start the service). Checks the named service(s) and any dependencies.
  147. * Service descriptions can now be reloaded, using "dinitctl reload <service-name>". This works
  148. for services which are started, with some restrictions, and for services which are stopped,
  149. and allows dependencies to be altered.
  150. * dinitctl now defaults to the system process socket location when run as root. This means that
  151. using '-s' is no longer necessary (it is still supported for backwards compatibility). A new
  152. '-u' option can be used to communicate with the user daemon, if there is one.
  153. == Version 0.7.0
  154. This release adds a minor feature, and includes a re-work of some base functionality
  155. (which should not affect most use cases).
  156. * dinitctl "restart" command added. Re-starts an already-running service without affecting
  157. activation or dependency links.
  158. * dinitctl "stop" command now requires a `--force` option if dependents of the specified
  159. service would also need to stop.
  160. * dinitctl "wake" command now reconnects dependency links from dependents of the specified
  161. service, and can only be used if at least one such dependent is started.
  162. == Version 0.6.1:
  163. This is a bug-fix release with several minor fixes:
  164. * Resource limits were not properly being set.
  165. * Prevent early termination when standard input is closed or set to a device which cannot
  166. be watched for input.
  167. * Control protocol fix, possibly not affecting any real usage.
  168. == Version 0.6.0:
  169. This release adds a number of minor features:
  170. * Better behaviour when boot fails. User can choose an action from reboot, resume boot process,
  171. start the "recovery" service, or power-off.
  172. * New service settings for limiting resources at the process level: "rlimit-nofile",
  173. "rlimit-core", "rlimit-data", "rlimit-addrspace". Both hard and soft limits can be set.
  174. See dinit-service(5) for details.
  175. * New "env-file" setting allows per-setting environment to be specified via a file. The file
  176. is re-read each time the service process is started.
  177. * Added a "--quiet" option to suppress console output from Dinit.
  178. * Dinit when run as a user daemon no longer logs via syslog. Logging to file can still be
  179. enabled via the "-l"/"--log-file" option.
  180. * Added a "--socket-path"/"-p" option to dinitctl, to specify the socket path for communication
  181. with the dinit daemon.
  182. A number of minor bugfixes and other improvements are also implemented. An integration test
  183. framework has been added with a small number of tests, to complement the existing unit tests.
  184. == Version 0.5.2:
  185. This is a bug-fix release for several minor issues which have been found in the preceding
  186. release (0.5.1).
  187. * Fix logging failure after log buffer becomes full.
  188. * Fix readiness-fd notification not immediately updating service states.
  189. * Fix use of old settings in sample configuration for Linux.
  190. * Re-create control socket file node if it "disappears". Should solve issues if root filesystem
  191. is mounted read-write on boot.
  192. * Fix potential issue with service launch failure for services using a fixed notification fd.
  193. == Version 0.5.1:
  194. This is a bug-fix release for several issues of varying severity which have been found in the
  195. preceding release.
  196. * Improved logging behaviour when a service runs "on console" for a very short time.
  197. * Fix for crash due to SIGALRM on OpenBSD.
  198. * Fixes for compiling with Musl C library.
  199. * Fix dinitctl "enable" and "disable" commands when path to service directory is absolute.
  200. * "termsignal" setting renamed "term-signal" and now supports "KILL" signal. "termsignal"
  201. is still supported for compatibility with existing service descriptions.
  202. * Other minor fixes.
  203. == Version 0.5.0:
  204. This version adds S6-compatible readiness notification support, and adds support for updating
  205. the "utmp" database when services start/stop (this functionality should be avoided if possible
  206. since the "utmp" database is mostly an historical artifact, and system support is often prone
  207. to issues which allow unprivileged users to prevent updates and deny or delay logins; however,
  208. utilities such as "who" may depend on the database being updated appropriately).
  209. Other changes:
  210. * Add "-u" command line option to force running dinit as a user instance.
  211. * Add a "chain-to" service property to better support recovery services.
  212. * Add a "shares-console" service option to allow running services "on the console" without having
  213. them own it exclusively.
  214. * Add "inittab-id" and "inittab-line" service settings for utmp support.
  215. * Minor bugfixes.
  216. == Version 0.4.0:
  217. This version focuses on being more "distribution friendly". It adds mechanisms to add and remove
  218. dependencies, either temporarily or persistently, between services without manual editing of
  219. service description files.
  220. Changes:
  221. * A new service description directive, "waits-for.d", allows specifying a directory for which the
  222. contents (filenames) are read as dependencies. This provides a convenient way to add and remove
  223. dependencies to service descriptions without editing the textual service description file.
  224. * dinitctl has new commands, "add-dep" and "rm-dep", to add or remove a dependency between
  225. services. The dependency is not persisted and won't survive a restart. Check the man page for
  226. details.
  227. * dinitctl has new commands, "enable" and "disable". These permanently enable/disable
  228. a service for some target ("boot" by default) by creating/destroying a symbolic link
  229. in the waits-for.d directory specified in the service description (and create/remove
  230. waits-for dependency dynamically). Check the man page for details.
  231. * A code style guide has been added (in the "doc" directory).
  232. * More tests, minor bugfixes.