This is a bugfix release to address a few reported issues and also a few
issues that were discovered via my own testing.
* Add a helper method which ensures all data is flushed to disk
* Added additional error handling to prevent malformed DHT messages
crashing the library
* Fixed issue when zeroing unused bits for torrents with an exact
multiple of 32 pieces
* Fixed issue where data could be written to the wrong file if a file
with the same name existed in multiple torrents
* Fixed the handling of torrents where the last file(s) are of zero
length
* Fixed regression with global download rate limiting
* Fixed a performance regression with the new piece picking pipeline
which resulted in lots of CPU cycles being used up on peers which
have not sent an unchoke message
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.