Old news

Update 17/09/2008

No new bugs have yet been found in dclib 0.3.21.

There may be some crashes possibly due to building dclib as a static library, so that will have to be stopped.

Since then valknut 0.4 can filter the userlist, and someone requested extra slots when uploading below a set speed. Well, this wasn't what they requested, but it's what they're going to get. Some upload slot behaviour was changed.

Update 13/09/2008

There was a typo in a valknut 0.3.21 Makefile.am, which breaks the build. (But somehow, not for me).

A fixed tarball valknut-0.3.21a.tar.bz2 was released. The source code (.cpp, .h, .ui files) was unchanged, so the version in the program is unchanged.

Release 12/09/2008

0.3.21 / 0.4.7 have been released. This is a bug fix release. dclib 0.3.20 has some serious bugs.

Update 11/09/2008

I managed to break what handles the list of transfers for dclib 0.3.20.

Wait for 0.3.21 or better yet 0.3.56.

Update 09/09/2008

ZPipe (previously incorrectly called ZLine, which is something else) is broken. Do not enable it.

Many other things may also be broken due to ambiguity in the specification of client-hub supports negotiation.

Release 04/09/2008

0.3.20 / 0.4.6 are released, fixing several bugs in 0.3.19 and older versions.

There are also some minor improvements. Detailed changelog.

Update 30/08/2008

Some other bugs which hit OS X users hard were fixed, but there still appear to be some problems.

An issue causing Qt 4.3 to crash was fixed.

In addition, large amounts of dclib code was made more readable and now does far less pointer casting.

Update 24/08/2008

It appears I spoke too soon:

The next version will be released soon.

Update 23/08/2008

0.3.19 appears to be a good release except it fails to compile on Mac OS X - fix added to the compile page.

Changes since then:

Release 07/08/2008

0.3.19 and 0.4.5 are now available, and fix the minor bugs in the previous version. Support for the NMDC encryption system in StrongDC mentioned on the DC++ blog was added. Also you are now allowed more than one search window but you are only allowed to have one search running at a time.

The changelog is again very long but this time summarised.

Many needed changes to the downloading system are expected for the next release so any problems in 0.3.20svn may affect your incomplete downloads, download queue, or ability to download.

Update 28/07/2008

Bug in 0.3.18: On a hub that does not support the UserIP2 extension for assigning you your IP address, an incorrect connection request is sent (the port is added twice) and you will not be able to download. Workarounds:

The next version was due soon anyway.

Update 27/07/2008

More new features/fixes for dclib in svn:

Update 16/07/2008

No disastrous bug has been discovered yet in the 0.3.18 release (but nick tab completion was bugged in the Qt3 version). Significant changes since then:

Release 09/07/2008

Release 0.3.18 of dclib, 0.3.18 of Qt3 valknut and 0.4.4 of Qt4 valknut.

0.3.18 includes a fix for a critical bug introduced in 0.3.14. The bug may cause any data sent to you from a hub to be ignored / displayed as chat so anyone using 0.3.14 to 0.3.17 should switch to 0.3.13 or 0.3.18 immediately.

Also XML hublist handling was fixed / improved (hundreds of hubs will no longer be missing from the lists) and problems with zero or one byte files were fixed. Dclib uses the IP address that a hub sends it on a per-hub basis instead of changing the global setting, useful if you are in both LAN and internet hubs. Valknut allows you to adjust the order of the bookmark hubs, hide/show userlist columns and the tray icon without opening/closing things, and the behaviour of various column widths on resizing the window is improved.

There are now links above to two different versions, 0.3.13 and 0.3.18.

Update 08/07/2008

A copy/paste error in a dclib change made on 22/05/2008 (the ZLine re-write) means 0.3.14-0.3.17 are problematic, some data from the hub will not be handled correctly.

Also, (not new) problems with zero byte files, one byte files, and XML hublist parsing have been fixed.

Update 27/06/2008 - CStringList performance

Although CStringList can perform badly, it can also perform very well. More details.

The performance improvement from using an alternative class is much smaller than previously stated.

Release 21/06/2008

0.3.17 / 0.4.3 released. Fixes the problems with 0.3.16, has more performance improvements, and fixes 0B sharesize during the optional refresh on startup.

Available from the sourceforge file release system.

Update 18/06/2008

Changelog for upcoming 0.3.17

0.3.16 is disastrously broken, because the optimisations made to the CString class do not handle the case when the memory area assigned to one string overlaps that of another. So "s = s", "s = s.Data()+1", "s += s" and "s += s.Data()[3]" do not work. A similar problem was found in the CByteArray class, which I had not changed. Since these problems weren't spotted in testing, it's possible that nothing hit's these bugs. But the code is extremely unsafe.

If you are wondering what the optimisations are about, well, it turns out that dclib is horrifically inefficient. The problem comes from how dclib's CString class is used. Most likely, it was designed to be like Qt's QString class, which, because of data sharing, is efficient to pass around by value. But CString has no data sharing! The result: simply opening and closing valknut when you have 1600 hubs stored in the public hubs list results in about 1 million CStrings getting created and destroyed. This number has now been reduced to about 335,000 by optimising various class.

Release 15/06/2008

Release 0.3.16 of dclib, 0.3.16 of Qt3 valknut and 0.4.2 of Qt4 valknut.

0.3.15 crashed when empty nicks (in hub welcome public chat messages) were encountered, it only existed for a few hours.

Includes all the bug fixes, performance improvements, and new features listed below. Full changelog.

Update 14/06/2008

Dclib performance problems. I have just discovered than in the worst case scenario (removing the last item), CStringList, dclib's mapping class, can be 200 or more about 10 times slower than QHash, QDict or std::map. Qt4 valknut uses QHash in a gui class for part of the userlist, but Qt3 uses CStringList. Qt3 valknut will get re-written to use QDict and dclib will get re-written to use std::map for the userlist classes, before the 0.3.15 release.

After 0.3.15, work on new features will be postponed while dclib get's re-written to use the standard C++ library (or merged into valknut, less likely), and some of the "core" dclib classes will be removed. Valknut will be changed to use Qt classes instead of dclib classes whenever possible.

I am not motivated to fix/improve dclib's CList / CStringList classes, they can just be removed.

Update 12/06/2008

There are some unfortunate problems with 0.3.14 / 0.4.0. Sadly this list just keeps getting longer.

0.3.15 / 0.4.1 will be released soon which will fix these issues, and also has these significant improvements/fixes:

Update later on 29/05/2008

Due to an error in the tarball generation process, some auxillary files in the original 0.3.14 tarballs were out of date.

This caused installation to fail on non-Linux systems.

Fixed tarballs versioned 0.3.14a / 0.4.0a have been released.

The source code was unchanged and the program will identify itself as 0.3.14 / 0.4.0 in the about dialog.

Update 29/05/2008

Release 0.3.14 of dclib, 0.3.14 of Qt3 valknut and 0.4.0 of Qt4 valknut.

Long changelog or summarised news.

The Qt3 and Qt4 versions have the same features. They cannot both be installed to the same --prefix, specifiy a different folder for one.

Update 15/03/2008

Released 0.3.13 of dclib and valknut. Changelog.

The changelog is very small, the only new feature added is the ability to disable the new text encoding system introduced in 0.3.11.

Update 22/12/2007

About 0.3.12

Although some problems were reported, other people have found this release to be working fine, including me.

I have not been able to determine the cause of the problems experienced by some people.

So 0.3.12 is probably OK to use, with the following caveats:

Update 07/12/2007

Dclib and Valknut 0.3.12 released. Changelog.

Dclib now supports compressed uploads, UserIP2 (getting IP address automatically from the hub) and ZLine (compressed hub to client communication) extensions. Also numerous, often encoding related, bugfixes. Upgrading from 0.3.11 is recommended.

08/12/2007 Serious problems have been reported with 0.3.12, please stick with 0.3.11 while these are investigated.

Update 14/10/2007

Dclib and Valknut 0.3.11 released. Technical changelog, or easier to read news.

Main features are the new text encoding system, XML hublist support, and improvements to the filelist browser.

Update 23/09/2007

Well, it's been a while and no new release, but the project is not dead!

Work has continued in the subversion repository, and now includes re-done text encoding support.

Please help test and report your findings to the forum.

For instructions to getting dclib and valknut from subversion, see here.

Update 28/06/2007

Dclib and Valknut 0.3.10 released. Changelog.

Changes include another new naming scheme for downloaded filelists, and valknut will rename all of your filelists to the new naming system when first run. Also numerous bug fixes, upgrading from 0.3.9 is strongly recommended.

Update 11/05/2007

Added a user contributed binary package section: contrib.

Please note that I cannot test these packages, so if you have problems or can suggest improvements, email me and I'll try and contact the packager.

We need a packager for Ubuntu (or a new maintainer for the Debian packages). Can anyone help? If so, email me (address at bottom of page).

Update 06/05/2007

Dclib and Valknut 0.3.9 released. Changelog.

Note 1: this version will need to rehash your entire share, to generate and store TTH leaves. This will create a large file in the .dc folder, similar to DC++'s HashData.dat.

If you're planning to re-arrange your share, do it before upgrading to 0.3.9.

Note 2: this version changes the filenames for stored filelists. Either just delete the contents of .dc/filelist/ , or run rename-filelists.sh (which requires dclib-b64enc.cpp to be compiled) from the scripts directory.

Update 26/02/2007

Updated compiling instructions, various work continues on valknut in the sourceforge subversion repository.

Update 19/01/2007

Valknut 0.3.8.1 released to correct an error in the 0.3.8 tarball, minimal other changes. No new dclib release.

Update 19/12/2006

RPM packages for openSUSE, Fedora and Mandriva made by the openSUSE automated build system have been made available by one kind valknut user. If you use one of these distributions, you can try installing these instead of compiling the source yourself.

Update 12/12/2006

Release of dclib and valknut 0.3.8 on sourceforge!

Source tarballs and SRPMS (hardly anyone used the latter) are no longer available from dcs.warwick.ac.uk, please download from the sourceforge project.

Also note the dclib 0.3.8 is the same as the 20061113 release, and valknut 0.3.8 is the same as the 20061202b release, there is no point upgrading if you are already running these versions.

Here are most of the changes for dclib and valknut 0.3.8

Update 30/10/2006

Fixed a nasty bug where multi downloads didn't work at all.

Update 17/10/2006

The latest version of the ADCGet patch has been included in the latest tarballs, dated 20061017.

Update 14/10/2006

The TTH finding bug is now fixed!

Update 12/10/2006

The ADCGet patch is still a work in progress, the latest version is v12, released on 15/10/2006 at 17:00 BST

Unfortunately, the work has revealed a serious bug in dclib which causes searches for TTHs to not return a result, even though a file with matching TTH is displayed in the filelist (and hence the file cannot be uploaded by TTHF).

Update 08/10/2006

I have developed a patch for dclib that allows compatibility with DC++ >= 0.696

The patch is available here. To apply the patch, extract dclib-0.3.7-20061005ejs.tar.bz2, cd into the dclib-0.3.7-20061005ejs directory, then do

"patch -p1 < /path/to/dclib-0.3.7-use-and-support-adcget-v12.patch" .