This NEWS file records noteworthy changes, very tersely. See the manual for detailed information. Copyright 2010-2022 Jose E. Marchesi. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. Version 1.9 (16 April 2022) * Utilities: . Fix bug preventing recins and recset to work when /tmp is in a different mount point. . Fix a segfault that occured when csv2rec was presented with invalid data. . Fix long option name for -j/--join. * Format: . New special field %singular to mark fields whose contents must be unique in the containing record set. * librec: . Fix a segmentation fault when there are blank characters before the list of fields in %type fields. * Documentation: . New manual chapter discussing the ob-rec.el major mode. . Do not claim that recins creates non-existent files. * Other fixes: . CVE-2021-46019 . CVE-2021-46022 . CVE-2021-46022 . gnulib updated. Version 1.8 (3 January 2019) * Utilities: . Fix the build of readrec with recent bash headers. * librec: . Fix evaluation of sexes containing #NAME expressions. . Make numeric results from aggregated functions signed. * readred: . readrec --help now shows the help message and returns, instead of waiting for input. * Emacs mode: . rec-mode.el now supports case-insensitive searches. . rec-mode.el now defines it's own faces. . ob-rec.el was switched to lexical binding to satisfy later org-mode versions. * It is now possible to run the testsuite in parallel. * Other fixes: . gnulib updated. . GNU/Hurd build fixed. . Aggregate functions now work properly in Aarch64 and powerpc. Version 1.7 (25 March 2014) * Utilities: . rec2csv now supports a -d option to change the delimiter character in CSV files. . It is now possible to specify several recfiles in the command line containing anonymous records. * Format: . Support for restricting the fields that can appear in records with the new %allowed special field. . If a tab separates a field name and a field value is now ignored and not considered part of the field value. * librec: . The current version of the library is now 1. * Emacs mode: . It now possible to jump several records while navigating using a prefix argument to the next/previous commands. * Documentation: . The examples in the manual have been improved, and well as many other aspects: formatting, English, etc. Special thanks to Karl Berry for pointing out the problems and suggesting solutions. * Internal cleanup and code factorization. * Many, many, many bug fixes :D Version 1.6 (03 November 2013) * Utilities: . Support for joins and foreign keys. . Grouping records by one or more fields. . Sorting recors by several fields. . Specifying rewrite rules in field expressions. . Writing field values in rows. . Dot-notation in selection expressions. . Support for the >= and <= operators in selection expressions. . Aggregated functions: sum, min, max, avg. . New bash loadable builtin `readrec'. * Format: . New UUID field type. . User provided arbitrary constraints with %constraint. . Pre-defined constants MIN and MAX can now be used in ranges. * librec: . New high-level API: rec_db_query, rec_db_insert, rec_db_delete and rec_db_set. . Documentation in the rec.h header file extended and improved. * Emacs mode: . Texinfo manual describing the usage of rec-mode. . Support for a mode hook. . Comments are now supported in records. . add-change-log-entry in a recfile now does the right thing. . Commands for copying/killing fields and records. . Support for undo in navigation mode. . Field folding. . Editing methods for the several field types. . Statistics. * Documentation: . The user manual has been restructured and expanded. * Internal cleanup and code factorization. * Many, many, many bug fixes :D Version 1.5 (13 January 2012) * The utilities will now ask interactively for a password if it was not provided with the -s command line option. This avoids security problems related to shell history files. * Support for octal and hexadecimal numbers has been added. They can be used in both the records and selection expressions. * It is now possible to select a given number of random records in many of the utilities using the -m command line option. * The -n option now accepts a list of indexes, supporting ranges. * The new -U (uniq) option for recsel removes duplicated fields in the output records. * The new -q (quick) option allows to quickly search for the desired record without having to provide a complete selection expression. * Auto generated fields are now considered integers by default. This avoids repetitive patterns in record descriptors involving %auto and %type. * Tab characters are now allowed in blank lines betwwen records. * The API in rec.h is now better documented with comments, and improved. * recfix now exits with an error status if there is a parse error in some input file. * The usage of the internal data structures has been _vastly_ improved, resulting in a much faster operation. * Internal cleanup and code factorization. * Many, many, many bug fixes :D Version 1.4 (03 November 2011) * Support for encryption with the new %confidential special field. * Support for named types with the new %typedef special field. * Support for sorting with the new %sort special field. * Recutils support for org-babel is now included in the distribution as ob-rec.el. It allows to read rec data into org documents in both raw and table formats. * It is now possible to use double quotes for delimiting string literals in selection expressions, as well as single quotes. Unescapted newline characters are also supported. * The manual has been vastly improved. * recfix now supports several operations: check, sort, encrypt and decrypt. * recins now generates parseable locale independent dates when generating time-stamps in auto-fields. * Lots of bug fixes. Version 1.3 (11 February 2011) * A quite bad (and embarrassing) bug introduced in 1.2 has been fixed. The bug was causing recins, recdel and recset to report random integrity failures, due to a uninitialized variable. * New special field %size, that allows to define constraints in the size of record sets. * Several fixes in the user manual. * Little portability issue that prevented one of the tests to compile in macos x has been fixed. * Translations updates. Version 1.2 (4 February 2011) * New utility rec2csv, to export rec data to csv files. * Support for auto-incremented fields and timestamps with the new %auto field in record descriptors. * Support for comments in enum type descriptions. * recset now supports a new "set or add field" operation, implementing the common case of setting the value of a field in case it exists, or else add it to the record. * The flavor of regular expressions accepted in both selection expressions and type descriptions is now documented in the user manual. * Translations for German, Finnish, Swedish and Dutch. * recdel now performs an integrity check before to complete the deletion. * The utilities no longer "expand" the contents of remote descriptors in the local ones. * recset and recins no longer destroy the permissions of the rec file that is being modified. * Many fixes in the documentation. * Lots of bug fixes. Version 1.1 (24 December 2010) * New utility recfmt, to format records based on templates. * Improvements in selection expressions: . Support ranges in field subscripts. . New date operators: before (<<), after (>>) and sametime (==). . New ternary conditional operator (?:). . New string concatenation operator (&). * libcsv is now embedded in the source distribution, so it is no longer required to have it installed to build csv2rec. * Portability problems fixed. The programs have been tested in the following systems: . GNU/Linux . FreeBSD 6.4 . MacOS X . mingw32 . Solaris 8 . AIX 5.1 . HP-UX 11.00 . IRIX 6.5 . Tru64 (OSF/1 5.1) . Cygwin 1.7 * Lots of bug fixes. Version 1.0 (3 December 2010) * Initial release. . User manual. . Library (librec). . Utilities: recinf, recsel, recins, recdel, recset, recfix, csv2rec, mdb2rec. . Experimental Emacs mode (rec-mode.el).