Crossbow 3.0.0 "Alida" ====================== After almost two years since version 2.0.0, I'm proud to announce a new release of Crossbow! Version 3.0.0, codename "Alida". This release comes with a few relevant changes that justify a bump of the MAJOR version digit. 1. The build system is migrated from Autotools to CMake ------------------------------------------------------- I recently grew fond of CMake, and it is nowadays easier for me to maintain a CMake configuration, than the Autoconf/Automake equivalent. CMake allows to leverage fast build tools such as Ninja, while keeping compatibility with classic tools such as Make, both on GNU and BSD systems. On the downside, it is hard or impossible to have a "dist" package that doesn't list CMake in the build time dependencies. I think the compromise is acceptable, since most packaging systems I know have a clean distinction between build time and run time dependencies. The README.md file distributed with Crossbow has been updated with brief instructions on how to compile and install your beloved feed reader, but please refer to the excellent CMake documentation for details. 2. Dropped crossbow-upgrade(1) ------------------------------ The crossbow-upgrade(1) tool served the purpose of migrating an existing configuration for the 1.x series of Crossbow to the new configuration format supported by the 2.x series. Since no change in the configuration language was introduced with Crossbow 3.0.0, the tool has been removed. If upgrading from Crossbow 1.x to Crossbow 3.0.0, please install Crossbow 2.0.0 first, run crossbow-upgrade(1) to migrate any old configurations to the new format, and then proceed with a new upgrade. 3. Feed entries are now identified by a digest ---------------------------------------------- Crossbow has relied so far on the "guid" field of feed entries as unique identifiers, and using the "link" field as a fallback when the "guid" is not identified. Unfortunately, however uncommon, nothing prevents a feed to publish multiple entries having the same "guid" or "link". A feed with such characteristics was found in the wild, and it could not be handled properly by Crossbow. To address this problem, Crossbow 3.0.0 uniquely identifies each entry by the SHA-1 digest of the concatenation of a few entry fields. The current selection of fields is: "title", "guid", "link" and "pubDate". To obtain the digest we rely on libcrypto, which is now a direct dependency of Crossbow. Since Crossbow keeps track of entries that have been seen by persisting their identifiers, all entries will be re-processed on the first execution after the upgrade. To avoid this, it is recommended to follow these steps: 1. Update all the feeds by running `crossbow`, forcing every unseen entry to be processed by Crossbow 2.0.0; 2. Install the 3.0.0 release; 3. Remove the persistence files corresponding to every involved configuration (by default, this means the "~/.crossbow" directory). This step is optional. 4. Update all the feeds again by running `crossbow -c` (catch-up mode). Any update published by followed feed in the time window between step 1 and step 4 is going to be lost.