NEWS 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. -*- org -*-
  2. #+TITLE: GNU Shepherd NEWS — history of user-visible changes
  3. #+STARTUP: content hidestars
  4. Copyright © 2002, 2003 Wolfgang Jährling
  5. Copyright © 2013, 2014, 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
  6. Copying and distribution of this file, with or without modification,
  7. are permitted in any medium without royalty provided the copyright
  8. notice and this notice are preserved.
  9. Please send Shepherd bug reports to bug-guix@gnu.org.
  10. * Changes in version 0.8.1
  11. ** Fix race condition that could lead shepherd to stop itself
  12. (<https://bugs.gnu.org/40981>)
  13. ** Use ‘signalfd’ on GNU/Linux to improve efficiency and simplify code
  14. ** Outdated bits have been removed from the manual
  15. ** Updated translation: sv
  16. * Changes in version 0.8.0
  17. ** Kill the whole process group when the PID file doesn’t show up
  18. (<https://bugs.gnu.org/40672>)
  19. ** ‘make-kill-destructor’ kills the process group
  20. ** New ‘default-pid-file-timeout’ SRFI-39 parameter
  21. ** New #:file-creation-mask parameter for ‘make-forkexec-constructor’
  22. ** ‘make-forkexec-constructor’ creates log files as #o640
  23. (<https://bugs.gnu.org/40405>)
  24. ** Improve documentation and examples
  25. ** Ensure man pages are up to date
  26. (<https://bugs.gnu.org/39694>)
  27. ** Fix compilation on systems without ‘prctl’ such as GNU/Hurd
  28. ** Remove kludge that would send SIGALRM every second
  29. ** Address “error in finalization thread” warning
  30. ** ‘make-forkexec-constructor’ no longer supports old calling convention
  31. The first argument must be a list of strings. Passing several strings has
  32. been deprecated since 0.1.
  33. * Changes in version 0.7.0
  34. ** New crash handler allows shepherd as PID 1 to dump core on GNU/Linux
  35. ** (shepherd service) now exports ‘default-environment-variables’
  36. ** ‘make-forkexec-constructor’ no longer removes log file
  37. ** Disable reboot on ctrl-alt-del before loading the config file
  38. (<https://bugs.gnu.org/35996>)
  39. ** Exception handling adjusted for Guile 3.0.0
  40. * Changes in version 0.6.1
  41. ** ‘herd status’ distinguishes between “stopped” and “one-shot” services
  42. ** ‘read-pid-file’ gracefully handles PID files not created atomically
  43. (<https://bugs.gnu.org/35550>)
  44. ** ‘shepherd’ no longer crashes when asked to load files with syntax errors
  45. (<https://bugs.gnu.org/35631>)
  46. ** New translations: de, sk
  47. ** Updated translations: da, es, fr, pt_BR
  48. * Changes in version 0.6.0
  49. ** Services can now be “one-shot” (see the manual for details)
  50. ** ‘shepherd’ deletes its socket file upon termination
  51. ** ‘herd stop S’ is no longer an error when S is already stopped
  52. ** ‘herd’ exits with non-zero when executing an action that fails
  53. ** ‘shepherd’ ignores reboot(2) errors when running in a container
  54. ** Translation of error messages has been fixed
  55. ** New translation: ta (Tamil)
  56. ** Updated translations: da, es, fr, pt_BR, sv, ta, uk, zh_CN
  57. * Changes in version 0.5.0
  58. ** Services now have a ‘replacement’ slot
  59. ** Restarting a service now restarts its dependent services as well
  60. ** Gracefully halt upon ctrl-alt-del when running as PID 1 on GNU/Linux
  61. ** Actions can now be invoked on services not currently running
  62. ** Guile >= 2.0.13 is now required; Guile 3.0 is supported
  63. ** Unused runlevel code has been removed
  64. ** Updated translations: es, fr, pt_BR, sv
  65. * Changes in version 0.4.0
  66. ** When running as non-root, keep track of forked processes
  67. ** When running as root, log to /dev/log (syslogd) or /dev/kmsg by default
  68. ** ‘exec-command’ opens log file in append mode
  69. ** Add native language support (5 languages currently supported)
  70. ** ‘log-output-port’ is now a SRFI-39 parameter
  71. ** New ‘make-shepherd-output-port’ in lieu of ‘shepherd-output-port’
  72. ** Fix non-deterministic test suite issues
  73. * Changes in version 0.3.2
  74. ** ‘herd status’ displays a bullet list
  75. ** No longer crash when ‘enable’ & co. are passed a wrong argument number
  76. (<http://bugs.gnu.org/24684>)
  77. ** ‘make-forkexec-constructor’ has a new #:pid-file-timeout parameter
  78. ** Processes that failed to create their PID file are now killed
  79. ** .go files are now installed in LIBDIR/guile/2.X/site-ccache
  80. ** Build system supports compilation with Guile 2.2
  81. * Changes in version 0.3.1
  82. ** Process respawn limit is honored again (regression introduced in 0.3)
  83. ** ‘herd status SERVICE’ displays the last respawn time, if any
  84. ** (shepherd service) exports ‘&action-runtime-error’ and related bindings
  85. ** ‘mkdir-p’ adjusted to cope with GNU/Hurd file system behavior
  86. * Changes in version 0.3
  87. ** GNU dmd becomes the GNU Shepherd
  88. The GNU Shepherd herds your daemons!
  89. See http://www.gnu.org/software/shepherd/#history for details.
  90. As a side effect, many incompatible changes were made:
  91. - The ‘dmd’ command was renamed to ‘shepherd’.
  92. - The ‘deco’ command was renamed to ‘herd’.
  93. - The default system-wide config file is now /etc/shepherd.scm.
  94. - The default per-user config file is now ~/.config/shepherd/init.scm.
  95. - The special ‘dmd’ service is now called ‘root’ and ‘shepherd’. Thus,
  96. instead of:
  97. deco load dmd foo.scm
  98. you would now type:
  99. herd load root foo.scm
  100. - Guile modules now live in the (shepherd …) name space.
  101. ** ‘herd status’ and ‘herd detailed-status’ assumes the ‘root’ service
  102. That is, ‘herd status’ is equivalent to ‘herd status root’.
  103. ** ‘herd help’ returns a meaningful help message
  104. ** ‘shepherd’ stops itself when it receives SIGINT
  105. This is what happens when ‘shepherd’ is running as PID 1 on GNU/Linux and
  106. ctrl-alt-del is pressed (see ctrlaltdel(8)).
  107. ** ‘halt’ and ‘reboot’ connect to the system socket unconditionally
  108. ** ‘herd’ uses a non-zero exit code upon errors
  109. ** The ‘root’ service has a new ‘eval’ action
  110. ** Basic man pages are now provided
  111. ** ‘make-forkexec-constructor’ has new #:group and #:user parameters
  112. ** ‘make-forkexec-constructor’ has a new #:pid-file parameter
  113. ** (shepherd services) now exports ‘make-actions’ and ‘provided-by’
  114. ** ‘shepherd --pid=FILE’ writes FILE atomically
  115. ** The communication protocol is now entirely sexp-based (see the manual)
  116. ** ‘shepherd’ is more robust to misbehaving clients
  117. ** Cross-compilation is now supported
  118. ** The build system uses “silent rules” by default
  119. ** Internally, the coding style of various parts has been improved
  120. * Changes in version 0.2
  121. ** Non-root configuration file is now ~/.dmd.d/init.scm.
  122. For unprivileged uses of dmd, the configuration file used to be
  123. ~/.dmdconf.scm. It is now ~/.dmd.d/init.scm
  124. ** Generate template configuration file when none is found.
  125. A ~/.dmd.d/init.scm template configuration file is now generated when
  126. dmd is started and no such file exists.
  127. ** The 'dmd' service has new 'unload' and 'reload' actions.
  128. The 'unload' action allows a service to be stopped and its definition to
  129. be unloaded; 'reload' allows a service to be unloaded, and a new
  130. redefinition to be reloaded, atomically. See the manual for details.
  131. ** 'make-forkexec-constructor' has a new calling convention.
  132. In particular, the procedure now has #:environment-variables
  133. and #:directory arguments. See the manual for details.
  134. ** New 'exec-command' and 'fork+exec-command' convenience procedures.
  135. ** The 'status' action displays the running value of services (the PID.)
  136. ** 'dmd' has a new '--pid' option.
  137. ** Failures to connect to dmd are gracefully handled.
  138. ** Data is always appended to the log file.
  139. ** Assorted bug fixes and documentation improvements.
  140. * Changes in version 0.1
  141. ** A single socket is used for communication with dmd, with a new protocol.
  142. The new communication protocol between 'dmd' and 'deco' is simpler,
  143. versioned, and extensible.
  144. ** The default socket name is now independent of the calling user.
  145. ** The socket directory is now created under $(localstatedir).
  146. ** The 'dmd' service has new actions 'power-off' and 'halt'; 'stop' reboots
  147. When dmd is running as root, as is the case when it is used as a
  148. PID-one init system, these actions allow 'root' to cleanly reboot or
  149. halt the machine.
  150. ** New 'reboot' and 'halt' commands.
  151. ** 'dmd' only write to stdout when no client is connected.
  152. ** The configuration file is loaded in a fresh module.
  153. ** 'make-forkexec-constructor' closes all file descriptors after forking.
  154. ** License upgraded to GPL version 3 or later.
  155. ** Manual license upgraded to FDL version 1.3 or later.
  156. ** Many bug fixes, documentation improvements, etc.
  157. * Changes in version -0.4
  158. ** Awaken from a 10-year nap.
  159. ** Ported to Guile 2.0.
  160. ** Modules are modules instead of being loaded.
  161. ** Build system fixes, cleanups, and upgrades.
  162. * Changes in version -0.5
  163. ** dmd: `--socket=-' instead of `--socket=none'.
  164. ** Renamed `extra-action' to plain `action'.
  165. ** The result of user-defined stop code is ignored now.
  166. ** New action for all services: `dmd-status'.
  167. ** Distribution contains file `QUESTIONS'.
  168. ** Improved the `unknown' service implementation in `examples/'.
  169. ** Number of args given to actions is verified.
  170. ** Made docstrings for actions optional.
  171. ** Renamed `{en,dis}able-persistency' to `{,no-}persistency'.
  172. ** Can pass file name to dmd action `persistency'.
  173. * Changes in version -0.6
  174. ** New action `doc' for displaying documentation.
  175. ** `list-actions' is a sub-action of `doc' now.
  176. ** New action `cd' for dmd, useful with `--socket=none'.
  177. ** Distribution contains example for an `unknown' service.
  178. ** At configure time, dmd checks for a Guile installation.
  179. ** Enable readline on `--socket=none' and non-dumb terminal.
  180. ** Startup time finally became completely unacceptable. :-)
  181. * Changes in version -0.7
  182. ** Can fork into background via dmd extra-action `daemonize'.
  183. ** New action for all services: list-actions.
  184. ** New options for dmd: --logfile (-l), and --silent/--quiet
  185. ** Standard option --usage works for both dmd and deco.
  186. ** You can pass relative file names to deco.
  187. ** Never send respawn-output to deco by accident.
  188. ** Better handling of terminals and similar services.
  189. ** Documented evolution of runlevels.
  190. ** Service groups can be used to start/stop services at once.
  191. ** Persistency (i.e. safe state on exit and restore next time).
  192. ** Invoke actions of service `unknown' (if defined) as fallback.
  193. ** Read commands from standard input if socket file name is `none'.
  194. * Changes in version -0.8
  195. ** Show output in deco, not only in dmd.
  196. ** New options in deco: --insecure (-I) and --result-socket (-r)
  197. ** --help displays the options for both dmd and deco.
  198. ** Disable services which are respawning too fast.
  199. ** New actions for all services: enable, disable and enforce.
  200. ** Default extra actions work even when the service is stopped.
  201. ** Documented some internals of dmd.
  202. * Changes in version -0.9
  203. ** Example configuration added.
  204. ** New option for deco: --socket (-s).
  205. ** New option for dmd: --insecure (-I).
  206. ** Added tutorial and completed documentation.
  207. ** Create default socket dir on startup if desired.
  208. ** Added a real build system.
  209. * Changes in Version -0.9.6
  210. ** Controlling dmd completely with deco is now possible.
  211. ** A few bugfixes for service handling.
  212. ** Long options can be abbreviated, short ones also work.
  213. ** Respawning of services works.
  214. * Changes in version -0.9.7
  215. ** User-defined code is always protected with a `catch'.
  216. ** New options: --config and --socket.
  217. ** The new deco program can be used to send commands to dmd.
  218. * Changes in version -0.9.8
  219. ** Starting and stopping of services by symbol works better.
  220. ** Performing extra actions on services possible.
  221. ** Improved documentation.
  222. ** More detailed output.
  223. * Version -0.9.9
  224. ** Initial release.