nzbgetcom / nzbget

Efficient usenet downloader
https://nzbget.com
GNU General Public License v2.0
316 stars 16 forks source link

Update libpar2 #93

Open paul-chambers opened 9 months ago

paul-chambers commented 9 months ago

The version of libpar2 embedded in the nzbget source tree was derived from par2cmdline v0.4

The official par2cmdline repo on github (https://github.com/Parchive/par2cmdline) lists 0.8.1 as the current version, which is already almost four years old.

Since the current owner has put out a call for a new maintainer, perhaps it would be worth bringing it into the nzbgetcom org on github?

I don't know how many other projects use it, but it seems like a safe bet that nzbget is one of biggest users.

dnzbk commented 9 months ago

Good idea! I've been thinking about that too. We use the yencode library in the same way. We could try to update this lib as well.

chtk commented 9 months ago

Sab uses par2cmdline as well. In the latest minor release they started recommending par2cmdline-turbo, which seems to be a maintained fork.

luckedea commented 8 months ago

v24 build would be dedicated to performance improvements, this issue would be included into the scope.

magicdoublem commented 8 months ago

Good idea! I've been thinking about that too. We use the yencode library in the same way. We could try to update this lib as well.

The mentioned par2cmdline-turbo should be a pretty easy upgrade, as it's designed as a "drop-in"-replacement. I couldn't test it so far, because I didn't have the time to set up a building-env for nzbget so far, but I'll try.

For the future, it could be interesting to enable the usage of external par2cmdline-variations.

As in regard to the brought up yenc-implementation. https://github.com/animetosho/rapidyenc is something I have in my bookmarks. Could be interesting, if you guys haven't seen it yet.

isarrider commented 6 months ago

v24 build would be dedicated to performance improvements, this issue would be included into the scope.

If performance is a target, take a look at this too: https://github.com/animetosho/rapidyenc?tab=readme-ov-file Discussion with the original author: https://github.com/animetosho/node-yencode/issues/4#issuecomment-330025192

luckedea commented 6 months ago

Moving this into v25 milestone since it's performance-related.

Safihre commented 5 months ago

@isarrider @magicdoublem NZBGet already uses rapidyenc. I started the conversation about it with animetosho, but it was hugbug (with animetosho's help) who implemented it many years ago (2017) in NZBGet, before we got it into SABnzbd only 2 years ago. Because I suck at C++ 😂 You see can the whole back-and-forth between animetosho and hugbug that in the issue you linked 🙂

isarrider commented 5 months ago

I know - and thats why I think it makes sense to lift it to the latest version... ;)

luckedea commented 4 months ago

Looked into it and it's not fully clear why @hugbug modified the integrated par2 library. We still need to compare current version used versus original (old) version.

We do plan to switch away to external new library anyway within v25, but the scope of the task is bigger considering building and testing for all platforms.

animetosho commented 4 months ago

Looked into it and it's not fully clear why @hugbug modified the integrated par2 library

From memory, it was based on an old version of par2cmdline (0.4?), before it included multi-threading. Nzbget's version added multi-threading, plus hooks to get the current progress (libpar2 still doesn't offer this capability).

dnzbk commented 4 months ago

Good to know, thank you.

luckedea commented 1 month ago

Related https://github.com/Parchive/par2cmdline/issues/189