Skip to main content

Threaded storage in Aggregator

Posted in

Storage operations in Aggregator were always single-threaded and performed in the main GUI thread. Particularly, feed updates were also performed in the main thread, including fetching already-existent items from the database, looking for modified ones, updating modified items and inserting new ones. That resulted in a terrible overall performance during feed updates — one could tell when Aggregator decides to update its feeds just by feeling how sluggish and slow LeechCraft interface suddenly becomes for a dozen of seconds.

That's in the past now. Yesterday all that feed updating machinery was moved to a separate thread, and only parsing the downloaded feeds is done in the main GUI thread now, but I doubt that it is really worth moving that into a separate thread as well — XML parsing is fast as hell and is hardly the performance hotspot.

The threaded architecture allows moving arbitrary operations into the storage thread as long it makes sense from the UI point of view. For example, marking whole channels as read or unread was also moved into that separate thread, but it hardly makes sense to fetch items of the currently selected channel to that thread — user would wait for this operation to complete anyway, and it's fast enough for user to not start doing other stuff.

Threaded storage is already tested with SQLite and PostgreSQL on Linux and generally seems to work. It should work with any PostgreSQL/MySQL installation and with most modern SQLite installations. Though, if SQLite was compiled without threading support, Aggregator would misbehave, likely resulting in segfaults. In this case, file a bug to your distro's SQLite maintainers. And, of course, the usual warning: threaded storage is still quite experimental and not thoroughly tested, so bugs may happen.

This change only applies to the master branch: it won't be included in the upcoming 0.5 release.

LeechCraft 0.4.97 is released

Posted in

LeechCraft 0.4.97 "Shadow Walker" is released!

In this (purely bugfix) release:

  • Aggregator: updated the list of feeds.
  • Azoth: fast change status button offline by default.
  • Azoth: added perr.svg to Likey iconset.
  • Azoth: fixed drawing groups heading.
  • Azoth AdiumStyles: detect outgoing messages in MUCs.
  • Azoth ChatHistory: select proper history item.
  • Azoth Xoox: fixed Ad-Hoc commands.
  • Azoth plugins: more plugin icons.
  • BitTorrent: optimized updating pieces model.
  • BitTorrent: optimized calculating interesting pieces.
  • Core: correctly handle arguments from local socket. The name of LeechCraft executable isn't considered an argument anymore.
  • CSTP: fixed handling redirections for internal tasks. More working feeds in Aggregator now!
  • EiskaltDC++: fixed building with Boost-1.48 and later.
  • Poshuku OB: sync fixes.
  • Poshuku OB RIL: fixed uploading empty bookmarks.

Source tarball is available. Packages for various OSes and distros would be available shortly.

LeechCraft 0.4.96 is released

Posted in

LeechCraft 0.4.96 "Far Beyond The Days Of Grace" is released!

This is mostly a bugfix release. The only non-bugfix thing is a new status icon theme Likey made by Like-all. Make sure to check it out in Azoth settings!

Among the fixed bugs are the following ones:

  • #511: Failure to readd the accounts once they are deleted in Poshuku OnlineBookmarks.
  • Fixed build of SecMan SecureStorage.
  • Fixed handling of media players in Azoth Xtazy that were started after LeechCraft had been started.
  • Azoth AdiumStyles: support styles using tags other than div for marking message insertion places.
  • Fixed handling of /me in Azoth AdiumStyles.
  • Members-moderators are now able to kick participants in Azoth Xoox.
  • Fixed Drag-n-Drop of a contact on itself in Azoth Metacontacts.
  • Authorization issues were fixed in Azoth.
  • Self PEP events are also handling in Azoth Xoox now.

The tarball is available here, and packages for supported OSes and distros will be available shortly.

LeechCraft 0.4.95 is released

Posted in

LeechCraft milestone 0.4.95 "Bet It All on Black" is released.

This is the last milestone before the 0.5.0 containing new features. Further milestones (0.4.96-0.4.99) would bring only bugfixes, if any.

The development for post-0.5.0 times continues in the master branch, while things for the 0.5.0 release are getting stabilized in the 0.5.0 branch. Beware when you'd checkout sources next time :)

So, let me list some major features and improvements since the 0.4.90 release:

  • Support for XEP-0055: Jabber Search in Azoth Xoox.
  • Reworked Poshuku OnlineBookmarks: it's almost rewritten from scratch. Particularly, it now supports its own plugins, and exact bookmark services are implemented as plugins. Currently supported services are Read It Later and Del.icio.us.
  • Implemented Azoth OTRoid for supporting Off-The-Record messaging system in Azoth.
  • Aggregator now queues updates of feeds instead of updating them all at once: no more lags on update!
  • Added KnowHow plugin for displaying tips of the days on startup.
  • AdvancedNotifications now supports enabling/disabling rules and single shot rules.
  • Poshuku now supports enabling WebGL for corresponding QtWebKit versions. And it really works!
  • Poshuku migrated to QGraphicsView-based web view, resulting in a bit increased performance, especially with effects-rich CSS3-(ab)using web sites.
  • Azoth and Azoth Xoox now support inviting to MUCs.
  • Azoth now supports some operations via drag-n-drop, like moving contacts between groups, sending files to contacts and uniting contacts into metacontacts.
  • Considerably improved Azoth AdiumStyles: added support for style variants and lots of compatibility improvements.
  • Added the "Group send" feature to Azoth.
  • Poshuku hover boxPoshuku hover boxPoshuku: display links on hover in a nice box on the viewport instead of status bar (see the screenshot on the right).
  • Azoth now has buttons to install more different icons/themes in settings.
  • Added periodical updates feature to LackMan.
  • Added Poshuku Pogooglue plugin for instantly searching selected text in Google.
  • Added Gajim style to Azoth StandardStyles.
  • Added context menu for nicknames in MUCs in Azoth.
  • Azoth now can optionally append a message to the chat view whenever participant ends the conversation.
  • It is possible now to disable sending "conversation ended" chat participant state events in Azoth.
  • Azoth Acetamide now supports SSL connections.
  • LeechCraft now opens URLs in external applications if those URLs couldn't be handled by LeechCraft plugins.
  • Azoth Xoox can now handle xmpp:...?message links.
  • Lots of fixes in Azoth, Azoth Xoox and other plugins.
  • Lots of fixes for Poshuku OnlineBookmarks.
  • Optimized timers in LeechCraft, so that it, for example, on my machine it causes CPU wake ups 13-17 times per second instead of 50-60.

Moreover, our libvlc-based media player was renamed from Potorchu to Laure and got a huge portion of code and care, thanks Ignotus! Seems like this media player is already usable a bit, though it didn't get into this milestone. But it surely will be included in 0.6.0!

And here are all the digests corresponding to this milestone for those curious ones: #13, #14, #15, #16, #17, #18 and #19.

Packages for various Ubuntu versions, for openSUSE, Fedora and ebuilds for Gentoo would be available soon. Please note that the address of Ubuntu PPA has changed, so consult the download instructions page to get up-to-date LeechCraft!

Development digest #19

Posted in

Only four days have passed since our last digest, but nevertheless we are publishing a new one, since today is... Well, read the next post for that :)

So, in these four days we managed to do the following:

  • Tought Azoth Xoox to handle xmpp:...?message links.
  • Top used status is shown on Fast Change Status button in Azoth now.
  • Optimized timers in LeechCraft, so that it, for example, on my machine it causes CPU wake ups 13-17 times per second instead of 50-60.
  • NPAPI plugins are disabled now in Poshuku since that fancy QGraphicsView stuff cannot work with them anymore.
  • Fixed segfault when deleting bookmarks in Poshuku.
  • Fixed build of EiskaltDC++ with CMake 2.8.6 and later.
  • Added kludges for Qt 4.8 in Poshuku OnlineBookmarks Read It Later.
Syndicate content