I've decided instead to release a minimum viable product for v0.7.0 and
get some feedback from the community, and most importantly some
motivation as well to be able to keep working on magnetico as it
currently feels like a Sisyphean where the development seem to never
going to end...
v0.6.0, overall, tries to make magnetico more stable rather than
introducing new features.
## magneticod
* Removed better_bencode internal fork (but we are still using it so no
loss at performance). This has caused some issues for some users and
this release should solve the issue (e.g. #98).
* General cleanup, performance improvements, minor bug fixes...
* Most notably among all, we improved our still-primitive congestion
control support for BSD-based OSes, including OS X.
## magneticow
* There are no changes in magneticow, but version number is bumped to
stay in-sync with magneticod.
Phew, what an effort it was to ship magnetico out this time!
CHANGELOG
=========
magneticod
----------
* Thanks to @richardkiss' heoric effort, magneticod now is ported to Python's
asyncio (and uses uvloop for further performance improvements).
CPU usage is reduced by 60%, and many older bugs are eliminated: #3, #55, #61
* Switched to better-bencode from bencoder.pyx for performance reasons. CPU
utilization dropped by half.
magneticow
----------
* magneticow is finally became _fast_! Database indexes are created to speed-up
file-list page (i.e. torrent info) and statistics.
Thanks to everyone who were involved in contributing to this release!
Special thanks to @ad-m who has been nagging me day and night to make me
take informed decision, I appreciate that.
Changes are below.
magneticod:
* Performance improvements
* Unregistering WRITE event when possible
* Using files instead of memory for temporary SQLite
objects
* Stability improvements
* Limit metadata size to prevent crashes due to
malicious or malformed answers.
* Flushing metadata buffer while exiting gracefully
magneticow:
* Stability improvements
* Homepage crash due to count functionality when the
database is empty, is fixed.
* Statistics page added, although very slow!
Previously magenticow calculated 30-days period as
literally 30 days (30 * 24 * 60 * 60 seconds) from NOW,
which was counter-intuitive for the user as it did not
correspond to whole days. Now that is fixed.
magneticod:
* Stalled DisposablePeers are shut down after 120 seconds (fixes#47 and #38)
* Improved performance, thanks to @ngosang, @ad-m, and all other contributors (fixes#48)
* Default logging level is now set to INFO (since many users would freak out after seeing "peer failed" messages...)
magneticow:
* Search speed improved A LOT, like "A L O T"! (fixes#8)
(for the curious, the problem was that magneticow initialised database *every* *single* *time* a request is made because
"the global application context" (`flask.g`) didn't work for some reason I don't know. Now it's blazing fast!
* A bit of logging added to assist the user. This is especially important as magneticow now takes a bit of time to initialize itself
(as reasonably expected) and will not be able to handle any requests until it's complete.
* A faster but possibly less accurate (and not-guaranteed behaviour dependent) calculation of the number of torrents.
* Thousands separator for the torrent count in the homepage.
## Changes
### mangeticod
* Cython-based bencoder.pyx is used instead of our own pure Python solution.
* `--node-addr` commandline argument added.
* TCP QUICKACK is automatically enabled (instead of by default) so that magneticod can work on macOS as well.
* Database index added for `info_hash` column of `torrents` table.
### magneticow
* Some small performance improvements for search.