Pages: Welcome | Projects

Crossbow 1.2.0 released

2021/4/13
Tags: [ C & C++ ] [ Crossbow ] [ Personal Projects ]

Crossbow 1.2.0 has been released!

A couple of weeks ago I experienced some failures while fetching feeds from Youtube. The fix is now complete, and yesterday evening I released the new version.

Fun fact (with a pinch of self-mockery): while making sure that the problem was actually fixed, I accidentally discovered that the old one (1.1.3) is not broken at all. I can't reproduce the problem anymore!

I don't really understand what happened. While troubleshooting, days ago, the only interesting thing I noticed was the HTTP 301: the obtained XML file could be parsed just fine. I assumed that the 301 was to blame, but now I'm no longer sure.

At any rate, Crossbow is now using libcurl directly, and does indeed support parallel downloads, thanks to the powerful libcurl-multi(3) interface.

The downside of it is that Crossbow 1.2.0 is no longer compatible with some older systems, such as Debian Buster: the new implementation relies on the curl_multi_poll(3) call, which is only available in libcurl >= 7.66.0.

Retrofitting it should be fairly easy (I would probably use curl_multi_fdset(3) + pselect(2)), but given my limited spare time, I think I'll focus on more important stuff.

I've no clue on how many people use Crossbow, but I suspect that the intersection between the set of Crossbow users and the set of those who can't upgrade to libcurl >= 7.66.0 is empty. Even if it wasn't, there's no huge advantage in upgrading anyway, as it turns out. :-)