2009-07-24 20:41:56
You can grab the 0.7.0 release from the download page.
- Convert to multiprocessing worker slave (huge performance)
- Vast memory improvement (esp. for large lists)
- Large scale refactor of lots of code
- Better code documentation
- Better site documentation
- Partially validating configuration code
- Partial test framework (to be added to as bugs arise)
- Added configurable update triggers
- Added
never_discard()to keep certain items indefinitely. - Added SIGUSR2 signal to output debug backtrace.
- Added state_change_hook
- Added
canto-inspect, a simple wrapper for examining feed internals - Added no-content stub for unfetchable feeds to avoid trying to update broken URLS repeatedly.
- Added
add_infoextra function for adding content to the reader - new_hook now enforced by canto-fetch
- Ignore keep settings lower than the number of items in a feed
- tags variably now implicitly set to sane default
- "reader" keybind now doesn't set item read (coupled with "just_read" for default)
- Filters and Sorts now all subclass Filter and Sort class
- Accept
conf.pyas well asconffor config name. - Fix double enforcement of rates (client more responsive to fetch updates)
- Fix blank titles
- Fix runhere.sh killing c-f
Performance
Whew. 5 months of work secreted away in the experimental branch has finally come to fruition. The upside of the new code is that performance has been increased significantly. Not only is it employing a brand-spanking-new process based multi-threading model (sounds pretty impressive, eh?), it's also been changed to partially update the display where 0.6.x did all of the processing before display so it feels a lot quicker even on slow machines. These changes are particularly effective in making the interface more responsive when filtering and updating large lists.
Memory
The individual memory usage of Canto has been lowered significantly. Unfortunately, because the performance gains were achieved through black mag-... multi-processing, the overhead of running two full blown Python interpreters chokes out any improvement. The end baseline is a little higher, but it should scale much better for large lists.
Documentation
The old documentation has been stripped to the core and rewritten to be much more comprehensive. I feel like one of the primary problems with Canto 0.6.x was that a lot of great functionality was too hidden. This has hopefully been rectified.
Compatibility
There may be compatibility issues if your current (0.6.x) config uses advanced features. This is why the first number in Canto's version is zero =). I've written a short section on upgrading from 0.6.x. It may be incomplete, but will be expanded as issues arise. The fortunate part is that the disk format hasn't changed from 0.6.x so your current feed information shouldn't be lost even if you have trouble with the new configuration.
As I mention in that section, if you have trouble feel free to contact me or any of the kind volunteers in the IRC channel or the mailing list. I would be glad to help you port your config.
Downsides
The only downside with upgrading to the new Canto is that, as of today, I only know three people that are currently running it (including myself). I've fixed all of the bugs that we have detected and I am satisfied enough to put it out. However, there are going to be bugs and there are going to be quirks that need improvement. There are dark corners that three people aren't going to stumble upon in daily usage.
So. IF YOU FIND A BUG. REPORT IT. If something behaves unexpectedly, let me know. I anticipate putting out a bugfix release that can correct these quickly, but I can't fix what I don't know about.
A Final Word
I'd like to thank everyone in the #canto IRC channel for hanging out. In
particular, matiasag and evaryont for being my guinea pigs and helping me
iron out a bunch of bugs.
Have fun!