aboutsummaryrefslogtreecommitdiff
path: root/NEWS
blob: 265ca26291f85bd40b752c3f91d94c3ed4abfdcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
GNU Pies NEWS -- history of user-visible changes. 2023-07-30
See the end of file for copying conditions.

Please send Pies bug reports to <bug-pies@gnu.org>.

Version 1.8.90 (git)

* return-code statement accepts negations

Negated status codes or signal numbers can appear in the argument
list to the "return-code" command.  The syntax is:

  !0       any status code except 0
  !EX_OK   same as above
  !SIGQUIT any signal except SIGQUIT
  !SIG+10  any signal except 10

For example, the following statement:

  return-code (!0, !SIGHUP, !SIGQUIT) {
	notify root;
  }

will notify root user if the program exits with any status, except 0
or gets terminated with any signal, except SIGHUP and SIGQUIT.


Version 1.8, 2022-08-13

* New configuration keywords

** sigterm SIG

Available for use in "component" sections.  This statement defines
signal which pies should send to the running component instance in
order to terminate it.  Defaults to SIGTERM.

* Fix the component shutdown sequence

The shutdown sequence is determined taking into account dependencies
between components, so that all dependent components are stopped
before their prerequisite components.

* Fallback log file

Fallback log file is a place where pies writes out of band log messages,
i.e. messages about not being able to open syslog socket or send logs
to it.  Regular log messages are diverted to this file if syslog was
requested, but cannot be used because of a permanent error.

* Bugfixes

** Fix piesctl config reload

** Fix configuration preprocessing.

** Varios fixes in REST API server.

Version 1.7, 2022-01-02

* Changes in configuration preprocessing

** Each included file is preprocessed separately.

The built-in preprocessor is removed.  The #include and #include_once
statements are now regular configuration statements.  Any files
included as a result of #include or #include_once are preprocessed
separately.  This differs from prior versions, were all includes were
expanded first, the obtained material passed to the m4 and the
resulting output was then parsed.

This means that:

1. The mess with two preprocessors (built-in and external) is now
gone.

2. Macros defined in a source file don't pollute the namespace of
another sources.

3. Error locations can be accurately determined.

4. Preprocessor can emit forceful diagnostics (see below) to properly
identify erroneous or otherwise suspicious constructs.

** The `pp-setup' file is gone.

By default, the preprocessor is started as `m4 -s -P' with additional
set of -I options and eventual -D or -U options if these are used in
the command line of pies.  Apart from this, no additional set up is
performed.

** The precedence of -I options is fixed

The -I options are placed in the m4 command line before the options
that configure the default search path.

* New forceful diagnostics statements

** #warning "TEXT"

Emits warning.

** #error "TEXT"

Emits error message.  Further parsing continues, but will end with
failure.

** #abend "TEXT"

Emits error message and stops further processing immediately.

If `#error' or `#abend' is encountered, the effect is the same
as if syntax error has been detected.  If it occurs at pies
startup, the program will terminate abnormally.  If it occurs as
part of the reload sequence in a running instance of pies, the
configuration file will be rejected and old configuration will remain
in effect.

Version 1.6, 2021-07-07

* Selecting preprocessor from the command line.

Two command line options are provided to select the preprocessor to
use instead of the default m4.  The --preprocessor=COMMAND option
instructs pies to use COMMAND as preprocessor.  The --no-preprocessor
option disables the use of the external preprocessor.

The new command line options are available both in pies and in the
client program piesctl.

* piesctl: fix order in which configuration files are examined

As stated in the documentation, program-specific configuration
file piesctl.conf takes precedence over pies.conf.

* Fix reloading of the configuration files.

* Fix compilation with --disable-sysvinit

Version 1.5, 2020-12-14

* Detect if pies is started from docker

This makes the --no-init option unnecessary.

* When running with PID 1, install SIGCHLD handler early

This is to make sure the exited preprocessor command is cleaned up
properly.

* Fix cyclic dependency detection

* New component flag: expandenv

The "expandenv" flag instructs pies to parse the command line
and to expand any references to environment variables within it
as the Bourne shell would have done it.  This allows for expanding
the environment variables without the overhead of actually running
the shell.

This flag is incompatible with the "shell" flag.  When both are used,
the preference is given to "shell" and a warning message to that
effect is issued.

* Component standard stream redirection rewritten from scratch

In particular, redirecting stdout/stderr to syslog no longer requires
starting an auxiliar process.

* The component.facility configuration statement is withdrawn

To specify a particular facility, use the fully qualified
facility.priority argument to the stdout or stderr statement, e.g.:

  stderr syslog local1.err;

* New configuration statement syslog.dev

The statement configures the socket to communicate with the syslog
daemon.  Its argument is either the file name of the local socket
or the IP[:PORT] specification, e.g.

  syslog {
     dev 172.31.255.252;
  }

* Global env section

The "env" section appearing in global context modifies the environment
for the main pies process.  This modified environment will be
inherited by all processes started by pies in the course of its normal
operation.

* New control endpoint /alive

HTTP response to GET /alive/PROG reflects the current state of the
component PROG: 200 if it is running, 503 if not, and 404 if there's
no such component.


Version 1.4, 2019-07-02

* New option --no-init

The --no-init option instructs pies not to switch to init mode if its
PID is 1.  Use this option if you run pies as a process manager in a
docker container.

* New component modes: startup and shutdown

Startup components are run right after pies startup. Any other
components start running only after last startup component has terminated.

Shutdown components are executed at program shutdown, after
all other components have been terminated.

Any number of startup or shutdwon components can be defined in the
configuration file. Such multiple components are run simultaneously,
unless required otherwise by their "prerequisites" and "dependents"
statements. 

* New component flag: shell

The 'shell' flag instructs pies to run the component via "/bin/sh -c
$command". Use it if the command should undergo variable expansion,
contains redirections, pipes, etc. E.g.

  component X {
    flags shell;
    command "if [ -n \"$X\" ]; then foo; else bar; fi"
  }

* Improved cyclic dependency diagnostics

* New 'env' statement

The 'env' statement has been re-implemented as a compound statement.
It can contain the following sub-statements:

** clear
Clears the environment

** keep NAME
Keeps the variable NAME when clearing the environment. Implies
"clear". NAME can be a globbing pattern, in which case all
variables matching the pattern are retained.

** set "NAME=VALUE"
Sets the environment variable for the component. VALUE is subject
to variable expansion.

** eval "VALUE"
Perform variable expansion on VALUE and discard the result (similar
to the shell ":" command). Useful for side effects, e.g.:

  eval ${HOME:=/home/t}

** unset NAME
Unsets the variable. NAME can be a globbing pattern, in which case all
variables matching the pattern are unset.

Example:

 env {
   clear;
   keep PATH;
   keep MANPATH;
   keep "LC_*";
   set "MANPATH=$MANPATH${MANPATH:+:}/usr/local/man";
 }

* Legacy 'env' statement.

Support for the old one-line syntax of "env" is retained for
backward compatibility.

Previous versions applied unnecessary word splitting if given a
single argument. This is now fixed, so that e.g. the following
statement is processed correctly and defines a single variable
X to have the value "foo bar":

  env "X=foo bar"

* New environment variable available for commands started from return-code

Programs started via "exec" statement in the "return-code" block
obtain the PID of the master pies process in environment variable
PIES_MASTER_PID.

* Improved testsuite


Version 1.3, 2016-10-01

* SysV-style Init 

GNU Pies can now be used as init process daemon - the first process
started during booting.  The configuration can be supplied both as
a traditional /etc/inittab file or as a native GNU Pies configuration
file.  The control interface provides extensive monitoring and
management capabilities.

* Control interface

The running GNU Pies instance can be queried and reconfigured on the
fly via a TCP socket (either UNIX or INET).  Special utility, piesctl,
is included, which provides  command line interface for inspecting
the state of components, reloading configuration (including addition
or removal of configuration files on the fly), stopping and restarting
components, etc.

* Changes in configuration

Two new flags are provided:

- siggroup

This flag instructs pies to send termination signal to the process
group of the process being stopped.

- nullinput

Do not close standard input.  Redirect it from /dev/null
instead.   Use this option with commands that require their standard
input to be open (e.g. pppd nodetach).

** String concatenation

The adjacent string concatenation feature proved to create more
problems than solutions (in particular, with the "env" statement)
and was removed.


Version 1.2, 2009-12-11

* First release as a GNU package.

* Full inetd support

The program supports all types of services (including built-in
ones) and all types of protocols offered by the traditional `inetd'
utility.

The `inetd.conf' configuration file format is supported.  The
`inetd' configuration file may be supplied either from the command
line (see below), or via the `include-inetd' configuration statement.

* Inetd replacement

A replacement script for inetd(8) is provided.  It is fully
compatible with the traditional inetd command line, but offers
the flexibility and new features of pies.

* Configuration file handling

Several configuration files, eventually of different types,
can be specified in the command line.  New command line
option `--syntax' declares the syntax of configuration
files that follow it, e.g.:

pies --config-file /etc/pies.conf \
     --syntax=inetd --config-file /etc/inetd.conf \
     --syntax=meta1 --config-file /etc/meta1/meta1.conf

* New keywords.

Component keywords: flags, service, socket-type,
max-instances, max-rate, qotd-file.
Global keywords: state-directory, include-inetd.

* New option --instance

The `--instance' option allows you to run several instances
of pies, each of them using separate configuration and
state files.

* New option --rate

For compatibility with inetd.

* Improved status output.


Version 1.1, 2009-10-20

* Account for possible system clock inaccuracies.
* Improve documentation.
* Add Polish and Ukrainian translations.


Version 1.0, 2009-10-17

First stand-alone release.  Previous versions were released as
part of Mailfromd (http://mailfromd.software.gnu.org.ua).


=========================================================================
Copyright information:

Copyright (C) 2009-2023 Sergey Poznyakoff

   Permission is granted to anyone to make or distribute verbatim copies
   of this document as received, in any medium, provided that the
   copyright notice and this permission notice are preserved,
   thus giving the recipient permission to redistribute in turn.

   Permission is granted to distribute modified versions
   of this document, or of portions of it,
   under the above conditions, provided also that they
   carry prominent notices stating who last changed them.

Local variables:
mode: outline
paragraph-separate: "[	]*$"
eval: (add-hook 'write-file-hooks 'time-stamp)
time-stamp-start: "changes. "
time-stamp-format: "%:y-%02m-%02d"
time-stamp-end: "\n"
end:

Return to:

Send suggestions and report system problems to the System administrator.