-
4.0.0695d1ebf · ·
Crossbow 4.0.0 I am happy to announce the release of Crossbow 4.0.0 after another year of development! The primary focus of this release was the replacement of libmrss, a task I have been considering for quite some time. Crossbow now depends on libeccio (https://dacav.org/projects/libeccio/) for reading feeds. In turn, libeccio relies on Mini-XML (https://www.msweet.org/mxml/) for XML parsing. With the authorship of libeccio, I have greater control over how data is extracted from input feeds. libeccio effectively handles various feeds encountered in the wild, properly extracting data from nested XML structures and common feed format extensions. The new library aims to provide a meaningful, rather than exhaustive, view of feed formats. I have chosen to exclude some fields, which means that the corresponding placeholders are no longer supported by Crossbow. This change is the main reason for the major version bump. To prevent unexpected behaviors post-upgrade, a check on the configuration file versioning has been implemented. As by tradition, all changes are thoroughly documented in the man pages. Additionally, Crossbow is now licensed under the ISC license. I wish you like it! Happy hacking!
-
3.0.0dc3e8a2c · ·
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.
-
v2.0.0e5f575b4 · ·
Crossbow reaches version 2.0.0. This new release comes with a substantial modifications, and it is not backwards compatible. The most relevant modification is the introduction of a configuration file, that defines the set of feeds to be monitored and their settings. In previous releases the configuration used to be baked into the feed persistence file. Decoupling persistence and configuration removes the need for commands such as crossbow-set(1), crossbow-del(1) and crossbow-query(1), which were intended as accessors for the persisted configuration. We are left with a single command, crossbow(1), that takes the place of crossbow-fetch(1). In order to facilitate the transaction from the 1.x series to the 2.x series, a new command named crossbow-upgrade(1) has been added to the distribution. The command migrates the configuration to the new format, while maintaining the tracking information for all monitored feeds. Apart from being represented in a different way, the feed configuration supports the same functionalities as before. The only noticeable difference is that the "print" and "pretty" handlers have been merged. As always, everything is explained in detail in the provided manpages. I hope you enjoy it :)