February 10, 2012 2 Comments
As a result of a 9 month long development, we’re glad to introduce a new stable version of DC++ released to the public a few weeks ago. This time the development mainly focused to add new useful GUI elements as well as revamp some exitsing ones. Further improvement has been made on the automatic connectivity setup so from now it is equally efficient for the everyday user and for expert people. The changelog for version 0.790 counts exactly 60 different changes with many improvements and bug fixes. Version 0.791 is a package update only it contains the same code as 0.790 marks it as a stable release. DC++ 0.79x patches a currently undisclosed security vulnerability, too.
Let’s see some areas with important changes in detail:
First of all, the new release adds one brand new frame and removes two old ones. Don’t worry, nothing’s lost, it’s only some rationalization in the funcions. There is a future plan to merge distributed functions in DC++ as much as possible and you can consider this as a first step on the way. From now Favorite users frame becomes Users frame, shows all users and it is equipped with powerful filtering capabilities. Those filters allow you to display favorite or waiting users only, so the separate frames used for manage them become redundant.
The last major release showed a big overhaul on the searching capability of the file list windows, now there’s more: the file list status bar buttons moved to the toolbar, and instead the progress of file list searches are shown in the status bar. Two useful things were also added as searches within file lists continue from the beginning after reaching the end while the window manager saves/restores the current directory position of the file lists – in other words when a file list window is restored you’ll be taken back to exactly where you’ve been last time.
If you open up the Settings window you’ll see a nice visual overhaul with new icons in the category view and perfectly aligned placement of the boxes. And it’s not only been made nicer looking because of a call for better looking dialogs, there’s more: the window is resizable as you wish and at last the dialog remembers the last used pane after closal. Yeah, the hassle of endless navigation to the same pane is gone in case you want to play with certain group of settings. And there are even new settings panes for brand new functions as follows:
The former Colors and Sounds pane under the Apperarence settings are divided to Styles and Notifications and both halves are greatly improved. As like before, you can still define the global visual style of the application and the file transfers (the former is now applied even more accuratley throughout the program) but you can do it in a much cleaner interface with an immediate preview of how the defined styles will look like. As a brand new function you’re able to define visual styles (various colors, font face and styles) for displaying certain nicks in the user list of the hub window. You can create user matching definitions that determine certain groups of users so you are able to set their appearence in the user list accordingly.
User matching itself is also a new function debuting in the 0.79x series of DC++. It has its own new configuration pane in the Settings where you can define an unlimited number of rules determining certain groups of online users by filtering them out by their properties. The user matching function is added to the core (dclib); and not only because of the obivious reason that other clients can also benefit from it this way. Currently it is used only for stylize the user list, but there can be several other future ideas that can use this function as their base, like automatic operations on group of users that match certain criteria, etc…
Another good news is that DC++ 0.791 introduces two evident functions that p2p software can’t miss nowadays. Bandwidth limiting has already been added a few versions before but its configuration was rather complicated as the user always had to open the Settings dialog in order to modify the limiting values. The most obivious and quickest possible solution has been created, a menu interface that is avaliable from the tray menu or by clicking to the limiting value indicators in the status bar. This quick value change interface is well known and you might familiar with it from other p2p applications.
By upgrading to 0.791 you’ll also get a totally revamped notification system as well. It’s possible to configure balloon popup and/or sound notifications for different events. Another long time missing function that others implemented long ago…
And at last but not least: list filters are greatly improved throughout the interface, even added a new one to for filtering search results. Just try them out to see how easy and effective it has become… you’re even able to use regular expressions to filter out your results!
Connectivity features are improved a lot in the last versions of DC++ and in fact it would worth to dedicate a separate post about the insights of the Automatic Connectivity Setup (formerly known as “Automatic Connection Detection”) which is one of the largest usability improvements in DC++ over the recent years. You can learn the basics of the feature here (you’ve probably seen it working in the real world anyway).
0.791 brings some more fine tuning to the connectivity setup: there was a complete reorgainization both under the hood and in the settings GUI resulting simpler code and a total separation of basic (automatic) and advanced (manual) connectivity setup. While the former provides a foulproof automatic setup with zero configuration for the majority of users, the latter retains the flexibility of manual set up of each and every option.
This reorganization of the storage of the connectivity settings allowed to add an interesting new feature that makes connection between the automatic and the manual way of setup. Think of the situaton where the automatic connectivity setup fails because it is unable to detect one of the required parameters, while ot still detects many of them correctly. This is when the new “Edit Detected Settings” function comes to play: it overwrites the manual settings with the automatically detected ones thus it allows you correct the wrongly detected setting(s) manually. So when the automatic detection fails it may still worth to copy the detected set of settings and use them as a hint for the manual setup.
Another improvement is that in a multi-network enviroment you can clearly set up what gateway should be used to create the automatic port mappings. It means that from now the port mapper will always use the network interface that all other connections bound to. For easier troubleshooting of MiniUPnP (which is the mapper used most times) the name of the device the mapper has bound to will be displayed as a part of the log message shown after a successful mapping operation.
The last but far not the least important improvement in the connectivity area is the introduction of NAT-PMP support for port mappings as an alternative to UPnP. This quickly emerging protocol is known from its simplicity and there’s a growing number NAT-PMP supporting consumer router devices in the market as well. However, you must consider NAT-PMP support as beta at least for the time being.
More news from under the hood
Improvements in DC Library is always a nice thing since usually the large part of the DC community can benefit from them. It’s even better when old features are reintroduced, features that are existed before but have been temporarily disabled for a while for various reasons.
One of these features is the finished downloads log which has been missing since the introduction of segmented downloads. Altough aligning this function to log only the completed downloads instead of the individual finished segments sounds trivial in theory, actually it needed a complete rethink and replacement of the code. It wasn’t on the top priority list, either (hence the late fix) but certainly a welcomed feature for a few people.
Automatically generated crash logs is the other feature to be reintroduced and surely is the more important one. It has been missing since the development of DC++ switched to an open source compiler that has no native capability of providing crash logs. These logs, when reported back to the developers, are really useful and speed up the fixing of serious bugs. libdwarf has been added to generate human readable crash logs from the call stack using the debug symbols database (.pdb file, shipped in the release package again).
If you encounter a crash you can open the last crash log from within DC++ using the “Open crash log” item from the File menu (or find the log file itself in the Local Appdata folder in case of a startup crash – it’s called “Crashlog.txt”). To help the development you’re now able (and encouraged) to report any crash logs to the official DC++ bug tracker.
As you might read about the feature before, DC++ switched to binary GeoIP databases and added the IPv6 one as well. Moreover the country format shown beside the IP adresses can be highly customized (see the help for all the possible ways). DC++ 0.791 handles GeoIP database updates automatically from within the program so cases when wrong country information displayed for users should be greatly reduced as well as you can forget the hassle of manual updating of the database files from the GeoIP servers.
Stability, performance and security
Here’s a short list of most important improvements in these areas:
- You’ll experience a really faster startup when many tabs to be restored
- File lists are loaded in a separate thread (no GUI freeze with large lists anymore)
- A possible crash fixed when searching within too big file lists
- Fixed a possible crash on removal of parital lists from the queue (details will be published later)
- Fixed a problem that could cause freezes and unwanted behaviour on long time running
- DC++ is explicitly shows that it supports and encourages the operating system to enable DEP and ASLR when executed (the latter is available for Vista and later)
That’s it for today, enjoy and prepare for a new release, it should arrive soon!