Writing Guile bindings for C libraries is seriously fun. As recutils is becoming popular in GNU, I thought it would be a fun idea to write Guile bindings for librec, the library powering recutils. Consequently, we are also thinking about adding Guile scripting to recutils.
Guile's design as an extension language is present in all of its features. Here and there you will find little gems that have very clearly been designed to help dealing with C code. Even GOOPS, the Guile implementation of GOOPS, has such features. In the article below I explain how I leverage a feature called virtual slots when writing bindings for recutils.
https://ane.github.io/programming/lisp/goops-virtual-slots-and-ffi.html
Hi good peoples!
During the last few years I somehow stopped adding new features to the GNU recutils, limiting its development to the resolution of important bugs, and releasing every one or another year. The reason for this was that I considered the recutils to be, mostly, "finished".
However, as of recent some projects have adopted recutils as part of their infrastructure (guix, GNUnet) and it seemst hat Fred's and George's favorite tools are getting popular in the internets... and what is more, people are sending patches! o_O
So I have decided to put the GNU recutils back under active development, for the immense joy of adults and children (and turtles.)
The very first step is a simplification/modernization of the codebase, which is already work in progress (see the last couple of commits). You see, I wrote recutils a looong time ago, and therefore I don't feel that comfortable looking at the code: I call this feeling/phenomena "shameware".
Then I will probably rewrite the multi-set internal implementation, to make it more efficient, and go straight to implement some facilities that the recutils users have been wishing for for a long time (like sorting records in reverse order, ahem.)
So let's see, 2021 may introduce recutils 2.0! Slowly and carefully... turtle steps..
Salud!
The pre-release recutils-1.8.90.tar.gz is now available at ftp://alpha.gnu.org/gnu/recutils/recutils-1.8.90.tar.gz
The NEWS file in the tarball contains a list of the changes since 1.8.
The planned date for releasing 1.9 is Saturday 1 February 2020.
Please report any problem found with the pre-release to bug-recutils@gnu.org.
Thanks!
I am happy to announce a new release of the GNU recutils, version 1.8.
The changes in this release are:
The release can be found in the GNU ftp:
ftp://ftp.gnu.org/gnu/recutils/recutils-1.8.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically
redirect to a nearby mirror.
==About GNU recutils==
GNU recutils is a set of tools and libraries to access human-editable,
text-based databases called recfiles. The data is stored as a
sequence of records, each record containing an arbitrary number of
named fields. Advanced capabilities usually found in other data
storage systems are supported by GNU recutils: data types, data
integrity (keys, mandatory fields, etc) as well as the ability of
records to refer to other records (sort of foreign keys). Despite its
simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information:
http://www.gnu.org/software/recutils
--
Jose E. Marchesi
Frankfurt am Main
3 January 2019
I am happy to announce a new release of the GNU recutils, version 1.7.
The changes in this release are:
The release can be found in the GNU ftp:
ftp://ftp.gnu.org/gnu/recutils/recutils-1.7.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically redirect to a nearby mirror.
GNU recutils is a set of tools and libraries to access human-editable,
text-based databases called recfiles. The data is stored as a
sequence of records, each record containing an arbitrary number of
named fields. Advanced capabilities usually found in other data
storage systems are supported by GNU recutils: data types, data
integrity (keys, mandatory fields, etc) as well as the ability of
records to refer to other records (sort of foreign keys). Despite its
simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information:
http://www.gnu.org/software/recutils.
--
Jose E. Marchesi
Frankfurt am Main
25 March 2014
I am happy to announce a new release of the GNU recutils, version 1.6.
The changes in this release are:
The release can be found in the GNU ftp:
ftp://ftp.gnu.org/gnu/recutils/recutils-1.6.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically
redirect to a nearby mirror.
GNU recutils is a set of tools and libraries to access human-editable,
text-based databases called recfiles. The data is stored as a
sequence of records, each record containing an arbitrary number of
named fields. Advanced capabilities usually found in other data
storage systems are supported by GNU recutils: data types, data
integrity (keys, mandatory fields, etc) as well as the ability of
records to refer to other records (sort of foreign keys). Despite its
simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information:
http://www.gnu.org/software/recutils
--
Jose E. Marchesi
Frankfurt am Main
03 November 2013
I will be doing a talk introducing recutils at the CeBIT Global Conference in Hannover, Germany. The talk is scheduled the 7th of March at 10:00.
The talk is one of the activities organized in the Open Source Forum (yes, it must read Free Software Forum instead...). Here is the complete program. I recommend the talk by Matthias Kirschner.
See you there! :)
The FSCONS people recently uploaded the video recordings of the talks which were done in the last edition. Among these there is a GNU recutils talk which introduces the concepts imlemented by recutils and provides an overview of the rec format and the utilities.
As a novelty, this is the first recording of a recutils introductory talk where you can actually read what is written in the slides :)
Also make sure to take a look to the other videos! Lots of interesting stuff, as is usual in the FSCONS conference.
I am happy to announce a new release of the GNU recutils, version 1.5.
The changes in this release are:
The release can be found in the GNU ftp: ftp://ftp.gnu.org/gnu/recutils/recutils-1.5.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically redirect to a nearby mirror.
GNU recutils is a set of tools and libraries to access human-editable, text-based databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. Advanced capabilities usually found in other data storage systems are supported by GNU recutils: data types, data integrity (keys, mandatory fields, etc) as well as the ability of records to refer to other records (sort of foreign keys). Despite its simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information: http://www.gnu.org/software/recutils
--
Jose E. Marchesi
Frankfurt am Main
13 January 2012
I am happy to announce a new release of the GNU recutils, version 1.4.
The user visible changes in this release are:
The release can be found in the GNU ftp: ftp://ftp.gnu.org/gnu/recutils/recutils-1.4.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically redirect to a nearby mirror.
About GNU recutils
GNU recutils is a set of tools and libraries to access human-editable, text-based databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. Advanced capabilities usually found in other data storage systems are supported by GNU recutils: data types, data integrity (keys, mandatory fields, etc) as well as the ability of records to refer to other records (sort of foreign keys). Despite its simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information: http://www.gnu.org/software/recutils
--
Jose E. Marchesi
Frankfurt am Main
03 November 2011
Some people contributed recutils binary packages for some GNU/Linux distributions. Sometimes it is easy for the user to get one of those packages installed than to build the program from sources. There is a list of the existing packages, to my knowledge.
- Unofficial Debian package: http://debian.2flub.org (also available in the mentors site at Debian).
- Arch package: https://aur.archlinux.org/packages.php?ID=45559
- OpenSuse package: https://build.opensuse.org/package/repositories?package=recutils&project=home%3Acyberiad%3AFactory
- Mandrake package: http://rpm.pbone.net/index.php3/stat/4/idpl/15128664/dir/mandrake_other/com/recutils-1.2-1-mdv2011.0.i586.rpm.html
Many thanks to the people that contributed them! If you know of some other package not listed here, or are interested in making a new one, please contact the recutils maintainer.
I am happy to announce a new release of the GNU recutils, version 1.3.
The user visible changes in this release are:
- 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.
The release can be found in the GNU ftp: ftp://ftp.gnu.org/gnu/recutils/recutils-1.3.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically redirect to a nearby mirror.
About GNU recutils
GNU recutils is a set of tools and libraries to access human-editable, text-based databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. Advanced capabilities usually found in other data storage systems are supported by GNU recutils: data types, data integrity (keys, mandatory fields, etc) as well as the ability of records to refer to other records (sort of foreign keys). Despite its simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information: http://www.gnu.org/software/recutils
--
Jose E. Marchesi
Frankfurt am Main
11 February 2011
I am happy to announce a new release of the GNU recutils, version 1.2.
The user visible changes in this release are:
- 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 Ducht.
- 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.
The release can be found in the GNU ftp: ftp://ftp.gnu.org/gnu/recutils/recutils-1.2.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically redirect to a nearby mirror.
GNU recutils is a set of tools and libraries to access human-editable, text-based databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. Advanced capabilities usually found in other data storage systems are supported by GNU recutils: data types, data integrity (keys, mandatory fields, etc) as well as the ability of records to refer to other records (sort of foreign keys). Despite its simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information: http://www.gnu.org/software/recutils
The GNU recutils suite comprises:
- A texinfo manual, describing the Rec format and the accompaying software.
- A C library (librec) that provides a rich set of functions to manipulate rec data.
- A set of C utilities that can be used in shell scripts and in the command line to operate on rec files:
+ `recinf' prints information about the contents of recfiles.
+ `recsel' prints records and field values.
+ `recins' adds new records to a recfile.
+ `recdel' deletes records.
+ `recset' manipulates fields.
+ `recfix' checks and fixes recfiles.
+ `recfmt' formats records based on templates.
+ `csv2rec' converts comma-separated-values files to recfiles.
+ `rec2csv' converts recfiles to comma-separated-values files.
+ `mdb2rec' converts mdb files (used by MS-Access) to recfiles.
- rec-mode.el - An emacs mode to edit and navigate recfiles. Still experimental.
--
Jose E. Marchesi
Frankfurt am Main
4 February 2011
I am happy to announce a new release of the GNU recutils, version 1.1.
The user visible changes in this release are:
- 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.
The release can be found in the GNU ftp: ftp://ftp.gnu.org/gnu/recutils/recutils-1.1.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically redirect to a nearby mirror.
About GNU recutils
GNU recutils is a set of tools and libraries to access human-editable, text-based databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. Advanced capabilities usually found in other data storage systems are supported by GNU recutils: data types, data integrity (keys, mandatory fields, etc) as well as the ability of records to refer to other records (sort of foreign keys). Despite its simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information:
http://www.gnu.org/software/recutils
The GNU recutils suite comprises:
- A texinfo manual, describing the Rec format and the accompaying software.
- A C library (librec) that provides a rich set of functions to manipulate rec data.
- A set of C utilities that can be used in shell scripts and in the command line to operate on rec files:
+ `recinf' prints information about the contents of recfiles.
+ `recsel' prints records and field values.
+ `recins' adds new records to a recfile.
+ `recdel' deletes records.
+ `recset' manipulates fields.
+ `recfix' checks and fixes recfiles.
+ `recfmt' formats records based on templates.
+ `csv2rec' converts comma-separated-values files to recfiles.
+ `mdb2rec' converts mdb files (used by MS-Access) to recfiles.
- rec-mode.el - An emacs mode to edit and navigate recfiles. Still experimental.
--
Jose E. Marchesi
Frankfurt am Main
24 December 2010
I am happy to announce the first release of the GNU recutils, version 1.0.
The release can be found in the GNU ftp: ftp://ftp.gnu.org/gnu/recutils/recutils-1.0.tar.gz
Alternatively, http://ftpmirror.gnu.org/recutils/ will automatically redirect to a nearby mirror.
GNU recutils is a set of tools and libraries to access human-editable, text-based databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. Advanced capabilities usually found in other data storage systems are supported by GNU recutils: data types, data integrity (keys, mandatory fields, etc) as well as the ability of records to refer to other records (sort of foreign keys). Despite its simplicity, recfiles can be used to store medium-sized databases.
Please see the GNU recutils homepage for more information: http://www.gnu.org/software/recutils
The GNU recutils suite comprises:
- A texinfo manual, describing the Rec format and the accompaying software.
- A C library (librec) that provides a rich set of functions to manipulate rec data.
- A set of C utilities that can be used in shell scripts and in the command line to operate on rec files:
+ `recinf' prints information about the contents of recfiles.
+ `recsel' prints records and field values.
+ `recins' adds new records to a recfile.
+ `recdel' deletes records.
+ `recset' manipulates fields.
+ `recfix' checks and fixes recfiles.
+ `csv2rec' converts comma-separated-values files to recfiles.
+ `mdb2rec' converts mdb files (used by MS-Access) to recfiles.
- rec-mode.el - An emacs mode to edit and navigate recfiles. Still experimental.
--
Jose E. Marchesi
Frankfurt am Main
3 December 2010
I am happy to introduce a new GNU package: GNU Recutils.
GNU Recutils is a set of tools and libraries to access simple human-editable, text-based databases called recfiles. recfiles contain data structured as a sequence of records, and support data integrity as well as the ability of record fields to refer to other records.
Despite its simplicity, recfiles can be used to store medium-sized databases that you can either edit with your favorite text editor (i.e. Emacs) or access with automated scripts using the recutils.
The GNU recutils suite comprises:
- A Texinfo manual describing the Rec format and the software.
- A C library (librec) providing a rich set of functions to access rec files.
- A set of C utilities (recinf, recset, recins, recdel, recset and recfix) that can be used in shell scripts and in the command line to operate on rec files.
- An Emacs mode (rec-mode).
The current status of the package is:
- The library is implemented.
- The utilities are implemented.
- The manual needs some more work.
- The Emacs mode needs more work.
Before to make the first release we have to fix the manual and to complete the rec-mode Emacs mode, as well as to implement support for internationalization (with gettext) in both the library and the utilities.
Both the Savannah project (http://savannah.gnu.org/projects/recutils) and the homepage (http://www.gnu.org/software/recutils) are in place now.
If you are interested in collaborating in the development of recutils, please write to the development mailing list: http://lists.gnu.org/mailman/listinfo/bug-recutils.
Note that we are not only interested in people contributing with code, but also with ideas and documentation. The rec format is young and is suitable to all kind of improvements.