13.18.1:
2	- 'null' JSON value is now handled as empty data in augments/host-specific data
3	  (ENT-7434)
4	- Added "Wants cf-postgres.service" to cf-apache.service in systemd configuration
5	  (ENT-5125)
6	- Added a new common control attribute 'system_log_level'
7	  For specifying the minimum log level required for log messages to
8	  go to the system log. (ENT-7594)
9	- Added example illustrating data_sysctlvalues() behavior (CFE-3783)
10	- Cached functions are now always called inside promises with 'iflapsed => "0"'
11	  (CFE-3754)
12	- Fixed failure on new file creation when backups are enabled (CFE-3640)
13	- Enabled the 'handle' attribute for custom promise types(CFE-3439)
14	- Enabled the 'depends_on' attribute for custom promise types (CFE-3438)
15	- Enabled the 'with' attribute for custom promise types (CFE-3441)
16	- Only real changes in files now produce info messages (CFE-3708)
17	- Reports with unexpanded variable references are now
18	  attempted to be held off until the reference expands
19	  (CFE-3776)
20	- Fixed crashes (segmentation faults) in VariableIsSecret()
21	  and VariablesMatching() (ENT-7678)
22	- The --skip-bootstrap-policy-run option now skips the update policy run
23	  (ENT-7500, ENT-7511)
24	- cf-check dump now shows measurement names (ENT-7452)
25	- Value of '$(with)' is now expanded even if it contains unresolved variable references
26	  (CFE-3776)
27	- cf-serverd now binds to both IPV6 and IPV4 if bindtointerface is unspecified
28	  (ENT-7362)
29	- cf-serverd now reports if it fails to bind to all possible addresses/interfaces
30	  (ENT-7362)
31	- '-N/--negate' now prevents persistent classes from being defined (ENT-5886)
32
333.18.0:
34	- "No action for file" warning is no longer triggered when only
35	  'content => "something"' is used (CFE-3507)
36	- "source=promise_iteration" variables are no longer created in
37	  foreign bundles (ENT-7029)
38	- 'cf-remote install' now supports the '--trust-keys' option for
39	  pre-establishing trust before bootstrap (CFE-3485)
40	- 'cf-remote spawn' now supports adding new VMs to an existing group
41	  (CFE-3502)
42	- 'rename => newname()' now supports relative paths (CFE-3537)
43	- 'variables' and 'classes' in CMDB and augments data now support
44	  'comment' fields (CFE-3638)
45	- Included custom promise type libraries in src tarball
46	  (CFE-3575, CFE-3576)
47	- --ignore-preferred-augments now sets a hard class; ignore_preferred_augments
48	  This class makes it easy for cf-agent / cf-execd policy to
49	  propagate the option to other binaries (CFE-3656)
50	- Added 'classes' body support for custom promises (CFE-3437)
51	- Added a new --simulate=manifest-full mode
52	  New simulation mode that manifests all changed files as well as
53	  all other files evaluated by the agent run which were not skipped
54	  (by file selection rules) (CFE-3506)
55	- Added a new runagent_socket_allow_users body executor control attribute
56	  A new attribute that tells cf-execd to grant access to the
57	  runagent.socket to the specified users (ENT-6735)
58	- Added checks to return value from getpwuid & getgrgid (CFE-3521)
59	- Added int() policy function (CFE-3616)
60	- Added new command line option: --ignore-preferred-augments
61	  This option causes the agent to ignore def_preferred.json
62	  always reading def.json (old behavior) (CFE-3656)
63	- Added policy function type()
64	- Added policy function findfiles_up (CFE-3577)
65	- Added policy variable sys.os_name_human (CFE-3569)
66	- Added policy variable sys.os_version_major (CFE-3569)
67	- Added shell library for custom promise types with cp example
68	  (CFE-3516)
69	- Added string() policy function (CFE-3476)
70	- Augments data now supports meta information for classes
71	  and a new 'variables' object for variables with meta information
72	  (CFE-3633)
73	- Fixed case where malformed input could trigger buffer overflow
74	  in policy function format (CFE-3525)
75	- Ability to report some number of lines from the END of a file by
76	  specifying number_of_lines as a negative number using printfile
77	  (CFE-3558)
78	- CFEngine binaries now load host specific data
79	  ($(sys.workdir)/data/host_specific.json) before Augments relative
80	  to policy entry (def.json) (ENT-6789)
81	- CFEngine processes are now properly identified in syslog on
82	  non-GNU/Linux systems (ENT-7100)
83	- CMDB data now supports meta information for classes
84	  and a new 'variables' object for variables with meta information
85	  (CFE-3633)
86	- Changed custom promise type interpreter attribute to be optional
87	  (CFE-3562)
88	- Changed files promise repaired log level to verbose (CFE-3631)
89	- Changed log message about whitespace in class expressions to be error
90	  (CFE-3560)
91	- Changed sys var attribute names:
92	  "OS type" was changed to "Kernel", "OS kernel" was changed to "Kernel Release"
93	  (ENT-6551)
94	- Clarified error log message about untrusted state directory not being private
95	  (CFE-3599)
96	- Classes from augments are now defined as soft classes
97	  within the 'namespace' context instead of being hard
98	  classes. Policies using classes from augments in policy files
99	  using namespaces need to be updated to refer to the augments
100	  classes with the 'default:' prefix (CFE-3632)
101	- Custom promise modules using JSON protocol now support data attributes
102	  (CFE-3654)
103	- Custom promise modules using JSON protocol now support slist attributes
104	  (CFE-3444)
105	- Custom promise types can now be declared in separate files (CFE-3510)
106	- Custom promise types can now report back result classes (CFE-3515)
107	- Custom promises now support the 'log_level' attribute (CFE-3436)
108	- Each custom promise module is now only spawned once
109	  and handles all promises of its matching type(s) (CFE-3572)
110	- Early failing custom promises now properly set result classes
111	  (CFE-3645)
112	- Exit code from remote agent run is now sent to cf-runagent (CFE-3594)
113	- Fixed crash when attempting to put methods promises in bundles
114	  which are not agent bundles (CFE-3672)
115	- Fixed memory leak in package module code (ENT-5752)
116	- Fixed memory leak in simulate mode (CFE-3498)
117	- Fixed some more sign-compare warnings (CFE-3415)
118	- Improved error handling / logging of data received from promise module
119	- Improved log messages for commands promise outcomes and return codes
120	  (CFE-3604)
121	- Made errors about failed validation of custom promises less noisy
122	- Namespace and bundle can now be specified in augments and CMDB data
123	  (CFE-3633)
124	- New observations of root owned SETUID programs moved from WARN to NOTICE
125	  (ENT-6519)
126	- Policy function format() no longer truncates strings lager than 4KiB
127	  (CFE-2686)
128	- Policy function storejson() no longer truncates strings lager
129	  than 4096 bytes (CFE-2507)
130	- Promise type is now sent to custom promise modules (CFE-3563)
131	- Reduced the noise caused by packages promises being skipped in
132	  evaluation passes 2 and 3 (ENT-6553)
133	- Set Filedescriptor Limit to a more practial Size (CFE-3625)
134	- Stopped emitting warning and recording result when observing new
135	  SETGID files (ENT-6750)
136	- Stopped updating files promise result with WARN (notkept) when
137	  setuid files are encountered (ENT-6519)
138	- Unspecified 'files' constraints no longer cause '_kept' classes
139	  to be defined (CFE-3578)
140	- Updated contrib/masterfiles-stage scripts and instructions to be
141	  accurate (ENT-6165)
142	- Fixed using a custom promise module with two different
143	  interpreters results in an error (CFE-3572) - Value of the
144	  'files_single_copy' body control attribute is now logged in
145	  verbose logging mode (CFE-3622)
146	- variables and classes defined in cmdb cannot be re-defined in
147	  augments (ENT-7079)
148	- Verbose log now contains comments associated with 'vars' and
149	  'classes' promises (CFE-2442, CFE-2443)
150	- cf-agent now checks that promise module logs expected errors
151	- cf-agent now sends correct information to promise module in header
152	- cf-execd now executes cf-agent for "localhost" requests via the
153	  runagent.socket (ENT-7090)
154	- cf-execd now handles requests to run cf-runagent on given hosts
155	  (ENT-6182)
156	- cf-execd now runs cf-agent from a child process instead of a
157	  thread on POSIX systems (ENT-6182)
158	- cf-runagent now exits with a code reflecting remote agent run
159	  status(es) (CFE-3594)
160	- cf-serverd now supports systemd-based socket activation
161	- def_preferred.json is now used instead of def.json if it exists
162	  Old clients will ignore it, allowing you to have 2
163	  versions of the augments file, 1 for compatibility
164	  with old clients, and 1 for utilizing the new feautres.
165	  (CFE-3656)
166	- files_single_copy body agent control attribute can now be an
167	  empty list (CFE-3622)
168	- files_single_copy no longer treats paths of copied files as
169	  regular expressions (CFE-3621)
170	- log_level is properly sent to promise modules in both validate
171	  and evaluate requests (CFE-3564)
172	- unless can now be used with custom promise types (CFE-3431)
173	- CFEngine processes now reuse log facility from previous run for
174	  early logging before policy is loaded (ENT-6955)
175
1763.17.0:
177	- cf-agent can now simulate the changes done to files in a chroot, printing
178	  diff or manifest information about what it would do in a normal evaluation.
179	  Use the new command line option: `--simulate=diff` or `--simulate=manifest`.
180	  Please note that only files and packages promises are simulated currently.
181	- Custom promise types can now be added using promise modules (CFE-3273)
182	- cf-monitord now uses /proc/net/* files to get network information if
183	  possible (CFE-2945)
184	- Added new policy function execresult_as_data() (CFE-3315)
185	- Added optional argument to execresult for choosing between stdout and
186	  stderr (CFE-3108)
187	- Outcome classes are now always defined for promiser in files promises
188	  (CFE-3369)
189	- and(), or(), not() now return boolean and cannot be used directly in
190	  slist vars. They can now be used in other places where a boolean is
191	  expected. (Most notably and / or promise attributes). The return values
192	  can be converted to strings using concat(), if necessary (CFE-3470)
193	- Backgrounded commands are now correctly executed in the child process
194	  (CFE-3379)
195	- CFEngine policy bodies can now be completely empty
196	- Directory listings in files changes monitoring are now only updated
197	  when there is a change (CFE-3382)
198	- Promises with 'action => bg()' no longer break reporting data (ENT-6042)
199	- Spaces inside square brackets (slist/data index) are now allowed in
200	  class expressions (CFE-3320)
201	- Variables specifying data/list names in @() references are now expanded
202	  (CFE-2434)
203	- Added warnings when trying to use {{.}} to expand containers in mustache
204	  templates (CFE-3457, CFE-3489)
205	- Limited unqualified host and domain name to 511 characters (CFE-3409)
206	- AVCs are no longer produced for CFEngine processes accessing /proc/net
207	  (CFE-3240)
208	- Fixed how we check for `--cols` argument to `ps` (ENT-6098)
209	- Fixed a memory leak in users promises
210	- Fixed a small memory leak in cf-promises (CFE-3461)
211	- Fixed expansion of variables in data/list references (CFE-3299)
212
2133.16.0:
214	- Added 'cf-secret' binary for host-specific encryption (CFE-2613)
215	- 'cf-check diagnose --test-write' can now be used to test writing
216	  into LMDB files (ENT-4484)
217	- 'if' constraint now works in combination with class contexts
218	  (CFE-2615)
219	- Added $(sys.cf_version_release) variable (ENT-5348)
220	- Added new macros to parser: else, maximum_version, between_versions,
221	  before_version, at_version and after_version. Version macros now
222	  accept single digits (CFE-3198)
223	- Added cf-postgres requirement to cf-apache and cf-hub systemd units
224	  (ENT-5125)
225	- Added files promise content attribute (CFE-3276)
226	- Added string_trim() policy function (CFE-3074)
227	- Added warning if CSV parser parses nothing from non-empty file
228	  (CFE-3256)
229	- All changes made by 'files' promises are now reported. Also,
230	  directory and file creations are now properly reported as 'info'
231	  messages. And failures in edit_xml result in promises marked as
232	  failed not interrupted. Purged dirs and files are reported as
233	  repaired (ENT-5291, CFE-3260)
234	- Bootstrap to loopback interface is now allowed, with a warning
235	  (CFE-3304)
236	- Client initiated reporting was fixed on RHEL 8.1 (ENT-5415)
237	- Fixed rare crashing bug when parsing zombie entries in ps output. The
238	  problem was only ever observed on AIX, but could theoretically happen
239	  on any platform depending on exact libc behavior. (ENT-5329)
240	- Fixed an issue causing duplicate entries in sys.interfaces, and
241	  sys.hardware. (CFE-3046)
242	- Fixed ifelse() to return fallback in case of unresolved variables
243	  (ENT-4653)
244	- Fixed locking of promises using log_repaired / log_string with
245	  timestamps (CFE-3376)
246	- Fixed memory leak in handling of inline JSON in policy evaluation
247	- Fixed memory leak in readlist functions (CFE-3263)
248	- Fixed race condition when multiple agents are acquiring critical
249	  section locks simultaneously (CFE-3361)
250	- Fixed selection of standard_services when used from non-default
251	  namespace (ENT-5406)
252	- Fixed service status cfengine3 on systemd managed hosts (ENT-5528)
253	- Fixed some memory leaks and crashes in policy evaluation (CFE-3263)
254	- Improved error message for invalid body attribute names (CFE-3273)
255	- Improved management of secondary groups to avoid intermediary state
256	  failures (ENT-3710)
257	- LMDB files are now created with correct permissions (ENT-5986)
258	- Log messages about broken Mustache templates are now errors (CFE-3263)
259	- Made classfiltercsv() fail properly on invalid class expression index
260	- Measurements promises with no match no longer produce errors
261	  (ENT-5171)
262	- Moved error reading file in countlinesmatching() from verbose to error
263	  (CFE-3234)
264	- Added new data validation policy functions validdata() and validjson()
265	  (CFE-2898)
266	- New version checking convenience policy functions (CFE-3197)
267	  Added the following policy functions to check against local CFEngine version:
268	  - cf_version_maximum()
269	  - cf_version_minimum()
270	  - cf_version_after()
271	  - cf_version_before()
272	  - cf_version_at()
273	  - cf_version_between()
274	- Removed (USE AT YOUR OWN RISK) from cf-key help menu for -x (ENT-5090)
275	- Rewrote helloworld.cf to use files promises content attribute
276	  (CFE-3276)
277	- The outcome classes are now defined for the top-level directory when
278	  'include_basedir' is 'false' (ENT-5291)
279	- Variable references with nested parentheses no longer cause errors
280	  (CFE-3242)
281	- cf-check: Added a more user friendly message when trying to print
282	  unknown binary data (ENT-5234)
283	- cf-check: Added data validation for cf_lastseen.lmdb (CFE-2988)
284	- cf-check: Added nice printing for nova_agent_executions.lmdb
285	  (ENT-5234)
286	- cf-check: Added validation for timestamps in cf_lock.lmdb (CFE-2988)
287	- cf-check: Added validation for timestamps in lastseen.lmdb (CFE-2988)
288	- cf-check: Fixed issue causing repair to target the wrong database file
289	  (ENT-5309)
290	- cf-check: Symlinked LMDB databases are now preserved in repair
291	  Performs diagnosis and repair on symlink target instead of symlink.
292	  Repaired files / copies are placed alongside symlink target.
293	  In some cases, the symlink target is deleted to repair a corrupt
294	  database, and the symlink is left as a broken symlink. This is
295	  handled gracefully by the agent, it will be recreated. Broken
296	  symlinks are now detected as an acceptable condition in diagnose,
297	  it won't try to repair them or delete them. (ENT-5162)
298	- storage promises managing nfs mounts should now correctly mount
299	  after editing fstab entries
300
3013.15.0:
302	- New policy function basename() added (CFE-3196)
303	- Added read_module_protocol() policy function
304	  This function reads module protocol from a file, and can be used
305	  for caching the results of commands modules. (CFE-2973)
306	- The @ character is now allowed in the key of classic arrays defined
307	  by the module protocol (CFE-3099)
308	- nth() policy function now supports negative indices (CFE-3194)
309	- Fixed .xy floating point numbers parsing in eval() (CFE-2762)
310	- Added inform constraint to commands promises, to allow suppression of
311	  INFO log messages (CFE-2973)
312	- Changed unless constraint to be more consistent with if
313	  For any situation where if would NOT skip a promise, unless
314	  will cause the promise to be skipped. When there are
315	  unresolved variables / function calls, if will skip, unless
316	  will NOT skip. (CFE-3160)
317	- Default minimum allowed TLS version is now 1.1 (ENT-4616)
318	- Network protocol version 2 is now called "tls"
319	  "tls" or "2" can be used in places where you specify network
320	  protocol. Log messages were altered, to show "tls" instead of
321	  "latest". (ENT-4406)
322	- Introduced protocol version 3 - "cookie"
323	  This protocol is identical to version 2 ("tls"),
324	  except it allows the enterprise reporting hub to send
325	  the COOKIE command to enterprise hosts. This command is used for
326	  detecting hosts using duplicate identities. Protocol version "latest"
327	  now points to version 3. For community installations, it should not
328	  make a difference, policy servers will not send this command. The only
329	  visible difference is the new version number (in logs and policy).
330	  (ENT-4406)
331	- Package modules now hit network when package cache is first initialized
332	  (CFE-3094)
333	- Fixed promise skipping bug in unless (CFE-2689)
334	- Fixed error message for unexpanded variables in function calls in unless
335	  (CFE-2689)
336	- Prevented buffer overflow when policy variable names are longer than
337	  1024 bytes
338	- Zero bytes in class guards no longer cause crashes (CFE-3028)
339	- Fixed bug in ps parsing on OpenBSD / NetBSD causing bootstrap to fail
340	- Fixed crash in policy/JSON parsing of numbers with too many decimal
341	  points (CFE-3138)
342	- copy_from without preserve now respects destination mode (ENT-4016)
343	- Removed stime_range and ttime_range constraints from promise hash
344	  (ENT-4921)
345	- Fixed promise result when using process_stop in processes type promises
346	  (ENT-4988)
347	- cf-execd now sends SIGKILL to the agent process in case of
348	  agent_expireafter, after attempting SIGINT and SIGTERM (CFE-2664)
349	- cf-serverd now tries to accept connection multiple times (CFE-3066)
350	- Fixed multiple measurements tracking growth of same file (ENT-4814)
351	- Set create permissions of monitord files in state directory to 0600
352	  0600 matches the permissions enforced by policy.
353	  Affected files:
354	   * state/cf_incoming.*
355	   * state/cf_outgoing.*
356	   * state/cf_users
357	   * state/env_data
358	  (ENT-4863)
359	- Clarified descriptions of io_writtendata and io_readdata (ENT-5127)
360	- Clarified log message about process_count and restart_class being used
361	  concurrently (CFE-208)
362	- Agent runs that hit abortclasses now record results (ENT-2471)
363	- An ID of rhel in os-release file will now define both rhel and redhat
364	  classes (CFE-3140)
365	- Version specific distro classes are now collected by default in
366	  Enterprise (ENT-4752)
367	- redhat_8 and redhat_8_0 are now defined on RHEL 8 (CFE-3140)
368	- Added derived-from-file tag to hard classes based on /etc/redhat-release
369	  (CFE-3140)
370	- Added sys.bootstrap_id policy variable containing the ID from
371	  /var/cfengine/bootstrap_id.dat, if present (CFE-2977)
372	- sys.interfaces now contains interfaces even when they only have
373	  IPv6 addresses (ENT-4858)
374	- IPv6-only interfaces added to sys.hardware_(addresses,mac) (CFE-3164)
375	- IPv6 addresses are now added to policy variable sys.ip_addresses
376	  (CFE-682)
377	- IPv6 addresses now respect ignored_interfaces.rx (CFE-3156)
378	- hostname now allowed in bindtoaddress (CFE-3190)
379	- Fixed issue when removing comments from files in various policy functions
380	  This also fixes many erroneous occurences of the error message
381	  mentioning:
382
383	     [...] because it legally matches nothing
384
385	  (A warning can still appear if a comment regex actually matches nothing).
386	  Also made this comment removing logic faster.
387	  Affected functions include:
388	  * readstringlist()
389	  * readintlist()
390	  * readreallist()
391	  * peers()
392	  * peerleader()
393	  * peerleaders()
394	  * data_readstringarray()
395	  * data_readstringarrayidx()
396	  * data_expand()
397	  * readstringarray()
398	  * readstringarrayidx()
399	  * readintarray()
400	  * readrealarray()
401	  * parsestringarray()
402	  * parsestringarrayidx()
403	  * parseintarray()
404	  * parserealarray()
405	  (CFE-3188, ENT-5019)
406	- Fixed memory leak in JSON / env file parsing (CFE-3210)
407	- Fixed memory leak in handling of nfs / fstab (CFE-3210)
408	- Fixed memory leak in string_replace() and regex_replace() (CFE-3210)
409	- Fixed memory leak when using with constraint (CFE-3210)
410	- Fixed minor memory leak in policy evaluation (CFE-3210)
411	- Fixed small memory leak in SQL database promises (CFE-3210)
412	- Received SIGBUS now triggers a repair of local DBs (CFE-3127)
413	- Corrupted LMDB files are now automatically repaired (CFE-3127)
414	- Keys in the lock database, cf_lock.lmdb, are now human-readable
415	  (CFE-2596)
416	- Local databases now use synchronous access on AIX and Solaris (ENT-4002)
417	- Report corrupted local database with a critical log message (CFE-2469)
418	- Local DB errors are now logged with the particular DB file path (CFE-2469)
419	- cf-check: repair now preserves readable data in corrupted LMDB files
420	  (CFE-3127)
421	- cf-check: --dump option was added to the backup command
422	- cf-check: Added --no-fork to diagnose command (CFE-3145)
423	- cf-check: Added -M manpage option and other common options (CFE-3082)
424	- cf-check: No DB files in state dir now causes errors
425	- cf-check: dump command now dumps DB contents to JSON5 (CFE-3126)
426	- cf-check: help command can now take a topic as argument
427
4283.14.0:
429	- A bootstrap_id.dat file is now generated on every bootstrap
430	  (CFE-2977)
431	- Added options to cf-net to set minimum TLS version and ciphers
432	  (ENT-4617)
433	- Added --no-truncate option to cf-key
434	  This option, when used with --show-hosts changes the formatting
435	  of the output. Instead of padding and truncating each of the
436	  fields, they are printed, in full, with no padding, and separated
437	  by a single tab character. The output is not as pretty, but should
438	  be more useful for parsing by other scripts / tooling. (CFE-3036)
439	- Added a new option --skip-db-check to agent and execd
440	  This option allows you to enable/disable database (LMDB) consistency
441	  checks. Initially it is disabled by default, but this will likely
442	  change. (CFE-2893)
443	- Added a new utility to contrib: cf-remote
444	  cf-remote is a python + fabric tool to log in to remote hosts
445	  you have ssh access to. It can be used to download, transfer,
446	  and install cfengine packages as well as bootstrapping etc.
447	  At this point, cf-remote is not packaged with CFEngine, but can be
448	  installed separately from:
449	  https://github.com/cfengine/core/tree/master/contrib/cf-remote
450	  (CFE-2889)
451	- Added derived-from-file tags to hard classes based on /etc/debian_version and /etc/issue
452	- Added a function to filter CSV-files by classes (CFE-2768)
453	- Forward slash is now an allowed character in module protocol commands
454	  (CFE-2478)
455	- Augments files can now handle class expressions by appending '::'
456	  A condition in an augments file is treated as a class expression
457	  if it ends in ::. Otherwise it is treated as a regular
458	  expression. (CFE-2954)
459	- Internal ps command can now handle longer usernames (CFE-2951)
460	- Made copylink_pattern honor '/../' in copy source (CFE-2960)
461	- CSV parser now supports CRLF inside double quotes (ENT-4504)
462	- Added an error when a function defining a variables still fails at
463	  pass 3 (CFE-2983)
464	- Documented cf-execd and cf-serverd response to SIGHUP in manpage
465	  (CFE-2853)
466	- Stopped trimming leading zeroes in ubuntu minor version class
467	  The old version detection logic (using /etc/debian_version) was
468	  converting the minor version part to an integer, defining
469	  ubuntu_18_4 instead of ubuntu_18_04. The new platform detection
470	  (based on /etc/os-release) defines ubuntu_18_04. Since both old
471	  and new methods are running to maximize compatibility, both
472	  ubuntu_18_04 and ubuntu_18_4 were defined.
473	  This commit ensures that the old detection logic treats the
474	  minor version (the 04 part) as a string, not an integer. The
475	  change is specific to Ubuntu, and should affect Ubuntu 18.04,
476	  16.04, 14.04, etc. (CFE-2882)
477	- SUID log permissions are now properly enforced (CFE-2919)
478	- Agent log file names are now always lowercase
479	- Extended module with file protocol for data (CFE-3050)
480	- Fixed a segfault in 'cf-promises -p json-full' (CFE-3019)
481	- Added cf-key help output to indicate ability to delete by key digest
482	  (CFE-2997)
483	- Fixed disabling TLS 1.0 (CFE-3068)
484	- Fixed growing memory footprint of daemons (CFE-3032)
485	- Fixed the log message about setting collect_window (ENT-4238)
486	- Fixed the log message when parsing TIME in 'ps' output fails
487	- Fixed parsing of YAML values starting with numbers (CFE-2033)
488	- Fixed sys.flavor on AIX (ENT-3970)
489	- Fixed 6 cases where promises could get the wrong outcome
490	  All cases were related to error handling and detected using
491	  static code analysis (LGTM). They were limited to cf-monitord
492	  and cf-agent (guest_environments and files promise types). Due
493	  to a programming mistake, promise results would sometimes be
494	  overwritten with 'skipped' outcome. Keeping the previous
495	  value or making the promises 'not kept' is expected behavior.
496	  Added a query to our CI (LGTM) to make sure we catch this error
497	  on new contributions.
498	- Fixed an issue while parsing ps output on AIX (ENT-4295)
499	- Fixed a memory leak in filesexist function (ENT-4313)
500	- Fixed a memory leak in mustache rendering (ENT-4313)
501	- Fixed a memory leak in: differences(), intersection(), unique()
502	  (ENT-4586)
503	- Fixed a segfault in policy parser (ENT-4022)
504	- Connection cache is now global (CFE-2678)
505	- Increased verbosity of AcquireLock permission error (ENT-4395)
506	- Message about invalid class characters from module protocol moved to VERBOSE
507	  (CFE-2887, CFE-3008)
508	- Prevented buffer overflows in cf-monitord data parsing
509	- Private keys generated by cf-key are no longer encrypted
510	  Private key files encrypted with a broken cipher and default
511	  hard coded passphrase provide no real security, and is only an
512	  inconvenience. Maybe it was intended to add a password prompt
513	  later, but it's been 10 years now, and the cipher and passphrase
514	  remain untouched. The function which reads keys still supports
515	  both encrypted and unencrypted keys, it will decrypt if necessary.
516	- Reduce SSL/TLS shutdowns on bad networks (CFE-3023)
517	- Removed programming error in handling of process_count body
518	  Previously, having a failing function call inside in_range_define
519	  or out_of_range_define would cause a programming error when
520	  trying to define that as a class. Fixed it by detecting the
521	  case, printing a normal error, and skipping defining the class. (CFE-2067)
522	- Set policy->release_id to "failsafe"/"bootstrap" when running failsafe.cf
523	  (CFE-3031)
524	- Switched permissions of various temporary files in state to 0600
525	  These files were created with 0644 permissions, and then
526	  repaired in policy. However, since they are deleted / recreated
527	  periodically, it causes INFO noise. Safer and better user
528	  experience to create them with restricted permissions to
529	  begin with.
530	  Affected files:
531	  * $(sys.statedir)/cf_procs
532	  * $(sys.statedir)/cf_rootprocs
533	  * $(sys.statedir)/cf_otherprocs
534	  (ENT-4601)
535	- string_split segments are now truncated to 1024 bytes instead of
536	  crashing (CFE-3047)
537	- Unresolved function calls in process_select body are now skipped
538	  Function calls which always fail, like getuid("nosuchuser"), are
539	  never resolved. Previously this would cause a programming error,
540	  since the body is expected to have a list of strings, not
541	  unresolved function calls.
542	  The function calls are silently skipped (with a verbose message)
543	  as this matches the behavior of calling the functions in a vars
544	  promise, and using that as a body parameter.
545	  (CFE-1968)
546	- cf-check directories can now be controlled from ENV vars (CFE-2994)
547	- cf-check: Added backup command
548	  This command copies lmdb files to a timestamped backup directory.
549	  (ENT-4064)
550	- cf-check: diagnose and backup now use state directory by default
551	  (ENT-4064)
552
5533.13.0:
554	- Add support for TLS 1.3 and its ciphersuites
555	- Add 'feature' hard classes for supported TLS versions
556	  Different versions of TLS are supported depending on what version
557	  of OpenSSL CFEngine was compiled and linked with. Newly added
558	  feature hard classes bring that information to the
559	  policy. Classes like these are now defined (for supported
560	  versions of TLS):
561	  feature_tls                     source=agent,hardclass
562	  feature_tls_1                   source=agent,hardclass
563	  feature_tls_1_0                 source=agent,hardclass
564	  feature_tls_1_1                 source=agent,hardclass
565	  feature_tls_1_2                 source=agent,hardclass
566	  feature_tls_1_3                 source=agent,hardclass
567	- Add a new variable $(sys.default_policy_path)
568	  A new sys variable that provides the path of the default policy
569	  file evaluated when no file is specified with the '-f' option.
570	- Add an option to skip the initial policy run on bootstrap
571	  In some cases it may not be desired to run the policy as the last
572	  step of the bootstrap. This can be done with the new
573	  '--skip-bootstrap-policy-run' option for cf-agent. (CFE-2826)
574	- Trigger promises.cf as the last step of bootstrap (CFE-2826)
575	- Add support for overriding the package module's path (CFE-2103)
576	- Add support for setting package module interpreter (CFE-2880)
577	- Added --log-level option to all components
578	  This allows you to specify any log level (info, verbose, debug etc.).
579	  It is also less strict, allowing different spelling. As an example,
580	  --log-level i, --log-level INFO, --log-level inform are all the same.
581	- Added a new binary: cf-check
582	  Corrupt local databases (LMDB) continues to be a problem.
583	  cf-check will be used to diagnose and remediate problems
584	  with corrupt databases. It is a standalone binary, which
585	  doesn't evaluate policy or use the local databases, thus
586	  it can be used in situations where the other binaries
587	  like cf-agent would hang.
588	  cf-check replaces our lmdb database dumper, lmdump.
589	  cf-check lmdump or symlinking / renaming it to lmdump
590	  will make cf-check have the exact same behavior as lmdump.
591	  cf-check will include much more functionality in the future
592	  and some of the code will be added to other binaries,
593	  for example to do health checks of databases on startup.
594	  Ticket: (ENT-4064)
595	- Added function string_replace. (CFE-2850)
596	- Allow dots in variable identifiers with no such bundle
597	  As described and discussed in CFE-1915, defining remote variables
598	  (injecting variables into remote bundles) is dangerous and must
599	  be blocked. However, using a dot-separated common prefix for
600	  variables raises no security concerns and can be considered
601	  valid. (CFE-1915)
602	- Allow requiring TLS 1.3 as the minimum version
603	- Apply augments after vars, classes and inputs in def.json
604	  (CFE-2741, CFE-2844)
605	- Bundle name is now part of the log message when aborting a bundle
606	  (CFE-2793)
607	- Class names set by module protocol are automatically canonified
608	  (CFE-2877, CFE-2887)
609	- Classes failsafe_fallback and bootstrap_mode are now reported by default
610	- Correct log level for data_readstringarray* (CFE-2922)
611	- Do not iterate over JSON objects' properties in mustache (CFE-2125)
612	- Do not render templates when passed invalid data (CFE-2194)
613	- Eliminated error messages caused by attempting to kill expired processes
614	  (CFE-2824)
615	- Fix cf-runalerts systemd unit conditions so the service will run
616	  (ENT-3929)
617	- Fix the off-by-one error in cf-runagent background process spawning
618	  (CFE-2873)
619	- Fixed OOB read / heap buffer overflow in evaluator (ENT-4136)
620	- Fixed a memory leak which occured when reloading RSA keys from disk
621	  (CFE-2857)
622	- Fixed a memory leak which occured while loading augments files
623	  (CFE-2913)
624	- Fixed an issue with splay time in cf-execd (CFE-2931)
625	- Fixed error handling and memory leak in cf-key (CFE-2918)
626	- Fixed memory leak in JSON to policy conversion (ENT-4136)
627	- Fixed memory leak in lmdb cleanup (CFE-2918)
628	- Fixed memory leaks in cf-agent during bootstrap (CFE-2918)
629	- Fixed memory leaks in variablesmatching() and findfiles() (CFE-2918)
630	- Fixed missing class with mustache templates in warn_only mode
631	  (CFE-2600)
632	- Fixed small memory leak in cf-serverd (CFE-2918)
633	- Fixed small memory leak in cf-upgrade (ENT-4136)
634	- Fixed small memory leaks of environment variable strings (CFE-2918)
635	- LMDB database dumper, lmdump, no longer creates empty databases
636	  (ENT-4064)
637	- Made variablesmatching functions treat args regexes more correctly
638	  variablesmatching() and variablesmatching_as_data() no longer
639	  use string comparison to find matches. The documentation is clear;
640	  arguments should be regexes (so you have to escape special
641	  characters).
642	  bundle agent main
643	  {
644	      vars:
645		  "myvar"
646		      string => "example",
647		      meta => {"os[linux]"};
648		  "matches"
649		      slist => variablesmatching(".*", "os\[linux\]");
650	      reports:
651		  "Match: $(matches)";
652	  }
653	  The above example is correct. If you don't escape the brackets
654	  like above, it will no longer work. (You probably shouldn't use
655	  brackets in tags anyway).
656	- Prevent the init script from managing processes inside containers
657	  (ENT-3800)
658	- Read mustache-rendered files in text mode when comparing digest
659	  (ENT-2526)
660	- Reload persistent classes on config reload in cf-execd and cf-serverd
661	  (CFE-2857)
662	- Fixed issue with @if macro failing when it is on the first line.
663	  (CFE-2817)
664	- Fixed issue with cf-agent intermittently hanging on windows
665	  sometimes (ENT-3756)
666	- change GIT_BRANCH to GIT_REFSPEC and remove Design Center vars
667	  (ENT-4023)
668	- os-release file is now used for hard classes and sys.flavor on all linuxes
669	  This will improve platform detection on newer operating systems where
670	  /etc/os-release (or /usr/lib/os-release) is present.
671	  A hard class will be set for the value of the ID key (canonified with
672	  underscores), if it exists. If both ID and VERSION_ID exist, multiple
673	  hard classes will be set for all parts of the version number. The
674	  special variable sys.flavor will also be set by determining major
675	  version from VERSION_ID.
676	  Example os-release file:
677		ID=coreos
678		VERSION_ID=1185.3.0
679	  For the example above, sys.flavor will be coreos_1185 and 4 hard
680	  classes will be set; coreos_1185_3_0, coreos_1185_3, coreos_1185,
681	  and coreos.
682	  For backwards compatibility, older distribution specific logic is still
683	  executed and may overwrite sys.flavor and define hard classes as before.
684	- refactor use of atexit to use custom cleanup function instead. On Windows
685	  atexit() unloads DLLs before and/or during atexit functions being called
686	  which causes bad behavior. (ENT-3756)
687
6883.12.0b1:
689	New Features:
690	- Add a --key-type option to specify RSA key size to cf-key
691	- New hash_to_int policy function (CFE-2733)
692	- Issue a warning on ignored locking attributes (CFE-2748)
693	- Add IPv6 hard classes with the "ipv6_" prefix (CFE-2310)
694	- Introduce "missing_ok" attribute in body copy_from
695	  This allows to ignore missing sources in file copy operations (CFE-2365)
696	- Enable Xen hypervisor detection on all x86 platforms (CFE-2203)
697	- Add sys.policy_entry variables (CFE-2572)
698	- Added inline_mustache template method (CFE-1846)
699	- New component cf-net (cf-net is a CLI for the CFEngine network protocol,
700	  useful for debugging, testing etc) and accompanying policy variable
701	  sys.cf_net containing path to cf-net binary
702
703	Changes:
704	- Load augments at the end of context discovery
705	  This means that classes defined as part of the context discovery
706	  (e.g. 'am_policy_hub' and 'policy_server') can be used in the
707	  augments (CFE-2482)
708	- Open measurements promise type from enterprise cf-monitord
709	- Transform filesexist() into a collecting function (CFE-2744)
710	- Load process table when actually needed for a processes promise (ENT-2536)
711	- Ignore commented out entries in fstab when edit_fstab is true (CFE-2198)
712	- Do not move obstructions in warn policy mode (CFE-2740)
713	- Made the max bytes parameter to file reading functions optional (CFE-2656)
714	- Do not tag large volatile variables for inventory
715	  sys.interfaces_data, sys.inet and sys.inet6 are commonly larger than the
716	  maximum data size allowed to be collected by cf-hub. Data larger than 1k
717	  is truncated. Instead of reporting truncated data this change stops
718	  tagging the variable so that it will not be collected to the Enterprise
719	  hub and will not be available in Mission Portal. (ENT-3483)
720	- cf-execd now re-parses augments on policy reload (CFE-2406)
721	- Improve misleading verbose message
722	  For constraints if/ifvarclass/unless, we now print the whole rval of the constraint.
723	  Previously the message was just "skipping variable because ifvarclass is not defined" while the variable itself was defined.
724	  Old message example:
725	    verbose: Skipping promise 'mailto' because 'if'/'ifvarclass' is not defined
726	  Changed to:
727	     verbose: Skipping promise 'mailto' because 'ifvarclass => not(isvariable("mailto"))' is not defined
728	  (CFE-2697)
729	- Promise comments for file changes moved to verbose (ENT-3414)
730	- Suppress output from systemctl based restart of services in
731	  bootstrap/failsafe (CFE-1459)
732	- Parser can now handle larger inbut buffers (CFE-1886)
733	- Improve logging of ACL errors (ENT-3455)
734	- cf-execd systemd service now only kills cf-execd itself (ENT-3395)
735	- Load multiple augments from "augments" string array in def.json
736	  (CFE-2084)
737	- Improve support for Alpine Linux
738	- Set the exit value when running cf-key
739	  When running cf-key to generate new keys, set the exit value of the
740	  program to be 0 on success and 1 on failure. This makes it easier to
741	  catch errors during setup of a new machine.
742	  Change the default behavior of the program to not write anything to stdout,
743	  opting to use the Log() function which can write to stdout and will also
744	  allow output to be sent to syslog.
745	  Add a --inform option to set the global log level to LOG_LEVEL_INFO.
746	  Change the permissions of the randseed file to 600 and catch the exception
747	  if the chmod call fails.
748	- Properly reverse-resolve DNS names longer than 63 chars (ENT-3379)
749	- Properly redirect init script to systemd on debian systems (ENT-3326)
750
751	Bug fixes:
752	- Disallow modifications of variables from a remote bundle (CFE-1915)
753	- Speedup evalution by not copying variables table when expanding a promise
754	  (CFE-2524)
755	- Resolve subkey conflicts when converting to JSON
756	  Whenever there is a conflict of array variable definitions prefer
757	  the container subkeys over simple values when converting to JSON
758	  (CFE-2536)
759	- Do not ignore meta promises in server bundles (CFE-2066)
760	- Add a debug log for computed class in splayclass
761	- Don't error when calling isexecutable on broken link (CFE-741)
762	- Fix segfault when no show-evaluated-vars/classes is specified
763	- Fix memory leak in cf-execd, triggered when sending email failed (CFE-2712)
764	- Fix IPv6 parsing to be un-reversed (CFE-2580)
765	- Fix bug preventing permission changes on Unix sockets (CFE-1782)
766	- Fix storage mount promise when existing mountpoint has a similar path
767	  (CFE-1960)
768	- Fix segfault when cf-promises -p is called against a file with syntax
769	  errors (CFE-2696)
770	- Fix rare cf-execd hang (CFE-2719)
771	- Fix mergedata segfault when called on a non-container (CFE-2704)
772	- Do not segfault if policy_server.dat only contains whitespaces and/or line breaks
773	- Fix segfault on JSON policy files with no bundles and bodies (CFE-2754)
774
775
7763.11.0:
777	New Features:
778	- Allow function calls in promiser using universal "with" attribute
779	  (CFE-1092)
780	- Add example of with attribute (CFE-1092)
781	- Detect Amazon Linux and set "AmazonLinux" hard class and
782	  sys.flavour variable
783	- New sysctlvalue() and data_sysctlvalues() functions from /proc/sys
784	  (CFE-2513)
785	- readdata() also auto-detects .yml files as YAML
786	- Added support for ENV and CSV file parsing (CFE-1881)
787	- Added vars and classes for CoreOS (ENT-3043)
788	- cf-agent: implement --show-evaluated-vars and --show-evaluated-classes
789	- Support for custom ports and host names as policy hub (CFE-953)
790	- cf-promises: allows --show-vars and --show-classes to take an optional filter
791	- Added a new tool: cf-net. cf-net is a CLI for the CFEngine
792	  network protocol, useful for debugging, testing etc (CFE-2493)
793	- New policy variable: sys.cf_net contains path to cf-net binary
794	- Read /etc/os-release into sys.os_release (CFE-1881)
795
796	Changes:
797	- readintlist() now prints an error if the
798	  file contains real numbers, not integers, and aborts; previously it was
799	  printing an info-level error message, was half-reading an integer out of
800	  the real, and was continuing successfully.
801	- "make tar-package" should create a tarball with the contents of
802	  "make install" (ENT-3041)
803	- Allow opening symlinks owned by root or by the current user
804	  (CFE-2516)
805	- Change warning message about depth_search on a non directory to
806	  DEBUG level
807	- Ensure synchronous start and stop with systmectl (ENT-2841)
808	- Put logs in /var/log and PID files in /var/run when using FHS layout
809	  (CFE-2449)
810	- readstringlist(), readintlist(), readreallist(): Print
811	  verbose instead of error message if file can not be read
812	- cf-serverd: Do not close connection when file does not exist
813	  (CFE-2532)
814	- policy_server.dat now appends a newline and supports host & port
815	- Allow string_head and string_tail to take negative arguments
816	- getvalues(inexistent_var) returns an empty list.
817	  Restores 3.7.x and earlier behaviour. (CFE-2479)
818	- Partially restore old getvalues(array) behaviour
819	  Bugfix: getvalues() now behaves correctly for old CFEngine
820	  arrays of depth 1
821	  Behaviour change: it always returns a list now. Even when v is a simple
822	  string (i.e. not an iterable) it will return an slist with one element:
823	  the value of the string variable.
824	  Known issues: getvalues() still misbehaves with double-indexed arrays
825	  (see CFE-2504, CFE-2536)
826	- The source version of CFEngine now installs binaries into
827	  bin folder instead of sbin folder (CFE-2448)
828	- Don't error during dry run for proposed execution (CFE-2561)
829	- Print verbose instead of error message when readfile() fails (CFE-2512)
830	- cf-serverd: Auto configure max open files ulimit according to
831	  maxconnections (CFE-2575)
832	- Made the max bytes parameter to file reading functions optional.
833	  Affects readfile(), readenvfile(), readcsv()
834
835	Bug fixes:
836	- Fix insert_lines related memory corruption (CFE-2520)
837	- Prevent LMDB assertion on AIX by ensuring nested DB calls are
838	  not occuring during signal handler cleanup (CFE-1996)
839	- Fix a bug which could cause cf-execd to believe there was
840	  an error when sending the email report, when there really wasn't
841	- zendesk#3204: Fix "lastseenexpireafter" 32-bit signed int overflow
842	- Fix cf-execd not exiting immediately with SIGTERM on AIX (ENT-3147)
843	- Fix automatic service stops based on runlevel (redhat/centos)
844	  (CFE-2611)
845	- Fix cf-serverd crash when reporting corrupted data (ENT-3023)
846	- Fix rare output truncation on Solaris 10/11 (CFE-2527)
847	- Fix crash on Solaris when ps ucb variant is not available (CFE-2506)
848	- Fix logic to detect when running under a Xen Hypervisor (CFE-1563)
849	- Fix "lastseenexpireafter" 32-bit signed int overflow (zendesk#3204)
850	- Fix IPv6 parsing to be un-reversed (CFE-2580)
851
8523.10.0:
853	New features/additions:
854	- All new features/additions for 3.8 and 3.9 are also included in 3.10.
855	- Add: Classes body tailored for use with diff
856	- New feature: Classes promise: allow classes without an expression to default to defined.
857	- Support for custom ports and host names as policy hub (CFE-953)
858	- Add: Definition of from_cfexecd for cf-execd initiated runs
859	  (CFE-2386)
860	- Add < <= > >= operators to eval().
861	- Add testing jUnit and TAP bundles and include them in stdlib.cf
862	- New function isipinsubnet() (ENT-7949)
863	- LogDebug(): implement module-based debug logging.
864	  Now most DEBUG messages are *not* printed even when "-d" is in use, but
865	  the specific debug module has to be enabled on the command line. For
866	  example to enable all log modules, run:
867	  cf-agent -d --log-modules=all
868	- Add: edit_line contains_literal_string to stdlib
869	- add variablesmatching_as_data() function paralleling variablesmatching()
870	  (Redmine #7885)
871	- Allow specifying agent maxconnections via def.json (CFE-2461)
872	- Add getuserinfo() function
873	- Add body agent control select_end_match_eof option. (CFE-2390)
874	- Add class to enable post transfer verification during policy updates
875	- Add ability to append to bundlesequnece with def.json (CFE-2460)
876	- policy_server.dat now appends a newline and supports host & port
877
878	Changes:
879	- Rewrite iteration engine to avoid combinatorial explosion with nested variable expansions.
880	  This speeds up enormously the execution of policies that included long
881	  slists or JSON containers, that in the past didn't even terminate.
882	  Change: "cf_null" string literal was changed to not be something
883		  special, and it's now a string that can be used anywhere, like
884		  in slists or part of bundlesequence etc.
885	  NOTE: Old policy should be grep'ed for "cf_null" and in case such
886		occurences were handled specially, they should be reworked.
887	  Change: "--empty-list--" is now never printed by format(),
888		  an empty list is now printed as "{  }".
889	  Change: Order of pre-evaluation was slightly changed, A new "vars" pass
890		  at the beginning of pre-evaluation was added. It used to be
891		  classes-vars, but it was changed to vars-classes-vars. As a
892		  result some classes or variables might be evaluated at a
893		  different time than before. As always try to write policy code that works no matter what the
894		  order of execution is.
895		  One way is to always *guard* the execution of functions to avoid
896		  bogus function results.  For example the following will avoid
897		  running execresult() bevore the file has been created:
898		    execresult("cmd /path/to/filename") if => fileexists("/path/to/filename");
899	  C internals: NULL Rlist is now perfectly valid, in fact it is the only
900		       way to denote an empty Rlist.
901	  C internals: Since a slist variable can be NULL, API of
902		       EvalContextVariableGet() changed: The way to detect if a
903		       variable is found, is not to check return value for NULL,
904		       but to check returned *type* for CF_DATA_TYPE_NONE.
905		       Fixed what I could find as wrong API uses. (CFE-2162)
906	- Allow arbitrary service policies (CFE-2402)
907	- Behaviour change: cf-execd: Do not append -Dfrom_cfexecd to exec_command .
908	  (CFE-2386)
909	- Failsafe/Bootstrap no longer copy files starting with .git (like .gitignore) or .mailmap
910	  (CFE-2439)
911	- Change: Enable strict transport security
912	- Change: Disable http TRACE method
913	- Change: Verify transfered files during policy update
914	- Allow getvariablemetatags() and getclassmetatags() to get a specific tag key
915	- Change: Use more restrictive unix socket perms (ENT-2705)
916	- Add sys.user_data container for user starting agent.
917	- Pass package promise options to underlying apt-get call (#802)
918	  (CFE-2468)
919	- Change: Enable agent component management policy on systemd hosts
920	  (CFE-2429)
921	- Change: Switch processes restart_class logging to verbose
922	- Change: Log level for keeping verbatim JSON to DEBUG (CFE-2141)
923	- Change: Require network before cfengine services (CFE-2435)
924	- Behaviour change: getvalues(inexistent_var) returns an empty list.
925	  Restores 3.7.x and earlier behaviour. (CFE-2479)
926	- Behaviour change: when used with CFEngine 3.10.0 or greater,
927	  bundles set_config_values() and set_line_based() are appending a
928	  trailing space when inserting a configuration option with empty value.
929	  (CFE-2466)
930	- Behaviour change: getvalues() always returns a list now. Even when v is a simple
931	  string (i.e. not an iterable) it will return an slist with one element:
932	  the value of the string variable.
933	- Behaviour change: readintlist() now prints an error if the
934	  file contains real numbers, not integers, and aborts; previously it was
935	  printing an info-level error message, was half-reading an integer out of
936	  the real, and was continuing successfully.
937	- Ensure synchronous start and stop with systemctl (ENT-2841)
938	- Change select_region INI_section to match end of section or end of file
939	  (CFE-2519)
940
941	Bug fixes:
942	- fix files promise not setting ACL properly on directories. (CFE-616)
943	- Upgrade CFEngine dependencies to the following versions:
944	  - lixml2 2.9.4
945	  - OpenSSL 1.0.2j
946	  - LibYAML 0.1.7
947	  - Curl 7.50.3
948	- Fix cumulative() to accept up to 1000 years, like it's documented.
949	- Fixed parsing of host name/IP and port number in cf-runagent
950	  (CFE-546)
951	- Fix intermittent error message of type:
952	  "error: Process table lacks space for last columns: <cmd>" (CFE-2371)
953	- storage: Properly initialize the list of current mounts (CFE-1803)
954	- Fix 'contain' attribute 'no_output' having no effect when
955	  the 'commands' promise is using 'module => "true"'. (CFE-2412)
956	- Fix bug which caused empty emails to be sent from cf-execd
957	  if there was no previous output log and the new log was fully filtered
958	  by email filters. (ENT-2739)
959	- allow ifelse(FALSE, $(x), "something else") to work. (CFE-2260)
960	- Fix connection cache, reuse connections when possible. (CFE-2447)
961	- Fix rare bug that would sometimes prevent redis-server from launching.
962	- Fix bug in files promise when multiple owners are promised
963	  but first one doesn't exist, and improve logging . (CFE-2432)
964	- define kept outcome with action warn if edit_line is as expected
965	  (CFE-2424)
966	- Example using getvariablemetatags() and getclassmetatags() to get a specific tag key
967	- Remove 2k limit on strings length when writing JSON policies
968	  (CFE-2383)
969	- Fix ttime_range constraint to go higher than 2G as number of seconds.
970	- Change: cronjob bundle tolerates different spacing
971	- Allow editing fields in lines longer than 4k (CFE-2438)
972	- Don't send empty emails for logs where everything is filtered.
973	  (ENT-2739)
974	- allow maplist(), maparray(), and mapdata() to evaluate function calls during iteration
975	  (ARCHIVE-1619)
976	- insert_lines is no longer implicitly matching EOF as
977	  end of the region if 'select_end' pattern is not matched . (CFE-2263)
978	- Change: Remove executable bit from systemd units (CFE-2436)
979	- cf-serverd should reload def.json when reloading policy (CFE-2406)
980	- Fix cf-monitord detection of usernames of the process table on AIX.
981	- Speed up local and remote file copying and fix spurious errors.
982	  (ENT-2769)
983	- Fix occasional segfault when running getindices() on a
984	  variable that has indices of multiple depths (e.g. both "a[x]" and
985	  "a[x][y]"). (CFE-2397)
986	- When no file is provided when calling cf-promises
987	  with cf or json output, use promises.cf by default. This restores the
988	  previous behavior. (CFE-2375)
989	- Fix: Services starting or stopping unnecessarily (CFE-2421)
990	- Change: Split systemd units (CFE-2278)
991	- EOF is  matched as an end of the region in edit_line
992	  promises only if 'select_end_match_eof' parameter is true. (CFE-2263)
993	- Fix double logging of output_prefix, and log process name for cf-agent syslog messages.
994	  (CFE-2225)
995	- Be less verbose if a network interface doesn't have a MAC address.
996	  (CFE-1995)
997	- Fix: CFEngine choking on standard services (CFE-2806)
998	- fix insert_lines related memory corruption (CFE-2520)
999	- fix cf-serverd crash when reporting corrupted data. (ENT-3023)
1000	- Fix ability to manage INI sections with metachars for
1001	  manage_variable_values_ini and set_variable_values_ini (CFE-2519)
1002	- Fix apt_get package module incorrectly using interactive mode.
1003	- Fix crash on Solaris when ps ucb variant is not available. (CFE-2506)
1004	- cf-serverd: Do not close connection when file does not exist.
1005	  (CFE-2532)
1006	- getvalues() now behaves correctly for old CFEngine arrays of depth 1.
1007	  Known issues: getvalues() still misbehaves with double-indexed arrays
1008	  (see (CFE-2504, CFE-2536)
1009
10103.9.0:
1011	New features/additions:
1012	- Add optional interface parameter to iprange() to match only one interface.
1013	- Allow '=' in symbolic modes (Redmine #7826)
1014	- Add: FreeBSD ports package module
1015	- New package module for FreeBSD pkg package manager.
1016	- Add support for adding/removing fifos in policy
1017	- Add Linux parsing of /proc/net/ data.
1018	  - sys.inet
1019	  - sys.inet6
1020	  - sys.interface_data
1021	  - Data is returned as a data container.
1022	  - See documentation for more details. (Jira CFE-1991)
1023	- sys.ip2iface: new reverse mapping variable from IP to interface name
1024	- Namespaced classes can now be specified on the command line.
1025	- namespaces can now be passed to cf-runagent -D and --remote-bundles
1026	  (Redmine #7856)
1027	- Add 'cf-full' and 'json-full' to cf-promises '-p' option.
1028	  They generate output based on the entire policy. The existing 'cf'
1029	  already behaved this way, and it has now been changed to generate
1030	  output only for a single file, which the existing 'json' option
1031	  already does.
1032	- New language functions: processexists() and findprocesses()
1033	  (Redmine #7633)
1034	- Implement new regex_replace() function. (Redmine #7346)
1035	- Add log rotation policy for state/classes.jsonl log. (Redmine #7951)
1036	- Added collect_vars utility bundle to stdlib
1037	- Intoduce report_class_log attribute to body agent control.
1038	  (Redmine #7951)
1039	- Add standard_services service_method allowing for explicit usage
1040	- cf-promises --show-vars can now show JSON variables.
1041	- Add json_pipe mode to mapdata(), which allows piping a
1042	  JSON container to an external program for manipulation and receiving
1043	  JSON back. The jq tool is a good example where this mode can be
1044	  useful. A corresponding $(def.jq) variable has also been added with
1045	  a default path to this tool. See documentation for mapdata() for
1046	  more information and examples. (Jira CFE-2071)
1047	- behaviour change: "true" is always defined and "false" is never defined in a context expression.
1048	- Add: nimclient package module for AIX
1049	  This module provides basic functionality for using nimclient as a means
1050	  to ensure packages are either present or absent. It does not support
1051	  listing package updates available or provide any special caching.
1052	- Add callstack_callers() and callstack_promisers() functions.
1053	- Log variable definitions in debug output. (Redmine #7137)
1054	- Add: Memory information to host info report (Jira CFE-1177)
1055	- In Mustache templates, one can now use {{#-top-}} and
1056	  {{/-top-}} tags to iterate over the top level element in a
1057	  container. (Redmine #6545)
1058	- Add network_connections() function that parses /proc/net
1059	- Provide new -w argument to override the workdir for testing
1060	- New feature: Emails sent by cf-execd can be filtered to get
1061	  rid of emails for unwanted log messages. The attributes
1062	  mailfilter_include and mailfilter_exclude in body executor
1063	  control control what to include. See documentation for cf-execd for
1064	  more information. (Jira CFE-2283)
1065	- Add: file_make_mustache bundle to render mustache templates
1066	- Add '-n' flag to cf-key to avoid host name lookups.
1067	- cf-agent, cf-execd, cf-promises, cf-runagent and cf-serverd honor multiple -D, -N and -s arguments
1068	  (Redmine #7191)
1069	- Add "canonify" mode to mapdata().
1070	- Add: printfile bodies to stdlib
1071	- Add: New results classes body [] (Redmine #7418, #7481)
1072	- Implement cf-runagent --remote-bundles and cf-serverd "bundle" access promise.
1073	  (Redmine #7581)
1074	- Add commands promise arglist attribute, augmenting args attribute.
1075	- It's now possible to reference variables in inline JSON,
1076	  for example: mergedata('[ thing, { "mykey": otherthing[123] } ]').
1077	  thing and otherthing[123] will be resolved as variables, since
1078	  they are unquoted. See the documentation for more details.
1079	  (Redmine #7871)
1080	- Allow inline JSON to be used in the following function
1081	  calls:
1082	  - data_expand()
1083	  - difference()
1084	  - every()
1085	  - filter()
1086	  - format()
1087	  - getindices()
1088	  - getvalues()
1089	  - grep()
1090	  - intersection()
1091	  - join()
1092	  - length()
1093	  - makerule()
1094	  - mapdata()
1095	  - maplist()
1096	  - mean()
1097	  - mergedata()
1098	  - none()
1099	  - nth()
1100	  - parsejson()
1101	  - product()
1102	  - regarray()
1103	  - reglist()
1104	  - reverse()
1105	  - shuffle()
1106	  - some()
1107	  - sort()
1108	  - storejson()
1109	  - string_mustache()
1110	  - sublist()
1111	  - sum()
1112	  - unique()
1113	  - url_get()
1114	  - variance()
1115	  For example: mergedata('[ "thing", { "mykey": "myvalue" } ]')
1116	  See the documentation for more details. (Jira CFE-2253)
1117	- Add: edit_line contains_literal_string to stdlib
1118	- Add body agent control select_end_match_eof option. (Jira CFE-2390)
1119
1120	Changes:
1121	- Change: classesmatching(): order of classes changed
1122	- Change: getindices(), getvalues(), variablesmatching(), maparray():
1123	  order of variables returned has changed
1124	- Change: set_quoted_values uses bundle scoped classes
1125	- Change: set_config_values uses bundle scoped classes
1126	- Change: set_variable_values uses bundle scoped classes
1127	- Change: set_config_values_matching uses bundle scoped classes
1128	- Change: manage_variable_values_ini uses bundle scoped classes
1129	- Change: set_line_based should use bundle scoped classes
1130	  (Jira CFE-1959)
1131	- getvalues() will now return a list also for data containers,
1132	  and will descend recursively into the containers. (Redmine #7116)
1133	- Change: Improve git drop user support
1134	- Use new package promise as default package promise
1135	  implementation. (Jira CFE-2332)
1136	- Don't follow symbolic links when copying extended attributes.
1137	- When a bodydefault:<promise_type>_<body_type> body is
1138	  defined, it will be used by all promises of type <promise_type>
1139	  unless another body is explicitly used.
1140	- cf-serverd no longer appends "-I -Dcfruncommand" to
1141		     cfruncommand, this has to be done manually in masterfiles
1142		     body server control. (Redmine #7732)
1143	- eval() function arguments mode and options are now
1144	  optional.
1145	- sort() function argument mode is now optional.
1146	- Change: returnszero() no longer outputs the output of a command.
1147	  The output can be seen by enabling info mode (-I).
1148	- cfruncommand is not executed under shell. (Redmine #7409)
1149	- Remove: Apache CGI module
1150	- Change: Make maxbytes arg of readjson() and readyaml() optional
1151	- Classes matching agent control's abortclasses are
1152	  now printed before exit, even if they are defined in common bundles.
1153	  Previously the regex (in abortclasses) that matched the class was
1154	  printed if the class was defined in a common bundle, but the class
1155	  itself was printed if it was defined in an agent bundle. With this
1156	  change, the defined class that caused the abort is always printed.
1157	- Remove: Support for email settings from augments_file (Redmine #7682)
1158	- Change: set_variable_values_ini uses bundle scoped classes
1159	- findfiles() now skips relative paths. (Redmine #7981)
1160	- Clients connections using non TLS protocol are rejected
1161	  by default. . (Jira CFE-2339)
1162	- Change: Policy files specified in the "inputs" section of
1163	  def.json will no longer be auto-loaded. One has to refer to the
1164	  which are using the "inputs" field inside def.json. (Redmine #7961)
1165	- Change: Separate binary details from policy update (Redmine #7662)
1166	- Add guard for binary upgrade during bootstrap (Redmine #7861)
1167	- Change: Modernize pkg module and package_method
1168	- Remove: Userdir apache module
1169	- filestat(path, "linktarget") now follows non-absolute links and returns full path of target.
1170	  This introduces a change in behaviour. Here is an example:
1171	  $ ls -l /bin/sh
1172	  lrwxrwxrwx 1 root root 4 Jun  4  2015 /bin/sh -> dash
1173	  Previously the filestat function would return "dash", and would also log
1174	  an error that the file can not be read. Now it will return "/bin/dash"
1175	  (or the final destination if it happens that /bin/dash is also a
1176	  symlink).
1177	  You can still get the previous behaviour by using
1178	  filestat(path, "linktarget_shallow"). (Redmine #7404)
1179	- Define (bootstrap|failsafe)_mode during update.cf when triggerd from failsafe.cf
1180	  (Redmine #7861)
1181	- Behavior change: The promise string of a processes
1182	  promise now matches just the command line of each process instead of
1183	  the line that is output by ps. This was done to reduce fragmentation
1184	  between platforms, since ps is a very nonstandardized tool.
1185	  (Jira CFE-2161)
1186	- Allowed namespace names made more strict, to disallow
1187	  namespaces that cannot be reached. (Redmine #7903)
1188	- Behavior change: When using readintlist(), readreallist()
1189	  or readstringlist(), parsing an empty file will no longer result in a
1190	  failed function call, but instead an empty list. Failure to open the
1191	  file will still result in a failed function call.
1192	- insert_lines is no longer implicitly matching EOF as
1193	  end of the region if 'select_end' pattern is not matched .
1194	  (Jira CFE-2263)
1195	- EOF is  matched as an end of the region in edit_line
1196	  promises only if 'select_end_match_eof' parameter is true.
1197	  (Jira CFE-2263)
1198
1199	Bug fixes:
1200	- Upgrade CFEngine dependencies to the following versions:
1201	  - Curl     7.48.0
1202	  - libxml2  2.9.4
1203	  - LMDB     0.9.18
1204	  - OpenLDAP 2.4.44
1205	  - OpenSSL  1.0.2h
1206	  - PCRE     8.38
1207	  (Jira ENT-2720)
1208	- Upgrade dependencies to latest minor versions.
1209	  For Community / Enterprise:
1210	  For Enterprise:
1211	- Fix bug which sometimes misparses user names in ps output.
1212	- Fix: Problem with git not dropping privileges soon enough
1213	- Allow def.json up to 5MB instead of 4K.
1214	- It is possible to edit the same value in multiple regions
1215	  of one file. (Redmine #7460)
1216	- CFEngine on Windows no longer truncates log messages if the
1217	  program in question is killed halfway through.
1218	- Fixed a bug which caused def.json not being able to define
1219	  classes based on other hard classes. (Jira CFE-2333)
1220	- Change: Tighten Enterprise hub permissions (Jira ENT-2708)
1221	- Fix a regression which would sometimes cause "Permission
1222	  denied" errors on files inside directories with very restricted
1223	  permissions. (Redmine #7808)
1224	- Fix use-after-free in ArrayMap and HashMap (Redmine #7952)
1225	- Package repositories are no more hit every time package promise
1226	  is evaluated on SUSE.
1227	- Fix a bug which sometimes caused package promises to be
1228	  skipped with "XX Another cf-agent seems to have done this since I
1229	  started" messages in the log, most notably in long running cf-agent
1230	  runs (longer than one minute). (Redmine #7933)
1231	- TTY detection should be more reliable. (Redmine #7606)
1232	- cf-promises -p cf now produces valid cfengine code (Redmine #7956)
1233	- Fix ps options for FreeBSD to check processes only in current host and not in jails
1234	- cf-runagent now properly supports multiple -D or -s arguments
1235	  (Redmine #7191)
1236	- Fix: Work around impaired class definition from augments
1237	  (Jira CFE-2333)
1238	- Fix "No such file or directory" LMDB error on heavily loaded hosts.
1239	  (Jira CFE-2300)
1240	- Check for empty server response in RemoteDirList after decryption
1241	  (Redmine #7908)
1242	- Small performance optimization when cf-execd scans emails before sending.
1243	- Fix handling of closed connections during transactions
1244	  (Redmine #7926)
1245	- The core ps parsing engine used for processes promises
1246	  has been rewritten from scratch, and should be more robust than
1247	  before. (Jira CFE-2161)
1248	- Fix the lexer which could not handle empty newline(s)
1249	  before a @endif.
1250	- groupexists() no longer fails to detect a group name
1251	  starting with a digit. (Jira CFE-2351)
1252	- Fix HP-UX specific bug that caused a lot of log output to disappear.
1253	- Fix unresolved variable (Redmine #7931)
1254	- Change: Suppress standard services noise on SUSE (Redmine #6968)
1255	- Reduce verbosity of yum package module (Redmine #7485)
1256	- cf-runagent: Allow connections to localhost instead of failing silently.
1257	- Show errors regarding failure to copy extended attributes
1258	  when doing a local file copy. Errors could happen when copying
1259	  across two different mount points where the support for extended
1260	  attributes is different between the mount points.
1261	- Fix classes being set because of hash collision in the implementation.
1262	  (Redmine #7912)
1263	- fix build failure on FreeBSD 7.1 (Redmine #7415)
1264	- Improve logging when managing setuid/setgid
1265	- Reduce verbosity of apt_get package module (Redmine #7485)
1266	- packagesmatching() and packageupdatesmatching() should work
1267	  when new package promise is used. (Jira CFE-2246)
1268	- Fix bug which could render host unable to recover from a
1269	  syntax error, even if failsafe.cf was utilized. This could happen if
1270	  the file containing the syntax error was specified in the def.json
1271	  special file. (Redmine #7961)
1272	- Prevent crash in cf-execd email code when policy server is not set.
1273	- In case of networking error, assume checksum is wrong
1274	- Fix two cases where action_policy warn still produces errors
1275	  (Redmine #7274)
1276	- Fix bad option nlwp to vzps on Proxmox / OpenVZ. (Redmine #6961)
1277	- @if minimum_version now correctly ignores lines starting with '@'
1278	  (Redmine #7862)
1279	- No longer hang when changing permissions/ownership on fifos
1280	  (Redmine #7030)
1281	- readfile() and read*list() should print an error if they fail to read file.
1282	  (Redmine #7702)
1283	- The isvariable() function call now correctly accepts all
1284	  array variables when specified inline. Previously it would not accept
1285	  certain special characters, even though they could be specified
1286	  indirectly by using a variable to hold it. (Redmine #7088)
1287	- Fix file descriptor leak when there are network errors.
1288	- Improve robustness of process table parsing on Solaris.
1289	  (Jira CFE-2161)
1290	- Installing packages containing version numbers using yum
1291	  now works correctly. (Redmine #7825)
1292	- Parse def.json vars, classes and inputs from the C
1293	  code. This fixes a bug where certain entries in this file would be
1294	  parsed too late to have any effect on the evaluation.
1295	  (Redmine #7453, #7615)
1296	- Change package modules permissions on hub package so that
1297	  hub can execute package promises. (Redmine #7602)
1298	- Fix: CFEngine choking on standard services (Jira CFE-2086)
1299	- Fix: cf-upgrade on SUSE
1300	- Fix: Stop cfengine choking on systemctl output (Jira CFE-2806)
1301	- storage: Properly initialize the list of current mounts
1302	  (Jira CFE-1803)
1303	- Fix bug which caused empty emails to be sent from cf-execd
1304	  if there was no previous output log and the new log was fully filtered
1305	  by email filters. (Jira ENT-2739)
1306	- Don't send empty emails for logs where everything is filtered.
1307	  (Jira ENT-2739)
1308	- Fix intermittent error message of type:
1309	  "error: Process table lacks space for last columns: <cmd>"
1310	  (Jira CFE-2371)
1311	- Be less verbose if a network interface doesn't have a MAC address.
1312	  (Jira CFE-1995)
1313
13143.8.2:
1315	Fixes:
1316	- Update library dependencies to latest version.
1317	  Libraries upgraded:
1318	  - curl 7.47.0
1319	  - LMDB 0.9.18
1320	  - MySQL 5.1.72
1321	  - OpenLDAP 2.4.44
1322	  - OpenSSL 1.0.2g
1323	  - PostgreSQL 9.3.11
1324	  - Redis 3.0.7
1325	  - rsync 3.1.2
1326	  PHP was kept at 5.6.17 because of problems with the 5.6.19 version.
1327	- Reduce verbosity of apt_get package module (Redmine #7485)
1328	- Reduce verbosity of yum package module (Redmine #7485)
1329	- The isvariable() function call now correctly accepts all
1330	  array variables when specified inline. Previously it would not accept
1331	  certain special characters, even though they could be specified
1332	  indirectly by using a variable to hold it. (Redmine #7088)
1333	- Don't follow symbolic links when copying extended attributes.
1334	- Fix a bug which sometimes caused package promises to be
1335	  skipped with "XX Another cf-agent seems to have done this since I
1336	  started" messages in the log, most notably in long running cf-agent
1337	  runs (longer than one minute). (Redmine #7933)
1338	- Fix bug which could render host unable to recover from a
1339	  syntax error, even if failsafe.cf was utilized. This could happen if
1340	  the file containing the syntax error was specified in the def.json
1341	  special file. (Redmine #7961)
1342	- Change: Policy files specified in the "inputs" section of
1343	  def.json will no longer be auto-loaded. One has to refer to the
1344	  $(def.augments_inputs) variable in the policy (the standard
1345	  masterfiles policies include this by default). This only affects
1346	  installations which are not based on the standard masterfiles, and
1347	  which are using the "inputs" field inside def.json. (Redmine #7961)
1348	- Fix file descriptor leak when there are network errors.
1349	- Fix cf-serverd error messages with classic protocol clients
1350	  (Redmine #7818)
1351	- Installing packages containing version numbers using yum
1352	  now works correctly. (Redmine #7825)
1353	- Fix ps options for FreeBSD to check processes only in current host and not in jails
1354	- fix build failure on FreeBSD 7.1 (Redmine #7415)
1355	- Show errors regarding failure to copy extended attributes
1356	  when doing a local file copy. Errors could happen when copying
1357	  across two different mount points where the support for extended
1358	  attributes is different between the mount points.
1359	- Fix classes being set because of hash collision in the implementation.
1360	  (Redmine #7912)
1361	- Allow def.json up to 5MB instead of 4K.
1362	- Fix a regression which would sometimes cause "Permission
1363	  denied" errors on files inside directories with very restricted
1364	  permissions. (Redmine #7808)
1365	- Change: Suppress standard services noise on SUSE (Redmine #6968)
1366
1367	Changes:
1368	- Change: classesmatching(): order of classes changed
1369
13703.8.1:
1371	Changes:
1372	- Upgrade CFEngine dependencies to the following versions:
1373	  - OpenSSL   1.0.2e
1374	  - PCRE      8.38
1375	  - libxml2   2.9.3
1376	  - OpenLDAP  2.4.43
1377	  - libcurl   7.46.0
1378	- Upgrade LMDB to version 0.9.17. (Redmine #7879)
1379
1380	Bug fixes:
1381	- @if minimum_version now correctly ignores lines starting with '@'
1382	  (Redmine #7862)
1383	- Add guard for binary upgrade during bootstrap (Redmine #7861)
1384	- Namespaced classes can now be specified on the command line.
1385	- Fix bad option nlwp to vzps on Proxmox / OpenVZ. (Redmine #6961)
1386	- Fix two cases where action_policy warn still produces errors
1387	  (Redmine #7274)
1388	- Parse def.json vars, classes and inputs from the C
1389	  code. This fixes a bug where certain entries in this file would be
1390	  parsed too late to have any effect on the evaluation.
1391	  (Redmine #7453, #7615)
1392	- Fix HP-UX specific bug that caused a lot of log output to disappear.
1393	- Check for empty server response in RemoteDirList after decryption
1394	  (Redmine #7908)
1395	- getvalues() will now return a list also for data containers,
1396	  and will descend recursively into the containers. (Redmine #7116)
1397	- Define (bootstrap|failsafe)_mode during update.cf when triggerd from failsafe.cf
1398	  (Redmine #7861)
1399
1400
14013.8.0:
1402	New features/additions:
1403	- New feature: Bodies can now inherit attribute values from
1404	  other bodies by specifying "inherit_from" with the name of the body to
1405	  inherit from, plus any arguments it accepts. For example:
1406	    body classes myclasses
1407	    {
1408		inherit_from => classes_generic("myname");
1409	    }
1410	    (Redmine #4309)
1411	- Add url_get() function. (Redmine #6480)
1412	- Add @if feature() syntax
1413	  @if feature work like @if minimum_version but allows distinguishing
1414	  between features chosen at compile time.
1415	- Extend module protocol to create persistent classes.
1416	  To use it, have the module print a line with "^persistence=<minutes>"
1417	  before printing any class names. "persistence=0" goes back to non-
1418	  persistent classes. (Redmine #7302)
1419	- Add: New results classes body (Redmine #7418)
1420	- Add: Debug reports in cfe_internal_cleanup_agent_reports
1421	- Add: Path to svcprop in stdlib
1422	- Add: masterfiles-stage script to contrib
1423	- Whitespace is now allowed in class expressions for
1424	  readability, between class names and operators. (Redmine #7152)
1425
1426	Changes:
1427	- Change: Clarify bootstrap/failsafe reports
1428	- Change: Improve in-line docs for internal log maintenance
1429	- Change: Improve efficiency and debug reports (Redmine #7527)
1430	- Remove: 3.5 support from masterfiles policy framework
1431	- Long promiser strings with multiple lines are now
1432	  abbreviated in logs. (Redmine #3964)
1433	- Change: Reunify Version based policy split
1434	- Change: Separate binary details from policy update (Redmine #7662)
1435	- Remove /var/cfengine/cf3.<host>.runlog. (Redmine #6957)
1436	- Change: sys.libdir and sys.local_libdir to non version specific path
1437	    - sys.libdir now resolves to $(sys.inputdir)/lib
1438	    - sys.local_libdir now resolves to lib (Redmine #7559)
1439	- Moved the following files to /var/cfengine/log/:
1440	    - /var/cfengine/promise_summary.log
1441	    - /var/cfengine/cfagent.<host>.log
1442	- Change: Separate binary details from policy update (Redmine #7662)
1443	- Remove: Support for email settings from augments_file (Redmine #7682)
1444
1445	Bug fixes:
1446	- It is possible to edit the same value in multiple regions
1447	  of one file. (Redmine #7460)
1448	- Change package modules permissions on hub package so that
1449	  hub can execute package promises. (Rednime #7602) (Redmine #7602)
1450	- Fix exporting CSV reports through HTTPS. (Redmine #7267)
1451	- cf-agent, cf-execd, cf-promises, cf-runagent and cf-serverd honor
1452	  multiple -D, -N and -s arguments (Redmine #7191)
1453	- readfile() and read*list() should print an error if they fail to read file.
1454	  (Redmine #7702)
1455	- No longer hang when changing permissions/ownership on fifos
1456	  (Redmine #7030)
1457	- Fix broken HA policy for 3rd disaster-recovery node.
1458	- Fix: Policy errors for 3.5 and 3.6
1459	- Mustache templates: Fix {{@}} key when value is not a
1460	  primitive. The old behavior, when iterating across a map or array of
1461	  maps, was to abort if the key was requested with {{@}}. The new
1462	  behavior is to always replace {{@}} with either the key name or the
1463	  iteration position in the array. An error is printed if {{@}} is used
1464	  outside of a Mustache iteration section.
1465	- Fix build with musl libc. (Redmine #7455)
1466	- Fixed a bug which could cause daemons to not to be killed
1467	  correctly when upgrading or manually running "service cfengine3 stop".
1468	  (Redmine #7193)
1469	- Fix daemons not restarting correctly on upgrade on AIX.
1470	- Package promise: Fix inability to install certain packages
1471	  with numbers. (Redmine #7421)
1472	- Redmine #6027 Directories should no more be changed randomly
1473	  into files. (Redmine #6027)
1474	- Improve cf-serverd's lock contention because of getpwnam()
1475		     call. (Redmine #7643) (Redmine #7643)
1476	- action_policy "warn" now correctly produces warnings instead
1477	  of various other verbosity levels. (Redmine #7274)
1478	- If there is an error saving a mustache template file
1479	  it is now logged with log-level error (was inform).
1480	- The JSON parser now supports unquoted strings as keys.
1481	- Reduce malloc() thread contention on heavily loaded
1482	  cf-serverd, by not exiting early in the logging function, if no message
1483	  is to be printed. (Redmine #7624) (Redmine #7624)
1484	- Fix a bug which caused daemons not to be restarted on
1485	  upgrade. (Redmine #7528)
1486	- Include latest security updates for dependencies.
1487	- Fixed bug which would cause bff and depot packages not to
1488	  run package scripts on removal. (Redmine #7193)
1489	- Fix upgrade causing error message under systemd because of open ports.
1490	- Fixed several bugs which prevented CFEngine from loading
1491	  libraries from the correct location. This affected several platforms.
1492	  (Redmine #6708)
1493	- Legacy package promise: Result classes are now defined if
1494	  the package being promised is already up to date. (Redmine #7399)
1495	- failsafe.cf will be created when needed. (Redmine #7634)
1496	  (Redmine #7634)
1497	- If file_select.file_types is set to symlink and there
1498	  are regular files in the scanned directory, CFEngine no longer
1499	  produces an unnecessary error message. (Redmine #6996)
1500	- Fix 'AIX_PREINSTALL_ALREADY_DONE.txt: cannot create' error
1501	  message on AIX.
1502	- Fix package promise not removing dependent packages. (Redmine #7424)
1503	- Fix: Solaris packages no longer contain duplicate library
1504	  files, but instead symlinks to them. (Redmine #7591)
1505	- Fix select_class not setting class when used in common bundle with slist.
1506	  (Redmine #7482)
1507	- Fix "@endif" keyword sometimes being improperly processed
1508	  by policy parser. (Redmine #7413)
1509	- Fix noise from internal policy to upgrade windows agents
1510	  (Redmine #7456)
1511	- cfruncommand now works if it contains spaces, with the TLS protocol.
1512	  (Redmine #7405)
1513	- Fix warning "Failed to parse csv file entry" with certain very long
1514	  commands promises. (Redmine #7400)
1515	- CFEngine no longer erronously passes -M to useradd on HP-UX. (Redmine #6734)
1516	- cf-monitord no longer complains about missing thermal zone files.
1517	  (Redmine #7238)
1518	- systemd is now detected correctly if it is a symlink (Redmine #7297)
1519	- TTY detection should be more reliable. (Redmine #7606)
1520	  (Redmine #7606)
1521
1522
15233.7.3
1524	Fixes:
1525	- Reduce verbosity of yum package module (Redmine #7485)
1526	- Reduce verbosity of apt_get package module (Redmine #7485)
1527	- Upgrade dependencies to latest patch versions.
1528	  Upgraded libraries:
1529	  - curl 7.47.0
1530	  - libxml2 2.9.3
1531	  - LMDB 0.9.18
1532	  - MySQL 5.1.72
1533	  - OpenLDAP 2.4.44
1534	  - OpenSSL 1.0.2g
1535	  - PCRE 8.38
1536	  - PostgreSQL 9.3.11
1537	  - Redis 2.8.24
1538	  - rsync 3.1.2
1539	  PHP was kept at 5.6.17 because of problems with the 5.6.19 version.
1540	- parse def.json vars, classes, and inputs in C (Redmine #7453)
1541	- Namespaced classes can now be specified on the command line.
1542	- getvalues() will now return a list also for data containers,
1543	  and will descend recursively into the containers. (Redmine #7116)
1544	- @if minimum_version now correctly ignores lines starting with '@'
1545	  (Redmine #7862)
1546	- Fix definition of classes from augments file
1547	- Don't follow symbolic links when copying extended attributes.
1548	- Fix ps options for FreeBSD to check processes only in current host and not in jails
1549	- Fix cf-serverd error messages with classic protocol clients
1550	  (Redmine #7818)
1551	- Change: Suppress standard services noise on SUSE (Redmine #6968)
1552	- The isvariable() function call now correctly accepts all
1553	  array variables when specified inline. Previously it would not accept
1554	  certain special characters, even though they could be specified
1555	  indirectly by using a variable to hold it. (Redmine #7088)
1556	- Show errors regarding failure to copy extended attributes
1557	  when doing a local file copy. Errors could happen when copying
1558	  across two different mount points where the support for extended
1559	  attributes is different between the mount points.
1560	- Fix bad option nlwp to vzps on Proxmox / OpenVZ. (Redmine #6961)
1561	- Fix file descriptor leak when there are network errors.
1562	- Fix a regression which would sometimes cause "Permission
1563	  denied" errors on files inside directories with very restricted
1564	  permissions. (Redmine #7808)
1565	- Check for empty server response in RemoteDirList after decryption
1566	  (Redmine #7908)
1567	- Allow def.json up to 5MB instead of 4K.
1568	- Add guard for binary upgrade during bootstrap (Redmine #7861)
1569	- Fix HP-UX specific bug that caused a lot of log output to disappear.
1570	- Fix a bug which sometimes caused package promises to be
1571	  skipped with "XX Another cf-agent seems to have done this since I
1572	  started" messages in the log, most notably in long running cf-agent
1573	  runs (longer than one minute). (Redmine #7933)
1574	- Define (bootstrap|failsafe)_mode during update.cf when triggerd from failsafe.cf
1575	  (Redmine #7861)
1576	- Fix two cases where action_policy warn still produces errors
1577	  (Redmine #7274)
1578	- Fix classes being set because of hash collision in the implementation.
1579	  (Redmine #7912)
1580	- fix build failure on FreeBSD 7.1 (Redmine #7415)
1581	- Installing packages containing version numbers using yum
1582	  now works correctly. (Redmine #7825)
1583
1584	Changes:
1585	- Change: classesmatching(): order of classes changed
1586
1587	3.7.3
1588	Fixes:
1589	- Reduce verbosity of yum package module (Redmine #7485)
1590	- Reduce verbosity of apt_get package module (Redmine #7485)
1591	- Upgrade dependencies to latest patch versions.
1592	  Upgraded libraries:
1593	  - curl 7.47.0
1594	  - libxml2 2.9.3
1595	  - LMDB 0.9.18
1596	  - MySQL 5.1.72
1597	  - OpenLDAP 2.4.44
1598	  - OpenSSL 1.0.2g
1599	  - PCRE 8.38
1600	  - PostgreSQL 9.3.11
1601	  - Redis 2.8.24
1602	  - rsync 3.1.2
1603	  PHP was kept at 5.6.17 because of problems with the 5.6.19 version.
1604	- parse def.json vars, classes, and inputs in C (Redmine #7453)
1605	- Namespaced classes can now be specified on the command line.
1606	- getvalues() will now return a list also for data containers,
1607	  and will descend recursively into the containers. (Redmine #7116)
1608	- @if minimum_version now correctly ignores lines starting with '@'
1609	  (Redmine #7862)
1610	- Fix definition of classes from augments file
1611	- Don't follow symbolic links when copying extended attributes.
1612	- Fix ps options for FreeBSD to check processes only in current host and not in jails
1613	- Fix cf-serverd error messages with classic protocol clients
1614	  (Redmine #7818)
1615	- Change: Suppress standard services noise on SUSE (Redmine #6968)
1616	- The isvariable() function call now correctly accepts all
1617	  array variables when specified inline. Previously it would not accept
1618	  certain special characters, even though they could be specified
1619	  indirectly by using a variable to hold it. (Redmine #7088)
1620	- Show errors regarding failure to copy extended attributes
1621	  when doing a local file copy. Errors could happen when copying
1622	  across two different mount points where the support for extended
1623	  attributes is different between the mount points.
1624	- Fix bad option nlwp to vzps on Proxmox / OpenVZ. (Redmine #6961)
1625	- Fix file descriptor leak when there are network errors.
1626	- Fix a regression which would sometimes cause "Permission
1627	  denied" errors on files inside directories with very restricted
1628	  permissions. (Redmine #7808)
1629	- Check for empty server response in RemoteDirList after decryption
1630	  (Redmine #7908)
1631	- Allow def.json up to 5MB instead of 4K.
1632	- Add guard for binary upgrade during bootstrap (Redmine #7861)
1633	- Fix HP-UX specific bug that caused a lot of log output to disappear.
1634	- Fix a bug which sometimes caused package promises to be
1635	  skipped with "XX Another cf-agent seems to have done this since I
1636	  started" messages in the log, most notably in long running cf-agent
1637	  runs (longer than one minute). (Redmine #7933)
1638	- Define (bootstrap|failsafe)_mode during update.cf when triggerd from failsafe.cf
1639	  (Redmine #7861)
1640	- Fix two cases where action_policy warn still produces errors
1641	  (Redmine #7274)
1642	- Fix classes being set because of hash collision in the implementation.
1643	  (Redmine #7912)
1644	- fix build failure on FreeBSD 7.1 (Redmine #7415)
1645	- Installing packages containing version numbers using yum
1646	  now works correctly. (Redmine #7825)
1647
1648	Changes:
1649	- Change: classesmatching(): order of classes changed
1650
1651
16523.7.2:
1653	Bug fixes:
1654	- readfile() and read*list() should print an error if they fail to read file.
1655	  (Redmine #7702)
1656	- Fix 'AIX_PREINSTALL_ALREADY_DONE.txt: cannot create' error
1657	  message on AIX.
1658	- If there is an error saving a mustache template file
1659	  it is now logged with log-level error (was inform).
1660	- Change: Clarify bootstrap/failsafe reports
1661	- Fixed several bugs which prevented CFEngine from loading
1662	  libraries from the correct location. This affected several platforms.
1663	  (Redmine #6708)
1664	- If file_select.file_types is set to symlink and there
1665	  are regular files in the scanned directory, CFEngine no longer
1666	  produces an unnecessary error message. (Redmine #6996)
1667	- Fix: Solaris packages no longer contain duplicate library
1668	  files, but instead symlinks to them. (Redmine #7591)
1669	- cf-agent, cf-execd, cf-promises, cf-runagent and cf-serverd honor
1670	  multiple -D, -N and -s arguments (Redmine #7191)
1671	- Fix "@endif" keyword sometimes being improperly processed
1672	  by policy parser. (Redmine #7413)
1673	- It is possible to edit the same value in multiple regions
1674	  of one file. (Redmine #7460)
1675	- Fix select_class not setting class when used in common bundle with slist.
1676	  (Redmine #7482)
1677	- Fix broken HA policy for 3rd disaster-recovery node.
1678	- Directories should no more be changed randomly
1679	  into files. (Redmine #6027)
1680	- Include latest security updates for 3.7.
1681	- Reduce malloc() thread contention on heavily loaded
1682	  cf-serverd, by not exiting early in the logging function, if no message
1683	  is to be printed. (Redmine #7624)
1684	- Improve cf-serverd's lock contention because of getpwnam()
1685	  call. (Redmine #7643)
1686	- action_policy "warn" now correctly produces warnings instead
1687	  of various other verbosity levels. (Redmine #7274)
1688	- Change: Improve efficiency and debug reports (Redmine #7527)
1689	- Change package modules permissions on hub package so that
1690	  hub can execute package promises. (Redmine #7602)
1691	- No longer hang when changing permissions/ownership on fifos
1692	  (Redmine #7030)
1693	- Fix exporting CSV reports through HTTPS. (Redmine #7267)
1694	- failsafe.cf will be created when needed. (Redmine #7634)
1695	- Mustache templates: Fix {{@}} key when value is not a
1696	  primitive. The old behavior, when iterating across a map or array of
1697	  maps, was to abort if the key was requested with {{@}}. The new
1698	  behavior is to always replace {{@}} with either the key name or the
1699	  iteration position in the array. An error is printed if {{@}} is used
1700	  outside of a Mustache iteration section.
1701	- Legacy package promise: Result classes are now defined if
1702	  the package being promised is already up to date. (Redmine #7399)
1703	- TTY detection should be more reliable. (Redmine #7606)
1704
1705	Masterfiles:
1706	- Add: Path to svcprop in stdlib
1707	- Add: New results classes body [] (Redmine #7418, #7481)
1708	- Remove: Support for email settings from augments_file (Redmine #7682)
1709
17103.7.1:
1711	Bug fixes:
1712	- Fix daemons not restarting correctly on upgrade on AIX. (Redmine #7550)
1713	- Fix upgrade causing error message under systemd because of open ports.
1714	- Fix build with musl libc. (Redmine #7455)
1715	- Long promiser strings with multiple lines are now
1716	  abbreviated in logs. (Redmine #3964)
1717	- Fixed a bug which could cause daemons to not to be killed
1718	  correctly when upgrading or manually running "service cfengine3 stop".
1719	  (Redmine #7193)
1720	- Package promise: Fix inability to install certain packages
1721	  with numbers.
1722	- Fix package promise not removing dependent packages. (Redmine #7424)
1723	- Fix warning "Failed to parse csv file entry" with certain very long
1724	  commands promises. (Redmine #7400)
1725	- Fix misaligned help output in cf-hub. (Redmine #7273)
1726	- Augmenting inputs from the augments_file (Redmine #7420)
1727	- Add support for failover to 3rd HA node located outside cluster.
1728	- Upgrade all dependencies for patch release.
1729	- Fix a bug which caused daemons not to be restarted on
1730	  upgrade. (Redmine #7528)
1731
17323.7.0:
1733	New features:
1734	- New package promise implementation.
1735	  The syntax is much simpler, to try it out, check out the syntax:
1736	      packages:
1737		  "mypackage"
1738		    policy => "absent/present",
1739
1740		      # Optional, default taken from common control
1741		    package_module => apt_get,
1742
1743		      # Optional, will only match exact version. May be
1744		      # "latest".
1745		    version => "32.0",
1746
1747		      # Optional.
1748		    architecture => "x86_64";
1749
1750	- Full systemd support for all relevant platforms
1751	- New classes to determine whether certain features are enabled:
1752	    * feature_yaml
1753	    * feature_xml
1754	  For the official CFEngine packages, these are always enabled, but
1755	  packages from other sources may be built without the support.
1756	- New readdata() support for generic data input (CSV, YAML, JSON, or auto)
1757	- YAML support: new readyaml() function and in readdata()
1758	- CSV support: new readcsv() function and in readdata()
1759	- New string_mustache() function
1760	- New data_regextract() function
1761	- eval() can now be called with "class" as the "mode" argument, which
1762	  will cause it to return true ("any") if the calculated result is
1763	  non-zero, and false ("!any") if it is zero.
1764	- New list_ifelse() function
1765	- New mapdata() function as well as JSON support in maparray().
1766	- filestat() function now supports "xattr" argument for extended
1767	  attributes.
1768	- "ifvarclass" now has "if" as an alias, and "unless" as an inverse
1769	  alias.
1770	- Ability to expand JSON variables directory in Mustache templates:
1771	  Prefix the name with '%' for multiline expansion, '$' for compact
1772	  expansion.
1773	- Ability to expand the iteration *key* in Mustache templates with @
1774	- Canonical JSON output: JSON output has reliably sorted keys so the
1775	  same data structure will produce the same JSON every time.
1776	- New "@if minimum_version(x.x)" syntax in order to hide future language
1777	  improvements from versions that don't understand them.
1778	- compile time option (--with-statedir) to
1779	  override the default state/ directory path.
1780	- Fix error messages/ handling in process signalling which no longer
1781	  allowed any signals to fail silently
1782	- Also enable shortcut keyword for cf-serverd classic protocol, eg to
1783	  simplify the bootstrap process for clients that have different
1784	  sys.masterdir settings (Redmine #3697)
1785	- methods promises now accepts the bundle name in the promiser string,
1786	  as long as it doesn't have any parameters.
1787	- In a services promise, if the service_method bundle is not specified,
1788	  it defaults to the promiser string (canonified) with "service_" as a
1789	  prefix. The bundle must be in the same namespace as the promise.
1790	- inline JSON in policy files: surrounding with parsejson() is now
1791	  optional *when creating a new data container*.
1792	- New data_expand() function to interpolate variables in a data container.
1793	- Add configurable network bandwidth limit for all outgoing
1794	  connections ("bwlimit" attribute in "body common control") . To
1795	  enforce it in both directions, make sure the attribute is set on both
1796	  sides of the connection.
1797	- Secure bootstrap has been facilitated by use of
1798	  "cf-agent --boostrap HUB_ADDRESS --trust-server=no"
1799	- Implement new TLS-relevant options (Redmine #6883):
1800	  - body common control: tls_min_version
1801	  - body server control: allowtlsversion
1802	  - body common control: tls_ciphers
1803	  - body server control: allowciphers (preexisting)
1804
1805	Changes:
1806	- Improved output format, less verbose, and messages are grouped.
1807	- cf-execd: agent_expireafter default was changed to 120 minutes
1808	  (Redmine #7113)
1809	- All embedded databases are now rooted in the state/ directory.
1810	- TLS used as default for all outgoing connections.
1811	- process promise now reports kept status instead of repaired if a
1812	  signal is not sent, even if the restart_class is set. The old
1813	  behavior was to set the repaired status whenever the process was not
1814	  running. (Redmine#7216).
1815	- Bootstrapping requires keys to be generated in advance using cf-key.
1816	- Disable class set on reverse lookup of interfaces IP addresses.
1817	  (Redmine #3993, Redmine #6870)
1818	- Define a hard class with just the OS major version on FreeBSD.
1819	- Abort cf-agent if OpenSSL's random number generator can't
1820	  be seeded securely.
1821	- Masterfiles source tarball now installs using the usual commands
1822	  "./configure; make install".
1823	- Updated Emacs syntax highlighting template to support the latest
1824	  syntax enhancements in 3.7.
1825
1826	Deprecations:
1827	- Arbitrary arguments to cfruncommand (using "cf-runagent -o") are
1828	  not acceptable any more. (Redmine #6978)
1829	- 3.4 is no longer supported in masterfiles.
1830
1831	Bug fixes:
1832	- Fix server common bundles evaluation order (Redmine#7211).
1833	- Limit LMDB disk usage by preserving sparse areas in LMDB files
1834	  (Redmine#7242).
1835	- Fixed LMDB corruption on HP-UX 11.23. (Redmine #6994)
1836	- Fixed insert_lines failing to converge if preserve_block was used.
1837	  (Redmine #7094)
1838	- Fixed init script failing to stop/restart daemons on openvz/lxc
1839	  hosts. (Redmine #3394)
1840	- rm_rf_depth now deletes base directory as advertised. (Redmine #7009)
1841	- Refactored cf-agent's connection cache to properly differentiate
1842	  hosts using all needed attributes like host and port.
1843	  (Redmine #4646)
1844	- Refactored lastseen database handling to avoid inconsistencies.
1845	  (Redmine #6660)
1846	- cf-key --trust-key now supports new syntax to also update the
1847	  lastseen database, so that clients using old protocol will trust
1848	  the server correctly.
1849	- Fixed a bug which sometimes caused an agent or daemon to kill or stop
1850	  itself. (Redmine #7075, #7244)
1851	- Fixed a bug which made it difficult to kill CFEngine daemons,
1852	  particularly cf-execd. (Redmine #6659, #7193)
1853	- Fixed a bug causing systemd not to be detected correctly on Debian.
1854	  (Redmine #7297)
1855	- "cf-promises -T" will now correctly report the checked out commit,
1856	  even if you haven't checked out a Git branch. (Redmine #7332)
1857	- Reduce verbosity of harmless errors related to socket timeouts and
1858	  missing thermal zone files. (Redmine #6486 and #7238)
1859
1860	Masterfiles:
1861
1862	Added:
1863	- Support for user specified overring of framework defaults without
1864	  modifying policy supplied by the framework itself (see
1865	  example_def.json)
1866	- Support for def.json class augmentation in update policy
1867	- Run vacuum operation on postgresql every night as a part of
1868	  maintenance.
1869	- Add measure_promise_time action body to lib (3.5, 3.6, 3.7, 3.8)
1870	- New negative class guard cfengine_internal_disable_agent_email so
1871	  that agent email can be easily disabled by augmenting def.json
1872
1873	Changed:
1874	- Relocate def.cf to controls/VER/
1875	- Relocate update_def to controls/VER
1876	- Relocate all controls to controls/VER
1877	- Only load cf_hub and reports.cf on CFEngine Enterprise installs
1878	- Relocate acls related to report collection from bundle server
1879	  access_rules to controls/VER/reports.cf into bundle server
1880	  report_access_rules
1881	- Re-organize cfe_internal splitting core from enterprise specific
1882	  policies and loading the appropriate inputs only when necessary
1883	- Moved update directory into cfe_internal as it is not generally
1884	  intended to be modified
1885	- services/autorun.cf moved to lib/VER/ as it is not generally intended
1886	  to be modified
1887	- To improve predictibility autorun bundles are activated in
1888	  lexicographical order
1889	- Relocate services/file_change.cf to cfe_internal/enterprise. This
1890	  policy is most useful for a good OOTB experience with CFEngine
1891	  Enterprise Mission Portal.
1892	- Relocate service_catalogue from promsies.cf to services/main.cf. It is
1893	  intended to be a user entry. This name change correlates with the main
1894	  bundle being activated by default if there is no bundlesequence
1895	  specified.
1896	- Reduce benchmarks sample history to 1 day.
1897	- Update policy no longer generates a keypair if one is not found.
1898	  (Redmine: #7167)
1899	- Relocate cfe_internal_postgresql_maintenance bundle to lib/VER/
1900	- Set postgresql_monitoring_maintenance only for versions 3.6.0 and
1901	  3.6.1
1902	- Move hub specific bundles from lib/VER/cfe_internal.cf into
1903	  lib/VER/cfe_internal_hub.cf and load them only if policy_server policy
1904	  if set.
1905	- Re-organize lib/VER/stdlib.cf from lists into classic array for use
1906	  with getvalues
1907
1908	Removed:
1909	- Diff reporting on /etc/shadow (Enterprise)
1910	- Update policy from promise.cf inputs. There is no reason to include
1911	  the update policy into promsies.cf, update.cf is the entry for the
1912	  update policy
1913	- _not_repaired outcome from classes_generic and scoped_classes generic
1914	  (Redmine: # 7022)
1915
1916	Fixes:
1917	- standard_services now restarts the service if it was not already
1918	  running when using service_policy => restart with chkconfig (Redmine
1919	  #7258)
1920
1921
19223.6.5:
1923	Features:
1924	- Introduced "systemd" hard class. (Redmine #6995)
1925	- Added paths to dtrace, zfs and zpool on FreeBSD in masterfiles.
1926
1927	Bug fixes:
1928	- Fixed build error on certain RHEL5 and SLES10 setups. (Redmine #6841)
1929	- Fixed a bug which caused dangling symlinks not to be removed.
1930	  (Redmine #6582)
1931	- Fixed data_readstringarrayidx function not preserving the order of the
1932	  array it's producing. (Redmine #6920)
1933	- Fixed a bug which sometimes caused CFEngine to kill the wrong daemon
1934	  if both the host and a container inside the host were running
1935	  CFEngine. (Redmine #6906)
1936	- Made sure the rm_rf_depth bundle also deletes the base directory.
1937	  (Redmine #7009)
1938	- Fixed monitord reporting wrongly on open ports. (Redmine #6926)
1939	- Skip adding the class when its name is longer than 1024 characters.
1940	  Fixed core dump when the name is too large. (Redmine #7013)
1941	- Fixed detection of stopped process on Solaris. (Redmine #6946)
1942	- Fixed infinite loop (Redmine #6992) plus a couple more minor
1943	  bugs in edit_xml promises.
1944
19453.6.4:
1946	Features:
1947	- Introduced users promises support on HP-UX platform.
1948	- Introduced process promises support on HP-UX platform.
1949
1950	Bug fixes:
1951	- Fixed bug on FreeBSD which sometimes led to the wrong process being
1952	  killed (Redmine #2330)
1953	- Fixed package version comparison sometimes failing with rpm package
1954	  manager (Redmine #6807)
1955	- Fixed a bug in users promises which would sometimes set the wrong
1956	  password hash if the user would also be unlocked at the same time.
1957	- Fixed a bug on AIX which would occasionally kill the wrong process.
1958	- Improved error message for functions that require an absolute path.
1959	  (Redmine #6877)
1960	- Fixed some spelling errors in examples.
1961	- Fixed error in out-of-tree builds when building cf-upgrade.
1962	- Fixed a bug which would make cf-agent exit with an error if it was
1963	  built with a custom log directory, and that directory did not exist.
1964	- Fixed ordering of evaluating promises when depends_on is used.
1965	  (Redmine #6484, Redmine #5462)
1966	- Skip non-empty directories silently when recursively deleting.
1967	  (Redmine #6331)
1968	- Fix memory exhaustion with list larger than 4994 items.
1969	  (Redmine # 6672)
1970	- Fix cf-execd segfault on IP address detection (Redmine #6905).
1971	- Fix hard class detection of RHEL6 ComputeNode (Redmine #3148).
1972
19733.6.3
1974	New features:
1975	- support for HP-UX 11.23 and later
1976	- experimental support for Red Hat Enterprise Linux 7
1977
1978	Bug fixes:
1979	- fix getindices on multi-dimensional arrays (Redmine #6779)
1980	- fix mustache template method to run in dryrun mode (Redmine #6739)
1981	- set mailto and mailfrom settings for execd in def.cf (Redmine #6702)
1982	- fix conflation of multi-index entries in arrays (Redmine #6674)
1983	- fix promise locking when transferring using update.cf (Redmine #6623)
1984	- update JSON parser to return an error on truncation (Redmine #6608)
1985	- fix sys.hardware_addresses not expanded (Redmine #6603)
1986	- fix opening database txn /var/cfengine/cf_lastseen.lmdb:
1987	  MDB_READERS_FULL when running cf-keys --show-hosts (Redmine #6602)
1988	- fix segfault (Null pointer dereference) when select_end in
1989	  delete_lines never matches (Redmine #6589)
1990	- fix max_file_size => "0" not disabling or allowing any size
1991	  (Redmine #6588)
1992	- fix ifvarclass, with iteration over list, failing when deleting
1993	  files with time condition (Redmine #6577)
1994	- fix classes defined with "or" constraint are never set if any value
1995	  doesn't evaluate to a scalar (Redmine #6569)
1996	- update "mailfrom" default in default policy (Redmine #6567)
1997	- fix logrotate ambiguity of filename (Redmine #6563)
1998	- fix parsing JSON files (Redmine #6549)
1999	- reduce write count activity to /var partition (Redmine #6523)
2000	- fix files delete attribute incorrectly triggering promise_kept
2001	  (Redmine #6509)
2002	- update services bundle output related to chkconfig when run in
2003	  inform mode. (Redmine #6492)
2004	- fix Solaris serverd tests (Redmine #6406)
2005	- fix broken bechaviour of merging arrays with readstringarray
2006	  (Redmine #6369)
2007	- fix ifelapsed bug with bundle nesting (Redmine #6334)
2008	- fix handling cf_null in bundlesequence (Redmine #6119)
2009	- fix maparray reading whole input array when using subarray
2010	  (Redmine #6033)
2011	- fix directories being randomly changed to files (Redmine #6027)
2012	- update defaults promise type to work with classes (Redmine #5748)
2013	- systemd integration in services promises (Redmine #5415)
2014	- fix touch attribute ignoring action = warn_only (Redmine #3172)
2015	- fix 4KB string limit in functions readfile, string_downcase,
2016	  string_head, string_reverse, string_length, string_tail,
2017	  string_upcase (Redmine #2912)
2018
20193.6.2
2020	Bug fixes:
2021	- don't regenerate software_packages.csv every time (Redmine #6441)
2022	- improve verbose message for package_list_command
2023	- fix missing log output on AIX (Redmine #6434)
2024	- assorted fixes to dirname() esp on Windows (Redmine #4716)
2025	- fix package manager detection
2026	- fix build issues on FreeBSD
2027	- allow copying of dead symbolic links (Redmine #6175)
2028	- preserve order in readstringarrayidx (Redmine #6466)
2029	- fix passing of unexpanded variable references to arrays
2030	  (Redmine #5893)
2031	- use entries for new {admin,deny}_{ips,hostnames} constraints in
2032	  the relevant legacy lists (Redmine #6542)
2033	- cope with ps's numeric fields overflowing to the right
2034	- interpret failing function calls in ifvarclass as class not set
2035	  (Redmine #6327)
2036	- remove unexpanded lists when extending lists (Redmine #6541)
2037	- infer start-time of a process from elapsed when needed
2038	  (Redmine #4094)
2039	- fix input range definition for laterthan() function (Redmine #6530)
2040	- don't add trailing delimiter when join()'ing lists ending with a
2041	  null-value (Redmine #6552)
2042	- 9999999999 (ten 9s) or higher has been historically used as an upper
2043	  bound in CFEngine code and policy but because of overflow on 32-bit
2044	  platforms it caused problems with big numbers. Fixed in two ways:
2045	  first change all existing policy uses to 999999999 (nine 9s instead
2046	  of eleven 9s), second fix the C code to not wrap-around in case of
2047	  overflow, but use the LONG_MAX value (Redmine #6531).
2048	- cf-serverd and other daemons no longer reload their configuration
2049	  every minute if CFEngine is built with an inputs directory outside
2050	  of the work directory (not the default). (Redmine #6551)
2051
20523.6.1
2053	New features:
2054	- Introduced Solaris and AIX support into the 3.6 series, with many associated build and
2055	  bug fixes.
2056
2057	Changes:
2058	- Short-circuit evaluation of classes promises if class is already set (Redmine #5241)
2059	- fix to assume all non-specified return codes are failed in commands promises (Redmine #5986)
2060	- cf-serverd logs reconfiguration message to NOTICE (was INFO) so that it's always logged in syslog
2061
2062	Bug fixes:
2063	- File monitoring has been completely rewritten (changes attribute in files promise), which
2064	  eliminates many bugs, particularly regarding files that are deleted. Upgrading will keep
2065	  all monitoring data, but downgrading again will reinitialize the DB, so all files will be
2066	  reported as if they were new. (Redmine #2917)
2067	- $(this.promiser) expands in files promises for 'transformer', 'edit_template',
2068	  'copy_from.source', 'file_select.exec_program', 'classes' and 'action' bodies
2069	  (Redmine #1554, #1496, #3530, #1563)
2070	- 'body changes' notifies about disappeared files in file monitoring (Redmine #2917)
2071	- Fixed CFEngine template producing a zero sized file (Redmine #6088)
2072	- Add 0-9 A-Z _ to allowed context of module protocol (Redmine #6063)
2073	- Extend ps command column width and prepend zone name on Solaris
2074	- Fixed strftime() function on Solaris when called with certain specifiers.
2075	- Fixed users promise bug regarding password hashes in a NIS/NSS setup.
2076	- Fixed $(sys.uptime), $(sys.systime) and $(sys.sysday) in AIX. (Redmine #5148, #5206)
2077	- Fixed processes_select complaining about "Unacceptable model uncertainty examining processes" (Redmine #6337)
2078	- ps command for linux has been changed to cope with big rss values (Redmine #6337)
2079	- Address ps -axo shift on FreeBSD 10 and later (Redmine #5667)
2080	- methods and services promises respect action_policy => "warn" (Redmine #5924)
2081	- LMDB should no longer deadlock if an agent is killed on the hub while holding the DB lock.
2082	  Note that the change only affects binary packages shipped by CFEngine, since the upstream
2083	  LMDB project has not yet integrated the change. (Redmine #6013)
2084
20853.6.0
2086
2087	Changes:
2088	- Changes to logging output
2089	    - add process name and pid in syslog message (GitHub #789)
2090	    - cf-serverd logging levels are now more standardised:
2091		  - INFO logs only failures
2092		  - VERBOSE logs successful requests as well
2093		  - DEBUG logs actual protocol traffic.
2094	    - cf-serverd now logs the relevant client IP address on
2095	      each message.
2096	    - Logging contexts to local database (cf_classes.tcdb) has been deprecated.
2097	    - 'usebundle' promisees are logged for all the bundle promises
2098	    - output from 'reports' promises has nothing prefixed except 'R: '
2099	    - a log line with stack path is generated when the promise type evaluated changes
2100	- LMDB (symas.com/mdb) is the default database for local data storage : use version 0.9.9 or later
2101	  cf-agent --self-diagnostics (-x) is only implemented for TCDB, not for LMDB
2102	- port argument in readtcp() and selectservers() may be a
2103	  service name (e.g. "http", "pop3").
2104	- Enable source file in agent copy_from promises to be a relative path.
2105	    - file "changes" reporting now reports with log level "notice", instead of "error".
2106	- process_results default to AND'ing of set attributes if not specified (Redmine #3224)
2107	- interface is now canonified in sys.hardware_mac[interface] to align with
2108	  sys.ipv4[interface] (Redmine #3418)
2109	- cf-promises no longer errors on missing bodies when run without --full-check (-c)
2110	- Linux flavor "SUSE" now correctly spelled with all uppercase in variables and class names
2111	  (Redmine #3734).  The "suse" lowercase version is also provided for convenience (Redmine #5417).
2112	- $(this.promise_filename) and $(..._dirname) variables are now absolute paths. (Redmine #3839)
2113	- including the same file multiple times in 'body control inputs' is not an error
2114	- portnumber in body copy_from now supports service names like
2115	  "cfengine", "pop3" etc, check /etc/services for more.
2116	- The failsafe.cf policy, run on bootstrap and in some other
2117	  unusual cases, has been extracted from C code into libpromises/failsafe.cf
2118	- masterfiles
2119	    - cf_promises_validated is now in JSON format
2120	    - timestamp key is timestamp (sec since unix epoch) of last time validated
2121	    - the masterfiles now come from https://github.com/cfengine/masterfiles and are
2122	      not in the core repository
2123	- cf-serverd calls cf-agent with -Dcfruncommand when executing cf-runagent requests
2124      - Mark as removed: promise_notkept_log_include, promise_notkept_log_exclude, promise_repaired_log_include,
2125	promise_repaired_log_exclude, classes_include, classes_exclude, variables_include,
2126	variables_exclude attributes from report_data_select body (syntax is valid but not functional).
2127	They have been replaced by the following attributes: promise_handle_include,
2128	promise_handle_exclude, metatags_include, metatags_exclude.
2129
2130	New features:
2131	- New promise type "users" for managing local user accounts.
2132	- TLS authentication and fully encrypted network protocol.
2133	  Additions specific to the new type of connections:
2134	    - New attribute "allowlegacyconnects" in body server control,
2135	      which enables serving policy via non-latest cfengine protocol,
2136	      to the given list of hosts. If the option is absent, it
2137	      defaults to allow all hosts. To refuse non-TLS connections,
2138	      specify an empty list.
2139	    - New attribute "protocol_version" in body copy_from, and body
2140	      common control, which defines the preferred protocol for
2141	      outgoing connections.. Allowed values at the moment: "0" or
2142	      "undefined", "classic" or "1", "latest" or "2". By leaving the
2143	      copy_from option as undefined the common control option is
2144	      used, and if both are undefined then classic protocol is used
2145	      by default.
2146	    - The new networking protocol uses TLS for authentication,
2147	      after which all dialog is encrypted within the established
2148	      TLS session.  cf-serverd is still able to speak the legacy
2149	      protocol with old agents.
2150	    - The 'skipverify' option in 'body server control' is
2151	      deprecated and only left for compatibility; it does
2152	      nothing
2153	    - cf-serverd does not hang up the connection if some request
2154	      fails, so that the client can add more requests.
2155	    - For the connections using the new protocol, all of the
2156	      paths in bundle server access_rules now differentiate
2157	      between a directory and a file using the trailing
2158	      slash. If the path exists then this is auto-detected and
2159	      trailing slash appended automatically. You have to append
2160	      a trailing slash manually to an inexistent or symbolic
2161	      path (e.g. "/path/to/$(connection.ip)/") to force
2162	      recursive access.
2163	- New in 'access' promises for 'bundle server access_rules'
2164	    - Attributes "admit_ips", "admit_hostnames", "admit_keys",
2165	      "deny_ips", "deny_hostnames", "deny_keys"
2166	    - "admit_keys" and "deny_keys" add the new functionality
2167	      of controlling access according to host identity,
2168	      regardless of the connecting IP.
2169	    - For these new attributes, regular expressions
2170	      are not allowed, only CIDR notation for "admit/deny_ips", exact
2171	      "SHA=..." strings for "admit/deny_keys", and exact hostnames
2172	      (e.g. "cfengine.com") or subdomains (starting with dot,
2173	      e.g. ".cfengine.com") for "admit/deny"_hostnames. Same rules
2174	      apply to 'deny_*' attributes.
2175	    - These new constraints and the paths in access_rules, can contain
2176	      special variables "$(connection.ip)", "$(connection.hostname)",
2177	      "$(connection.key)", which are expanded dynamically for every
2178	      received connection.
2179	    - For connections using the new protocol, "admit" and "deny"
2180	      constraints in bundle server access_rules are being phased
2181	      out, preferred attributes are now "admit_ips", "deny_ips",
2182	      "admit_hostnames", "deny_hostnames", "admit_keys",
2183	      "deny_keys".
2184	    - New "shortcut" attribute in bundle server access_rules used to
2185	      dynamically expand non-absolute request paths.
2186	- masterfiles
2187		- standard library split: lib/3.5 (compatibility) and lib/3.6 (mainline)
2188		- many standard library bundles and bodies, especially packages- and file-related,
2189		  were revised and fixed
2190		- supports both Community and Enterprise
2191		- new 'inventory/' structure to provide OS, dmidecode, LSB, etc. system inventory
2192		  (configured mainly in def.cf)
2193		- cf_promises_release_id contains the policy release ID which is the GIT HEAD SHA
2194		  if available or hash of tree
2195		- a bunch'o'bundles to make starting with CFEngine easier:
2196		- file-related: file_mustache, file_mustache_jsonstring, file_tidy, dir_sync, file_copy,
2197	      file_link, file_hardlink, file_empty, file_make
2198		- packages-related: package_absent, package_present, package_latest,
2199	      package_specific_present, package_specific_absent, package_specific_latest, package_specific
2200		- XML-related: xml_insert_tree_nopath, xml_insert_tree, xml_set_value, xml_set_attribute
2201		- VCS-related: git_init, git_add, git_checkout, git_checkout_new_branch,
2202	      git_clean, git_stash, git_stash_and_clean, git_commit, git
2203		- process-related: process_kill
2204		- other: cmerge, url_ping, logrotate, prunedir
2205	- New command line options for agent binaries
2206	    - New options to cf-promises
2207		- '--show-classes' and '--show-vars'
2208		- '--eval-functions' controls whether cf-promises should evaluate functions
2209	    - Colorized output for agent binaries with command line option '--color'
2210	      (auto-enabled if you set CFENGINE_COLOR=1)
2211	- New language features
2212	    - New variable type 'data' for handling of structured data (ie JSON),
2213	      including supporting functions:
2214		- 'data_readstringarray' - read a delimited file into a data map
2215		- 'data_readstringarrayidx' - read a delimited file into a data array
2216		- 'datastate' - create a data variable with currently set classes and variables
2217		- 'datatype' - determine the type of the top element of a container
2218		- 'format' - %S can be used to serialize 'data' containers into a string
2219		- 'mergedata' - merge two data containers, slists/ilists/rlists, or "classic"
2220		  arrays into a data container
2221		- 'parsejson' - create a data container from a JSON string
2222		- 'readjson' - create a data container from a file that contains JSON
2223		- 'storejson' - serialize a data container into a string
2224		- Most functions operating on lists can also operate on data containers
2225		- pass a data container to a bundle with the @(container) notation
2226		- the module protocol accepts JSON for data containers with the '%' sigil
2227	    - Tagging of classes and variables allows annotating of language construct with
2228	      meta data; supporting functionality:
2229		- The module protocol in 'commands' promises has been extended to allow setting
2230		  of tags of created variables and classes, and the context of created variables
2231		- 'getclassmetatags' - returns list of meta tags for a class
2232		- 'getvariablemetatags' - returns list of meta tags for a variable
2233	    - 'body file control' has an 'inputs' attribute to include library files and other
2234	      dependencies
2235	    - bundlesequences can be built with bundlesmatching() based on bundle name and tags
2236	- New attributes in existing promise types and bodies
2237	    - New option 'preserve_all_lines' for insert_type in insert_lines promises
2238	    - Caching of expensive system functions to avoid multiple executions of
2239	      execresult() etc, can be controlled via cache_system_functions attribute in
2240	      body common control
2241	    - New option 'mailsubject' in body executor control allows defining the subject
2242	      in emails sent by CFEngine
2243	    - Support for Mustache templates in 'files' promises; use 'template_method' and
2244	      'template_data' attributes.  Without 'template_data' specified, uses datastate().
2245	- New and improved functions
2246	    - 'bundlesmatching' - returns list of defined bundles matching a regex and tags
2247	    - 'canonifyuniquely' - converts a string into a unique, legal class name
2248	    - 'classesmatching' - returns list of set classes matching a regex and tags
2249	    - 'eval' - evaluates mathematical expressions; knows SI k, m, g quantifiers, e.g. "100k"
2250	    - 'findfiles' - list files matching a search pattern; use "**" for recursive searches
2251	    - 'makerule' - evaluates whether a target file needs to be rebuilt from sources
2252	    - 'max', 'min' - returns maximum and minimum of the numbers in a container or list
2253	      (sorted by a 'sort' method)
2254	    - 'mean' - returns the mean of the numbers in a container or list
2255	    - 'nth' - learned to look up by key in a data container holding a map
2256	    - 'packagesmatching' - returns a filtered list of installed packages.
2257	    - 'readfile' - learned to read system files of unknown size like those in /proc
2258	    - 'sort' - can sort lexicographically, numerically (int or real), by IP, or by MAC
2259	    - 'string_downcase', 'string_upcase' - returns the lower-/upper-case version of a
2260	      string
2261	    - 'string_head', 'string_tail' - returns the beginning/end of a string
2262	    - 'string_length' - returns the length of a string
2263	    - 'string_reverse' - reverses a string
2264	    - 'string_split' - improved implementation, deprecates 'splitstring'
2265	    - 'variablesmatching' - returns a list of variables matching a regex and tags
2266	    - 'variance' - returns the variance of numbers in a list or container
2267	- New hard classes
2268	    - Introduced alias 'policy_server' for context 'am_policy_hub' (the latter will
2269	      be deprecated)
2270	    - all the time-based classes have GMT equivalents
2271	- New variables
2272	    - 'sys.bindir' - the location of the CFEngine binaries
2273	    - 'sys.failsafe_policy_path' - the location of the failsafe policy file
2274	    - 'sys.inputdir' - the directory where CFEngine searches for policy files
2275	    - 'sys.key_digest' - the digest of the host's cryptographic key
2276	    - 'sys.libdir', 'sys.local_libdir' - the location of the CFEngine libraries
2277	    - 'sys.logdir' - the directory where the CFEngine log files are saved
2278	    - 'sys.masterdir' - the location of masterfiles on the policy server
2279	    - 'sys.piddir' - the directory where the daemon pid files are saved
2280	    - 'sys.sysday' - the number of days since the beginning of the UNIX epoch
2281	    - 'sys.systime' - the number of seconds since the beginning of the UNIX epoch
2282	    - 'sys.update_policy_path' - the name of the update policy file
2283	    - 'sys.uptime' - the number of minutes the host has been online
2284	    - 'this.promise_dirname' - the name of the file in which the current promise
2285	      is defined
2286	    - 'this.promiser_uid' - the ID of the user running cf-agent
2287	    - 'this.promiser_gid' - the group ID of the user running cf-agent
2288	    - 'this.promiser_ppid' - the ID of the  parent process running cf-agent
2289
2290	Deprecations:
2291	- 'splitstring' - deprecated by 'string_split'
2292	- 'track_value'
2293	- 'skipverify'
2294
2295	Bug fixes: for a complete list of fixed bugs, see Redmine at https://cfengine.com/dev
2296	- various fixes in evaluation and variable resolution
2297	- Improve performance of list iteration (Redmine #1875)
2298	- Removed limitation of input length to internal buffer sizes
2299	    - directories ending with "/" are not ignored
2300	    - lsdir() always return a list now, never a scalar
2301	- 'abortclasses' fixed to work in common bundles and other cases
2302	- namespaced 'edit_line' bundles now work (Redmine#3781)
2303	- lists are interpolated in correct order (Redmine#3122)
2304	- cf-serverd reloads policies properly when they change
2305	- lots of leaks (memory and file descriptor) fixed
2306
23073.5.3
2308       Changes:
2309       - Improved security checks of symlink ownership. A symlink created by a user pointing
2310	 to resources owned by a different user will no longer be followed.
2311       - Changed the way package versions are compared in package promises. (Redmine #3314)
2312	 In previous versions the comparison was inconsistent. This has been fixed, but may
2313	 also lead to behavior changes in certain cases. In CFEngine 3.5.3, the comparison
2314	 works as follows:
2315	   <package-being-considered> <package_select> <package_version>
2316	 For instance:
2317		 apache-2.2.31              ">="            "2.2.0"
2318	 will result in the package being installed.
2319
2320       Bug fixes:
2321       - fix cf-monitord crash due to incorrect array initialization (Redmine #3180)
2322       - fix cf-serverd stat()'ing the file tree every second (Redmine #3479)
2323       - correctly populate sys.hardware_addresses variable (Redmine #2936)
2324       - add support for Debian's GNU/kfreebsd to build system (Redmine #3500)
2325       - fix possible stack corruption in guest_environments promises (Redmine #3552)
2326       - work-around hostname trunctation in HP-UX's uname (Redmine #3517)
2327       - fix body copy purging of empty directories (Redmine #3429)
2328       - make discovery and loading of avahi libraries more robust
2329       - compile and packaging fixes for HP-UX, AIX and Solaris
2330       - fix fatal error in lsdir() when directory doesn't exist (Redmine #3273)
2331       - fix epoch calculation for stime inrange calculation (Redmine #2921)
2332
23333.5.2
2334       Bug fixes:
2335       - fix delayed abortclasses checking (Redmine #2316, #3114, #3003)
2336       - fix maplist arguments bug (Redmine #3256)
2337       - fix segfaults in cf-pomises (Redmine #3173, 3194)
2338       - fix build on Solaris 10/SmartOS (Redmine #3097)
2339       - sanitize characters from /etc/issue in sys.flavor for Debian (Redmine #2988)
2340       - Fix segfault when dealing with files or data > 4K (Redmine #2912, 2698)
2341       - Don't truncate keys to 126 characters in getindices (Redmine #2626)
2342       - files created via log_* actions now have mode 600 (Redmine #1578)
2343       - fix wrong log message when a promise is ignored due to 'ifvarclass' not matching
2344       - fix lifetime of persistent classes (Redmine #3259)
2345       - fix segfault when process_select body had no process_result attribute
2346	 Default to AND'ed expression of all specified attributes (Redmine #3224)
2347       - include system message in output when acl promises fail
2348       - fix invocation of standard_services bundle and corresponding promise compliance (Redmine #2869)
2349
23503.5.1
2351
2352       Changes:
2353       - file changes are logged with log level Notice, not Error
2354       - the CFEngine Standard Library in masterfiles/libraries is now split into
2355	 promise-type specific policy files, and lives in a version-specific directory.
2356	 This should have no impact on current code, but allows more granular include of
2357	 needed stdlib elements (Redmine #3044)
2358
2359       Bug fixes:
2360       - fix recursive copying of files (Redmine #2965)
2361       - respect classes in templates (Redmine ##2928)
2362       - fix timestamps on Windows (Redmine #2933)
2363       - fix non-root cf-agent flooding syslog (Redmine #2980)
2364       - fix email flood from cf-execd due to timestamps in agent output (Redmine #3011)
2365       - Preserve security context when editing or copying local files (Redmine #2728)
2366       - fix path for sys.crontab on redhat systems (Redmine #2553)
2367       - prevent incorrect "insert_lines promise uses the same select_line_matching anchor" warning (Redmine #2778)
2368       - Fix regression of setting VIPADDRESS to 127.0.0.1 (Redmine #3010)
2369       - Fix "changes" promise not receiving status when file is missing (Redmine #2820)
2370       - Fix symlinks being destroyed when editing them (Redmine #2363)
2371       - Fix missing "promise kept" status for the last line in a file (Redmine #2943)
2372
23733.5.0
2374
2375       New features:
2376       - classes promises now take an optional scope constraint.
2377       - new built-in functions: every, none, some, nth, sublist, uniq, filter
2378	 - every
2379	 - none
2380	 - some
2381	 - nth
2382	 - sublist
2383	 - uniq
2384	 - filter
2385	 - classesmatching
2386	 - strftime
2387	 - filestat
2388	 - ifelse
2389	 - maparray
2390	 - format
2391       - cf-promises flag --parse-tree is replaced by --policy-output-format=, requiring the
2392	  user to specify the output format (none, cf, json)
2393       - cf-promises allows partial check of policy (without body common control) without integrity check;
2394	  --full-check enforces integrity check
2395       - agent binaries support JSON input format (.json file as generated by cf-promises)
2396       - cf-key: new options --trust-key/-t and --print-digest/-p
2397       - Class "failsafe_fallback" is defined in failsafe.cf when main policy contains errors and
2398	 failsafe is run because of this
2399       - add scope attribute for body classes (Redmine #2013)
2400       - Better diagnostics of parsing errors
2401       - Error messages from parser now show the context of error
2402       - new cf-agent option: --self-diagnostics
2403       - new output format, and --legacy-output
2404       - warnings for cf-promises.
2405       - Enable zeroconf-discovery of policy hubs for automatic bootstrapping
2406	 if Avahi is present
2407       - Support for sys.cpus on more platforms than Linux & HPUX
2408
2409       Changes:
2410       - parser no longer allows ',' after promiser or promisee. must be either ';' or lval
2411       - Make parser output in GCC compatible format the only supported format
2412	 (remove --gcc-brief-format flag)
2413
2414       - Silence license warnings in Enterprise Free25 installations
2415       - action_policy => "warn" causes not_kept classes to be set on promise needing repair.
2416       - command line option version (-V) now prints a shorter parsable version without graphic
2417       - implicit execution of server and common bundles taking arguments is skipped in cf-serverd.
2418       - WARNING: option --policy-server removed, require option to --bootstrap instead
2419       - process promises don't log if processes are out of range unless you
2420	 run in verbose mode
2421       - reports promises are now allowed in any context (Redmine #2005)
2422       - cf-report has been removed
2423       - cf-execd: --once implies --no-fork
2424       - Version info removed from mail subject in the emails sent by cf-execd.
2425	 The subject will only contain "[fqname/ipaddress]" instead of "communnity/nova [fqname/ipaddress]"
2426	 Please change your email filters accordingly if necessary.
2427       - "outputs" promise type is retired. Their semantics was not clear, and the functionality
2428	 is better suited for control body setting, not a promise.
2429       - Tokyo Cabinet databases are now automatically checked for
2430	 correctness during opening. It should prevent a number of issues
2431	 with corrupted TC databases causing binaries to hang.
2432       - Improved ACL handling on Windows, which led to some syntax changes. We now consistently
2433	 use the term "default" to describe ACLs that can be inherited by child objects. These
2434	 keywords have received new names:
2435	   acl_directory_inherit -> acl_default
2436	    specify_inherit_aces -> specify_default_aces
2437	 The old keywords are deprecated, but still valid. In addition, a new keyword
2438	 "acl_inherit" controls inheritance behavior on Windows. This feature does not exist on
2439	 Unix platforms. (Redmine #1832)
2440       - Networking code is moved from libpromises to its own library,
2441	 libcfnet. Work has begun on making the API more sane and thread-safe.
2442	 Lots of legacy code was removed.
2443       - Add getaddrinfo() replacement in libcompat (borrowed from PostgreSQL).
2444       - Replace old deprecated and non thread-safe resolver calls with
2445	 getaddrinfo() and getnameinfo().
2446       - Hostname2IPString(), IPString2Hostname() are now thread-safe, and are
2447	 returning error when resolution fails.
2448       - Running cf-execd --once now implies --no-fork, and also does not wait
2449	 for splaytime to pass.
2450       - execresult(), returnszero() and commands promises no longer requires the first word
2451	 word to be an absolute path when using the shell. (Part of Redmine #2143)
2452       - commands promises useshell attribute now accepts "noshell" and "useshell" values. Boolean
2453	 values are accepted but deprecated. (Part of Redmine #2143)
2454       - returnszero() now correctly sets the class name in this scenario  (Part of
2455	 Redmine #2143):
2456	   classes:
2457	     "commandfailed" not => returnszero("/bin/nosuchcommand", "noshell");
2458
2459       Bugfixes:
2460       - bundles are allowed to be empty (Redmine #2411)
2461       - Fixed '.' and '-' not being accepted by a commands module. (Redmine #2384)
2462       - Correct parsing of list variables by a command module. (Redmine #2239)
2463       - Fixed issue with package management and warn. (Redmine #1831)
2464       - Fixed JSON crash. (Redmine #2151)
2465       - Improved error checking when using fgets(). (Redmine #2451)
2466       - Fixed error message when deleting nonexistent files. (Redmine #2448)
2467       - Honor warn-only when purging from local directory. (Redmine #2162)
2468       - Make sure "restart" and "reload" are recognized keywords in packages. (Redmine #2468)
2469       - Allocate memory dynamically to avoid out-of-buffer or out-of-hash
2470	 situations
2471       - fix edit_xml update of existing attributes  (Redmine #2034)
2472       - use failsafe policy from compile-time specified workdir (Redmine #1991)
2473       - ifvarclass checked from classes promises in common bundles
2474       - do not wait for splaytime when executing only once
2475       - disable xml editing functionality when libxml2 doesn't provide necessary APIs (Redmine #1937)
2476       - Out-of-tree builds should work again, fixed a bunch of related bugs.
2477       - Fixed race condition in file editing. (Redmine #2545)
2478       - Fixed memory leak in cf-serverd and others (Redmine #1758)
2479
24803.4.5   (Bugfix and Stability release)
2481
2482      Bugfixes:
2483
2484      - make qualified arrays expand correcty (Redmine #1998, Mantis #1128)
2485
2486      - correct possible errors in tcdb files when opening
2487
2488      - avoid possible db corruption when mixing read/write and cursor operations
2489
2490      - Allow umask value of 002 (Redmine #2496)
2491
24923.4.4   (Bugfix and Stability release)
2493
2494       Bugfixes:
2495
2496       - prevent possible crash when archiving files (GitHub #316)
2497
2498       - don't create symlinks to cf-know in update policy
2499
2500       - don't enable xml support if libxml2 is too old (Redmine #1937)
2501
25023.4.3   (Bugfix and Stability release)
2503
2504       Bugfixes:
2505
2506       - Don't flood error messages when processes are out of defined range
2507
2508       - prevent segmentation fault in cf-monitord -x (Redmine #2021)
2509
2510       - when copying files, use same file mode as source file, rather than 0600 (Redmine #1804)
2511
2512       - include xpath in messages generated by edit_xml operations (Redmine #2057)
2513
25143.4.2   (Bugfix and Stability release)
2515
2516       Bugfixes:
2517
2518       - Fixes to policies in masterfiles (see masterfiles/Changelog for details)
2519
2520       - Fixes for OpenBSD (GitHub #278)
2521
2522       - Do not canonify values specified in abortbundleclasses/abortclasses (Redmine #1786)
2523
2524       - Fix build issues on NetBSD, SLES 12.2
2525
2526       - Improve error message when libxml2 support is not compiled (Redmine #1799)
2527
2528       - fix potential segmentation fault when trimming network socket data (GitHub #233)
2529
2530       - fix potential segmentation fault when address-lookups in lastseen db failed (GitHub #233)
2531
2532       - execute background promise serially when max_children was reached, rather
2533	 than skipping them (GitHub #233)
2534
2535       - fix segmentation fault in cf-promises when invoked with --reports (Redmine #1931)
2536
2537       - fix compilation with Sun Studio 12 (Redmine #1901)
2538
2539       - silence type-pun warning when building on HP-UX (GitHub #287)
2540
25413.4.1   (Bugfix and Stability release)
2542
2543	New feature/behavior:
2544
2545	- cf-execd terminates agent processes that are not responsive
2546	  for a configurable amount of time (see agent_expireafter in body
2547	  executor control), defaulting to 1 week
2548
2549	Bugfixes:
2550
2551	- fix regression of classmatch() failing with hard classes (Redmine #1834)
2552
2553	- create promise-defined and persistent classes in correct
2554	  namespace (Redmine #1836)
2555
2556	- several fixes to namespace support
2557
2558	- fix several crash bugs caused by buffer overflow and race
2559	  conditions in cf-serverd
2560
2561	- regenerate time classes in cf-execd for each run (Redmine #1838)
2562
2563	- edit_xml: fix select_xpath implementation and update documentation
2564	  NOTE: code that uses select_xpath_region needs to be changed to
2565	  select_xpath
2566
2567	- edit_xml: make sure that text-modification functions don't overwrite
2568	  child nodes
2569
2570	- edit_xml: improve error logging
2571
25723.4.0
2573
2574	New features:
2575
2576	- Added rpmvercmp utility to compare versions of RPM packages for
2577	  accurate sorting of RPM packages for packages promises.
2578
2579	- Implement network timeout on server side to avoid keeping stale
2580	  connections for hours.
2581
2582	- XML editing capabilities. See the documentation for edit_xml
2583	  body. Note the new dependency: libxml2.
2584
2585	- Implement inheritance of local classes by bundles called using
2586	  "usebundle". By default classes are not inherited. See the
2587	  examples/unit_inherit.cf for an example.
2588
2589	- Moved from Nova/Enterprise:
2590	  - POSIX ACL support,
2591	  - "outputs" promise type,
2592	  - remote syslog support.
2593
2594	- packages_default_arch_command hook in packages promises, to
2595	  specify default architecture of the packages on the system.
2596
2597	- packages_version_less_command / packages_version_equal_command hooks
2598	  in packages promises, to specify external command for native package
2599	  manager versions comparison
2600
2601	- agent_expireafter in body executor control allows you to set a
2602	  timeout on all cf-agent runs, to enforce a threshold on the
2603	  number of concurrent agents
2604
2605	- Running in Solaris zone is now detected and classes "zone" and
2606	  "zone_<name>" are created in this case.
2607
2608	- VirtualBox support added to guest_environment promises.
2609
2610	- guest_environment promises are supported under OS X.
2611
2612	- The "depends_on" attribute is now active, for the partal ordering
2613	  of promises. If a promise depends on another (referred by handle)
2614	  it will only be considered if the depends_on list is either kept
2615	  or repaired already.
2616
2617	  ** WARNING: When upgrading, make sure that any existing use
2618		      of depends_on does not make some promises being
2619		      unintentionally ignored. This can happen if you are
2620		      currently referring to non-existent or never-run handles
2621		      in depends_on attributes.
2622
2623	- methods return values, initial implementation
2624
2625	- New format for cf-key -s, includes timestamp of last connection
2626
2627	- cf-promises --parse-tree option to parse policy file and dump it
2628	  in JSON format
2629
2630	- Namespaces support for bundles and bodies. See the
2631	  examples/unit_namespace*.cf for the usage.
2632
2633	- Default arguments for bundles. See the examples/unit_defaults.cf
2634
2635	- Metadata promise type. See the examples/unit_meta.cf
2636
2637	New semantics:
2638
2639	- Methods promises now return the status of promises
2640	  kept within them. If any promise was not kept, the method is not
2641	  kept, else if any promise is repaired, the method was repaired
2642	  else it was kept.
2643	- Remote variable access in namespaces by $(namespace:bundle.variable)
2644
2645	Changed functionality:
2646
2647	- cf-execd -F switch no longer implies 'run once'. New -O/--once
2648	  option is added to achieve this behaviour. This makes cf-execd
2649	  easier to run from systemd, launchd and other supervision
2650	  systems.
2651
2652	Misc:
2653
2654	- Support for the following outdated platforms and corresponding
2655	  classes has been removed. De facto those platforms were
2656	  unsupported for a long time, as CFEngine codebase uses C99
2657	  language features unavailable on old platforms:
2658
2659	   - SunOS 3.x (sun3)
2660	   - SunOS 4.x (sun4)
2661	   - Ultrix (ultrix)
2662	   - DEC OSF/1 AXP (osf)
2663	   - Digital UNIX (digital)
2664	   - Sony NEWS (newsos)
2665	   - 4.3BSD (bsd4_3)
2666	   - IRIX (irix, irix4, irix64)
2667	   - IBM Academic Operating System (aos)
2668	   - BSD/OS / BSDi / BSD/386 (bsdos)
2669	   - NeXTSTEP (nextstep)
2670	   - GNU Hurd (gnu)
2671	   - NEC UX/4800 (ux4800)
2672
2673	- (Old news) Since 3.3.0 the layout of CFEngine Community packages
2674	  has changed slightly.
2675
2676	  cf-* binaries have been moved to /var/cfengine/bin, due to the
2677	  following reasons:
2678
2679	   - cf-* binaries are linked to libraries installed to
2680	     /var/cfengine/lib, so placing binaries in /usr/local/sbin does not
2681	     increase reliability of the CFEngine,
2682
2683	   - keeping whole CFEngine under single prefix (/var/cfengine)
2684	     makes packaging simpler,
2685
2686	   - it matches the layout of CFEngine Enterprise packages.
2687
2688	   Please adjust your policies (the recommended ways to deal with
2689	   the move are either to adjust $PATH to include /var/cfengine or to
2690	   create symlinks in /usr/local/sbin in case you are relying on
2691	   binaries to be available in $PATH).
2692
2693	- Workdir location is properly changed if --prefix or --enable-fhs
2694	  options are supplied to configure (Mantis #1195).
2695
2696	- Added check for broken libmysqlclient implementations (Mantis #1217).
2697
2698	- Standard library is updated from COPBL repository.
2699
2700	- cf-know is no longer built in Community releases. The only
2701	  functionality useful in Community, namely the reference manual
2702	  generation, is provided by new compile-time cf-gendoc tool.
2703
2704    - Filename (for storing filechanges) changed
2705      from file_change.log -> file_changes.log (in /var/cfengine/state)
2706
2707      New format for storing file changes introduced:
2708      [timestamp,filename,<N/C/S/R>,Message]
2709
2710      N = New file found
2711      C = Content Changed
2712      S = Stats changed
2713      R = File removed
2714
2715	- Acceptance test suite passes on Mac OS X.
2716
2717	- Changed some port numbers to replace old services with imap(s)
2718
2719	- archlinux hard class on Arch Linux.
2720
2721	- Detect BSD Make and automatically switch to GNU Make during build.
2722
2723	Bugfixes:
2724
2725	- cfruncommand for cf-execd is an arbitrary shell command now (Mantis #1268).
2726	- Fixed broken "daily" splayclasses (Mantis #1307).
2727	- Allow filenames up to 4096 bytes in network transfers (Redmine #1199).
2728	- Fix stale state preserved during cf-serverd reload (Redmine #1487).
2729	- Free disk space calculation is fixed (Mantis #1120).
2730	- Numerous portability bugfixes (especially OpenBSD, Solaris, AIX-related).
2731	- Compatibility fixes for AIX, HP-UX, Solaris (Mantis #1185, Mantis #1177, Mantis #1109).
2732	- Fixed broken socklen_t configure check under OpenBSD (Mantis #1168).
2733	- Fixed hang in cf-promises under OpenBSD (Mantis #1113).
2734	- Fixed endless loop in evaluating "$()" construct (Mantis #1023).
2735	- Fixed check for old PCRE versions (Mantis #1262).
2736	- Fixed insertion of multi-line blocks at the start of file (Mantis #809).
2737	- Fixed numerous memory leaks.
2738	- Fixes for metadata that were not resolvable
2739	- Fixes for namespaces that would not support metadata and variable expansion
2740	- Point-to-point network interfaces are detected and reported by CFEngine (Mantis #1246)
2741	- Partial non-GNU userspace support in acceptance testsuite (Mantis #1255)
2742
2743	Full list of issues fixed is available on
2744	https://cfengine.com/bugtracker/changelog_page.php (old bug tracker)
2745	and https://cfengine.com/dev/projects/core/versions/34 (new bug tracker)
2746
27473.3.9   (Bugfix and Stability release)
2748
2749	Bugfixes:
2750
2751	- Do not lose hard classes in cf-serverd during policy reload
2752	  (Mantis #1218).
2753	- Implement receive network timeout in cf-serverd. Prevents
2754	  overloading cf-serverd with stale connections.
2755
27563.3.8   (Bugfix and Stability release)
2757
2758	Versions 3.3.6, 3.3.7 were internal and weren't released.
2759
2760	Bugfixes:
2761
2762	- Propery set sys.domain variable if hostname is fully-qualified.
2763	- Fixed several small memory leaks.
2764	- Make network timeout for network reads configurable. Previously
2765	  it was hardcoded to be 30 seconds, which was not enough for
2766	  cf-runagent invoking cf-agent on big policies (Mantis #1028).
2767
27683.3.5   (Bugfix and Stability release)
2769
2770	Bugfixes:
2771
2772	- Fixed cf-execd memory leak on hosts with cf-monitord running.
2773	- Robustify against wrongly-sized entires in embedded databases.
2774
2775	Standard library:
2776
2777	- Bugfixes from upstream COPBL repository.
2778	- standard_services bundle from upstream COPBL repository.
2779
2780
27813.3.4   (Bugfix and Stability release)
2782
2783	Evaluation of policies:
2784
2785	- Fix wrong classes set after installation of several packages
2786	  using packages promises (Mantis #829).
2787	- Fix segfault using edit_template on existing file (Mantis #1155).
2788
2789	Misc:
2790
2791	- Fix memory leak during re-read of network interfaces'
2792	  information in cf-execd/cf-serverd.
2793
27943.3.3   (Bugfix and Stability release)
2795
2796	Evaluation of policies:
2797
2798	- Zero-length files are valid for readfile() and similar functions
2799	  (Mantis #1136).
2800	- Unchoke agent in case it encounters symlinks in form ./foo
2801	  (Similar to Mantis #1117).
2802
2803	Misc:
2804
2805	- Fix generation of reference manual on machines with umask more
2806	  relaxed than 022.
2807	- Use statvfs(3) on OpenBSD to obtain filesystem information
2808	  (Mantis #1135).
2809
28103.3.2   (Bugfix and Stability release)
2811
2812	Evaluation of policies:
2813
2814	- Do not segfault if file copy was interrupted due to network
2815	  connectivity or server going away (Mantis #1089).
2816	- Do not segfault if log_failed attribute is present in body, but
2817	  log_kept is not (Mantis #1107).
2818	- Do not mangle relative paths in symlinks during file copy
2819	  Previously symlink a -> b was mangled to a -> ./b.
2820	  (Mantis #1117)
2821	- Properly compare 1.0 and 1.0.1 in packages promises. Previously
2822	  only versions with equal amount of "segments" were comparable
2823	  (Mantis #890, #1066).
2824
2825	Base policy:
2826
2827	- Properly set permissions on files for /var/cfengine/lib on HP-UX
2828	  (Mantis #1114).
2829	- Standard library (cfengine_stdlib.cf) is synced with COPBL
2830	  repository.
2831
2832	Misc:
2833
2834	- Do not create huge file in case corrupted TokyoCabinet database
2835	  is detected (Mantis #1106).
2836	- Fix file descriptor leak on error paths, may have caused crashes
2837	  of cf-execd and cf-serverd (Issue #1096).
2838	- Fix intermittent segfault in cf-execd (Mantis #1116).
2839	- Impose an upper limit on amount of listening sockets reported by
2840	  cf-monitord. Huge amounts of listening sockets caused cf-agent to
2841	  segfault on next run (Mantis #1098).
2842	- Add missing function prototypes caused errors during compilation
2843	  on HP-UX (Mantis #1109).
2844	- Fix compilation on Solaris 11 (Mantis #1091).
2845
28463.3.1   (Bugfix and Stability release)
2847
2848	Evaluation of policies:
2849
2850	- Do not cut off name of bundle in variables interpolation (Mantis #975).
2851	- Do not segfault in function evaluation guarded by ifvaclass clause (Mantis #1084, #864).
2852	- Do not segfault if "classes" promise does not declare any value to be evaluated (Mantis #1074).
2853	- Do not segfault in database promises if there is no
2854	    database_operation provided (Mantis #1046).
2855
2856	Built-in functions:
2857
2858	- Fix countclassesmatching() function which was misbehaving trying
2859	    to match classes starting with alphanumeric symbol (Mantis #1073).
2860	- Fix diskfree() to return kilobytes, as described in documentation (Mantis #980, #955).
2861	- Fix hostsseen() function to avoid treating all hosts as not
2862	    being seen since 1970 (Mantis #886).
2863	- Do not output misleading error message if readtcp() is unable to connect (Mantis #1085).
2864
2865	Command-line interface:
2866
2867	- -d option previously reqired an argument, though help message disagreed (Mantis #1053).
2868	- Disable --parse-tree option, not ready for the release (Mantis #1063).
2869	- Acept -h as a --help option.
2870	- Ensure that cf-execd might be started right after being shut down.
2871
2872	Misc:
2873
2874	- Plug file descriptor leak after failed file copy (Mantis #990).
2875	- Fix unsafe admit rules in default promises.cf (Mantis #1040).
2876	- Fix splaytime to match documentation: it is specified in minutes, not seconds (Mantis #1099).
2877
2878	Packaging:
2879
2880	- Fix owner/group of initscript and profile.d snippet in RPM builds (Mantis #1061, #1058).
2881	- Fix location of libvirt socket CFEngine uses to connect to libvirtd (Mantis #1072).
2882	- Install CoreBase to /var/cfengine/masterfiles during installation (Mantis #1075).
2883	- Do not leave old cf-twin around after upgrade (Mantis #1068)
2884	- Do not leave rcS.d symlinks after purging .deb package (Mantis #1092).
2885
28863.3.0
2887
2888	New promise types:
2889	- Guest environments promises, which allow to manipulate virtual
2890	  machines using libvirt.
2891	- Database promises, which allow to maintain schema of MySQL and
2892	  PostgreSQL databases. Database promises are in "technical preview"
2893	  status: this promise type is subject to change in future.
2894	- Services promises for Unix, allows abstraction of details
2895	  on managing any service
2896
2897	New built-in functions:
2898	- dirname() to complement lastnode()
2899	- lsdir()
2900	- maplist() to apply functions over lists
2901
2902	New features:
2903	- Allow defining arrays from modules.
2904	- Allow both process_stop' and signals' constraints in
2905	  processes' promises at the same time.
2906	- cf-promises --gcc-brief-format option to output warnings and
2907	  errors in gcc-compatible syntax which to ease use "go to next
2908	  error" feature of text editors.
2909	- Iteration over lists is now allowed for qualified (non-local) lists.
2910
2911	New built-in variables and classes (Linux):
2912	- Number of CPUs: $(sys.cpus), 1_cpu, 2_cpus etc
2913
2914	New built-in variables and classes (Unices):
2915	- $(sys.last_policy_update) - timestamp when last policy change was seen by host
2916	- $(sys.hardware_addresses) - list of MAC adresses
2917	- $(sys.ip_addresses) - list of IP addresses
2918	- $(sys.interfaces) - list of network interfaces
2919	- $(sys.hardware_mac[$iface]) - MAC address for network interface
2920	- mac_<mac_address>:: - discovered MAC addresses
2921
2922	Changes:
2923
2924	- Major cleanup of database handling code. Should radically decrease
2925	  amount of database issues experienced under heavy load.
2926
2927	  *WARNING*: Berkeley DB and SQLite backends are *removed*, use
2928	  Tokyo Cabinet or QDBM instead. Both Tokyo Cabinet and QDBM are
2929	  faster than Berkeley DB in typical CFEngine workloads.
2930
2931	  Tokyo Cabinet requires C99 environment, so it should be
2932	  available on every contemporary operating system.
2933
2934	  For the older systems QDBM, which relies only on C89, is a
2935	  better replacement, and deemed to be as portable, as Berkeley DB.
2936
2937	- Change of lastseen database schema. Should radically decrease
2938	  I/O contention on lasteen database.
2939
2940	- Automatic reload of policies by cf-execd.
2941	- Documentation is generated during build, PDF and HTML files are
2942	  retired from repository.
2943	- Rarely used feature retired: peer connectivity intermittency calculation.
2944	- Memory and CPU usage improvements.
2945	- Testsuite now uses 'make check' convention and does not need root
2946	  privileges anymore.
2947	- cf_promises_validated now filled with timestamp, allows digest-copy
2948	  for policy instead of mtime copy which is safer when clocks are unsynchronised
2949	- The bundled failsafe.cf policy now has trustkey=false to avoid IP spoofing
2950	  attacks in default policy
2951	- See the full list of bugfixes at
2952	  https://cfengine.com/bugtracker/changelog_page.php
2953
29543.2.4   (Bugfix and Stability release)
2955
2956	Fixed failure in network transfer in case of misbehaving peer
2957
2958	A few tiny memory leaks on error paths fixed
2959
29603.2.3   (Bugfix and Stability release)
2961
2962	A few tiny memory leaks fixed
2963
2964	Improved performance of cf-serverd under heavy load with
2965	TokyoCabinet database
2966
2967	Full list of issues fixed is available on
2968	https://cfengine.com/bugtracker/changelog_page.php
2969
29703.2.2   (Bugfix and Stability release)
2971
2972	Enabled compilation in "large files" mode under AIX
2973
2974	Alleviated problem with broken file transfers over unstable
2975	Internet links.
2976
2977	Full list of issues fixed is available on
2978	https://cfengine.com/bugtracker/changelog_page.php
2979
29803.2.1   (Bugfix and Stability release)
2981
2982	Fixed compilation under HP-UX and Solaris
2983
2984	Enabled compilation using HP ANSI C compiler
2985
2986	Full list of issues fixed is available on
2987	https://cfengine.com/bugtracker/changelog_page.php
2988
29893.2.0
2990	New bootstrap method with single-command bootstrapping:
2991	- cf-agent --bootstrap --policy-server 123.456.789.123
2992	- Associated policy template files are added, partially maintained
2993	  by CFEngine
2994
2995	Bug fixes for file-editing, package versioning, and embedded
2996	database corruption (We recommend using TokyoCabinet instead of
2997	BerkeleyDB if building from source).
2998
2999	Improved upgrade path for Nova.
3000
3001	Patches for improved run-agent concurrency
3002
3003	Reorganization of documentation and community resources
3004
3005	100% on regression test suite on 3 operating systems
3006	(Ubuntu, Debian, SuSE on x86-64 hardware)
3007
3008	Support for multiple release environments
3009
3010	package_policy update and addupdate now check if user-supplied
3011	version is larger than currently installed - updates only if so
3012
3013	Help text of cf-report -r corrected - a list of key hashes is
3014	required, not ip addresses.
3015
3016	New Emacs mode for CFEngine policy files (thanks to Ted Zlatanov!)
3017
3018	Warnings are on edit_line changes can now give greater degree of information
3019	without spamming promise logs
3020
3021	Class expressions parser accepts '||' as an alias for '|' again.
3022
3023	Invalidation of package list cache on installation/removal of
3024	packages.
3025
3026	New option cf-key -r to remove host key by IP or hostname.
3027
3028	Added detection of network interfaces which belong to BSD jails.
3029
3030	Improve robustness of multi-threaded code, in particular fix
3031	problems with spurious access denials in server and losing of
3032	authentication rules after policy reload.
3033
3034	cf-promises accepts option -b matching cf-agent, which causes it
3035	to do not complain about missing bundlesequence.
3036
3037	New functions and(), not(), or() and concat() to ease use of
3038	ifvarclass() clause.
3039
3040	Full list of issues fixed is available on
3041	https://cfengine.com/bugtracker/changelog_page.php
3042
30433.1.5
3044	New class parser, '||' is no longer allowed in expressions (use '|').
3045
3046	Class setting in the promise types insert_lines, delete_lines,
3047	replace_patterns, field_edits, vars, classes is restored.
3048
3049	suspiciousnames implemented.
3050
3051	New function getvalues().
3052
3053	New functions parse{read,int,string}array to match read{read,int,string}array.
3054
3055	Testsuite added to check for core functionality.
3056
3057	Syslog prefix is fixed to say 'cf3' instead of 'community'.
3058
30593.1.4	(Bugfix and Stability release)
3060
3061	Some urgent patches to 3.1.3.
3062	Class validation parse bug fixed.
3063	Global zone handling error for solaris fixed.
3064	Package architectures handled correctly (bug #456).
3065	Reading and writing of key name "root-.pub" eliminated (bug #442, #453).
3066	cf-serverd crash because of race condition on SERVER_KEYSEEN fixed.
3067	Lock purging to avoid remnant complexity explosion (bug #430).
3068	Some copyright notices added that got lost.
3069
30703.1.3   (Stability release)
3071
3072	Major memory leaks in cf-monitord, cf-execd, cf-serverd fixed (bug #427).
3073	The daemons now show no growth even with very complex policies.
3074
3075	cf-serverd crash due to race condition in DeleteScope() fixed (bug #406).
3076
3077	Added 30 second timeout on recv() on Linux.
3078
3079	package_noverify_returncode implemented (bug #256).
3080
3081	A flexible mechanism for setting classes based on return codes of
3082	commands has been introduced. Allows for setting promise kept,
3083	repaired or failed based on any return codes. This is currently
3084	implemented for commands-promises, package-manager commands and
3085	transformer in files. In classes body, see attributes
3086	kept_returncodes, repaired_returncodes, failed_returncodes (bug
3087	#248, #329).
3088
3089	New function ip2host - reverse DNS lookup (bug #146).
3090
30913.1.2   (Scalability/efficiency release)
3092
3093	Big efficiency improvements by caching output from
3094	cf-promises. Can also be used for much more efficient policy
3095	deployment (only pull if changed).
3096
3097	Caching state of ps command for greater efficiency. Reloaded for each bundle.
3098
3099	Index class lookup improves efficiency of class evaluation for huge configurations.
3100
3101	Fixed issue where certain promiser strings got corrupted.
3102
3103	Minor memory access issues fixed.
3104
3105	Iterator bug introduced in 3.1.0 fixed
3106
31073.1.1   (Bugfix release)
3108
3109	Memory leaks in server tracked down and fixed.
3110	List expansion bug (one list items not executed) fixed.
3111	Security issue introduced by change of runcommand shell policy fixed. If users defined a runcommand for cf-runagent/cf-serverd communication, possible to execute commands.
3112	cf-key -s command for showing key hash/IP address identity pairs
3113
31143.1.0
3115	Change in storage of public keys. Cfengine now hashes the public key and uses this
3116	as the keyname. Keys will be converted automatically.
3117
3118	The old dynamic addresses lists are deprecated.
3119	Caching of dns and key information for greater server speed.
3120	Change in last-seen format reflects the public key usage.
3121
3122	New package policy addupdate - installs package if not there and
3123	updates it otherwise.
3124
3125	Support for package_changes => "bulk" in file repository as well.
3126
3127	New special function readstringarrayidx, similar to readstringarray,
3128	but uses integer indices. Very useful if first row elements are
3129	not good identifiers (e.g. contains spaces, non-unique, etc.).
3130
3131	Change two log formats to use time() instead of date()
3132	- filechanges
3133	- total compliance
3134
3135	Change from using md5 to sha256 as default digest for commercial version,
3136	community retains md5 for compat.
3137
3138	Commands not returning 0 in commands-promises are flagged
3139	as repair_failed.
3140
3141	Adjustable timeout on connect(). Defaults to 10 seconds, adjustable
3142	with default_timeout in agent control.
3143
3144	Redesign of the knowledge map infrastructure.
3145
3146	Now possible to use variables to call methods, e.g
3147
3148	methods:
3149
3150	  "name $(list)" usebundle => $(list)("abc");
3151
3152	See reference manual notes
3153
3154	Changes to normal ordering to optimize execution.
3155
3156	Increased stability by always initializing Attribute and Promise
3157	structures.
3158
3159	When running cf-promises in dry-run mode (-n), the user does not need
3160	to put binaries in WORKDIR/bin. For example, non-privileged users can verify root
3161	policies.
3162
3163	Source control revision added in version string if run in verbose mode
3164	(e.g. "cf-promises -vV"). This needs some refining, uses revision of a header now.
3165
3166	New semantics in return values of list functions. Null values are now allowed
3167	and there is no iteration over empty lists. The value "cf_null" is reserved for
3168	use as a null iterator.
3169
31703.0.5p1
3171	Showing paths allowed/denied access to when cf-serverd is run in verbose mode.
3172	Bug in server fixed for dynamic addresses.
3173	File handle closure bugfix - too many open databases.
3174	Seg fault in mount files fix.
3175	Twin used in cf-execd without checking.
3176	Check_root set wrong directory permissions at source not destination.
3177	Error message degraded in body definition.
3178	Undefined body not warned as error.
3179	Various build enahncements.
3180	Package_list_update called only once per manager, and fixed crash.
3181	Version number bug in packages.
3182
31833.0.5
3184	Encryption problems fixed - client key buffer was uninitialized.
3185
3186	Classes-promisers are now automatically canonified when class
3187	strings are defined, to simplifying the use of variables in classes.
3188
3189	New scalars sys.cf_version and sys.nova_version that hold Cfengine version information.
3190
3191	Attribute package_delete_convention added, to allow customizable
3192	package name in delete command during update.
3193
3194	package_list_update_ifelapsed limit added.
3195
3196	Private variable $(firstrepo) is available in package_name_convention
3197	and package_delete_convention in order to expand the full path to
3198	a package, which is required by some managers.
3199
3200	Some of the threading code is rewritten and made more robust. This includes
3201	synchronizing access to the lastseen database from the server.
3202
3203	Bad initialization of BSD flags fixed
3204	Multiple variable expansion issues in control fixed for server and agent
3205	Allow ignore_missing_bundles to affect methods: bundles too
3206	Run agent trust dialogue fixed
3207
3208	Bug in CPU monitoring, increasing time scale caused linear decay
3209	of CPU measurement.
3210
3211	Bug in Setuid log storage, fix.
3212
3213	Hooks added for new Nova virtualization promises.
3214
3215	Multithreading mutex failed to collide during cfservd leading to dropped authentication under heavy load.
3216
3217
32183.0.4
3219	Class cancellation in promises to create better class feedback,
3220	allows emulation of switch/case semantics etc
3221
3222	Value of SA measurement promises
3223
3224	Special function getenv() which returns the contents of an
3225	environment variable (on all platforms).
3226	New function translatepath for generic Windows
3227	New function escape() to escape literals as regular expressions (like SQL)
3228	New function host2ip for caching IP address lookup
3229	New function regextract for setting variables with backreferences
3230
3231	New variables for the components $(sys.cf_agent), $(sys.cf_know) etc
3232	pointing to the binaries.
3233
3234	More robust integrated database implementation; closing all
3235	handles when receiving signals, self-healing on corruption.
3236
3237	Package installation on localhost without a manager like yum completed,
3238	multiple repositories searched, and universal methods.
3239
3240	Numerous bugfixes
3241
3242
32433.0.3
3244	sha256 .. new hashes in openssl included in syntax tree.
3245
3246	End of line autocropping in readfile (hopefully intelligent)
3247
3248	hashmatch function incorrectly implemented - old debugging code left behind. Fix.
3249
3250	sys.crontab variable
3251
3252	Unknown user is now interpretated as "same user", so that we give cfengine a chance to
3253	fix
3254
3255	Unregistered addresses no longer report "(Non registered IP)", but return as the address
3256	itself when doing reverse lookups.
3257
32583.0.2
3259	IMPORTANT: Change in normal ordering of editing. replace comes
3260	after insert lines Much testing and minor bug fixing
3261
3262	Memory leaks fixed
3263	Many hooks added for Nova enterprise extensions.
3264
3265	promise_output reports now placed in WORKDIR/reports directory
3266
3267	Initialization correction and self-correx in monitord
3268
3269	Many new body constraints added.
3270
3271	Code readied for enterprise version Nova.
3272
3273	-b option can override the bundlesequence (must not contain parameters yet)
3274
3275	collapse_destination_dir option added to copy so that files can be
3276	aggregated from subdirectories into a single destination.
3277
3278	Preparation for release:
3279	unit_accessed_before.cf           x
3280	unit_accumulated_time.cf          x
3281	unit_acl.cf                       x
3282	unit_acl_generic.cf               x
3283	unit_ago.cf                       x
3284	unit_arrays.cf                    x
3285	unit_backreferences_files.cf      x
3286	unit_badpromise.cf                x
3287	unit_badtype.cf                   x
3288	unit_bsdflags.cf                  x
3289	unit_cf2_integration.cf           x
3290	unit_changedbefore.cf             x
3291	unit_change_detect.cf             x
3292	unit_chdir.cf                     x
3293	unit_classes_global.cf            x
3294	unit_classmatch.cf                x
3295	unit_classvar_convergence.cf      x
3296	unit_compare.cf                   x
3297	unit_controlclasses.cf            x
3298	unit_control_expand.cf            x
3299	unit_copy.cf                      x
3300	unit_copy_edit.cf                 x
3301	unit_copylinks.cf                 x
3302	unit_createdb.cf                  x
3303	unit_create_filedir.cf            x
3304	unit_definitions.cf               x
3305	unit_deletelines.cf               x
3306	unit_disable_and_rotate_files.cf  x
3307	unit_dollar.cf                    x
3308	unit_edit_column_files.cf         x
3309	unit_edit_comment_lines.cf        x
3310	unit_edit_deletenotmatch.cf       x
3311	unit_edit_insert_lines.cf         x
3312	unit_edit_insert_lines_silly.cf   x
3313	unit_edit_replace_string.cf       x
3314	unit_edit_sectioned_file.cf       x
3315	unit_edit_setvar.cf               x
3316	unit_edit_triggerclass.cf         x
3317	unit-env.cf                       x
3318	unit_epimenides.cf                x
3319	unit_exec_args.cf                 x
3320	unit_execd.cf                     x
3321	unit_exec_in_sequence.cf          x
3322	unit_execresult.cf                x
3323	unit_expand.cf                    x
3324	unit_failsafe.cf                  x
3325	unit_file_change_detection.cf     x
3326	unit_fileexists.cf                x
3327	unit_file_owner_list_template.cf  x
3328	unit_fileperms.cf                 x
3329	unit_filesexist2.cf               x
3330	unit_filesexist.cf                x
3331	unit_getgid.cf                    x
3332	unit_getindices.cf                x
3333	unit_getregistry.cf               x
3334	unit_getuid.cf                    x
3335	unit_global_list_expansion_2.cf   x
3336	unit_global_list_expansion.cf     x
3337	unit_groupexists.cf               x
3338	unit_hash.cf                      x
3339	unit_hashcomment.cf               x
3340	unit_hashmatch.cf                 x
3341	unit_helloworld.cf                x
3342	unit_hostrange.cf                 x
3343	unit_intarray.cf                  x
3344	unit_iprange.cf                   x
3345	unit_irange.cf                    x
3346	unit_isdir.cf                     x
3347	unit_islink.cf                    x
3348	unit_isnewerthan.cf               x
3349	unit_isplain.cf                   x
3350	unit_isvariable.cf                x
3351	unit_iteration.cf                 x
3352	unit_knowledge_txt.cf             x
3353	unit_lastnode.cf                  x
3354	unit_ldap.cf                      x
3355	unit_linking.cf                   x
3356	unit_literal_server.cf            x
3357	unit_locate_files_and_compress.cf x
3358	unit_log_private.cf               x
3359	unit_loops.cf                     x
3360	unit_measurements.cf              x
3361	unit_method.cf                    x
3362	unit_method_validate.cf           x
3363	unit_module_exec_2.cf
3364	unit_module_exec.cf
3365	unit_mount_fs.cf                  x
3366	unit_neighbourhood_watch.cf       x
3367	unit_null_config.cf               x
3368	unit_occurrences.cf               x
3369	unit_ordering.cf                  x
3370	unit_package_apt.cf               x
3371	unit_package_hash.cf              x
3372	unit_package_rpm.cf               x
3373	unit_package_yum.cf               x
3374	unit_package_zypper.cf            x
3375	unit_parallel_exec.cf             x
3376	unit_pathtype.cf                  x
3377	unit_pattern_and_edit.cf          x
3378	unit_peers.cf                     x
3379	unit_postfix.cf                   x
3380	unit_process_kill.cf              x
3381	unit_process_matching2.cf         x
3382	unit_process_matching.cf          x
3383	unit_process_signalling.cf        x
3384	unit_readlist.cf                  x
3385	unit_readtcp.cf                   x
3386	unit_regarray.cf                  x
3387	unit_registry.cf                  x
3388	unit_regline.cf                   x
3389	unit_reglist.cf                   x
3390	unit_remove_deadlinks.cf          x
3391	unit_rename.cf                    x
3392	unit_report_state.cf              x
3393	unit_reporttofile.cf              x
3394	unit_returnszero.cf               x
3395	unit_select_mode.cf               x
3396	unit_select_region.cf             x
3397	unit_selectservers.cf             x
3398	unit_select_size.cf               x
3399	unit_server_copy_localhost.cf     x
3400	unit_server_copy_remote.cf        x
3401	unit_server_copy_purge.cf         x
3402	unit_splitstring.cf               x
3403	unit_sql.cf                       x
3404	unit_storage.cf                   x
3405	unit_strcmp.cf                    x
3406	unit_stringarray.cf               x
3407	unit_syslog.cf                    x
3408	unit_template.cf                  x
3409	unit_tidy_all_files.cf            x
3410	unit_user_edit.cf                 x
3411	unit_user_edit_method.cf          x
3412	unit_userexists.cf                x
3413	unit_varclass.cf                  x
3414	unit_vars.cf                      x
3415	unit_warnifline.cf                x
3416	unit_webserver.cf                 x
3417
3418
34193.0.1
3420	First standalone release, independent of cfengine 2
3421	Purge old definitions and check consistency.
3422
3423	NB: changed search_mode to be a list of matching values
3424
3425	Reporting rationalized in cf-promises with -r only to avoid
3426	leaving output files everywhere.
3427
3428	Hooks added for upcoming commercial additions to cfengine.
3429
3430	Added classify() and hostinnetgroup() functions
3431	Added additional change management options for change detection
3432
3433	Package management added - generic mechanisms.
3434
3435	Limits on backgrounding added to avoid resource contention during cfengine runs.
3436	Image type added to cf-know.
3437
3438	New classes for quartly shifts: Morning,Afternoon,Evening,Night
3439
3440	Bug fixes in editfiles - line insertion for multiple line objects
3441
3442	Change the name of the variables and context from the monitord for
3443	better separation of data, and shorter names. sys -> mon
3444	average -> av, stddev -> dev
3445
3446	canonical name for windows changed from "nt" to "windows", also version names
3447	added "vista","xp" etc..
3448
3449	License notices updated for dual license editions.
3450
34513.0.0
3452	First release of cfengine 3. Known omissions:
3453	- no support for ACLs
3454	- no support for packages
3455	- no support for interface configuration
3456	These will be added in the next release.
3457