STXXL v1.3.0 Release Notes
Release Date: 2015-06-15 // almost 9 years ago-
🔖 Version 1.3.0 (12 August 2010)
- 🆕 New file types
- fileperblock_syscall/fileperblock_mmap/fileperblock_boostfd/fileperblock_wincall:
👉 Use a separate file for each block, which is accessed by means of the
underlying file type. The "filename" given is used as a prefix of the
block file names. The advantage of these file types is that unused
disk space is freed earlier on the file system level. - wbtl_file: Do library-based write-combining (good for writing small blocks onto SSDs)
- fileperblock_syscall/fileperblock_mmap/fileperblock_boostfd/fileperblock_wincall:
- I/O subsystem
- separate the disk number of a file (which queue to put requests in)
from the fact that blocks for this file are allocated via the block
manager (disk number -1 otherwise). - separate wait time counting for read and write I/Os
- wait times can be logged to a separate log file
(compile with -DSTXXL_WAIT_LOG_ENABLED and set STXXLWAITLOGFILE in the environment)
- separate the disk number of a file (which queue to put requests in)
- Parallel PQ
- priority_queue now supports parallelized operations utilizing the libstdc++ parallel mode
- Other new functionality
- file requests can now be canceled (success not guaranteed), completion handlers are called anyway.
- log file locations are now configurable by the environment variables
STXXLLOGFILE and STXXLERRLOGFILE - single queue I/O scheduling
- reverse_iterator added to containers types vector, deque and map
- autogrow files (specified in .stxxl by a size of 0), will be deleted on normal program termination
- add infrastructure to build multiple binaries with different CXXFLAGS from a single source
- overwriting deleted memfile regions with uninitialized data is now optional
(STXXL_CLEAR_FREE_MEMFILE_MEM) - read_write_pool that combines prefetch_pool with write_pool and ensures cache coherency
- add a replaceable exit handler implementation, can be overwritten e.g. for library inclusion
- 🛠 Many, many bug fixes, in particular concerning
- priority queue
- optimal prefetch schedule
- possible race condition while creating singleton instances
- random_shuffle()
- 👍 Platform Support
- add GCC 4.4 (parallel mode features not working in GCC 4.3 can now be used)
- add GCC 4.5
- initial support for GCC 4.6
- add ICPC 11.x
- add Boost 1.42
- add FreeBSD
- drop Solaris
- 🆕 New benchmarks
- io/benchmark_disks: more command line paramaters for finer testing granularity
- measure hard-disk and flash-disk combined performance and
determine best block size pairs (io/benchmark_disk_and_flash) - benchmark using regular STXXL configuration (benchmark_configured_disks)
- Possibly breaking changes
- API name changes
vector::touch -> vector::block_externally_updated - Template parameter changes
⚙ stream::sorted_runs, trigger_entry, trigger_entry_cmp, trigger_entry_iterator - Priority of write changes
- Other name changes (considered internal)
typed_block<>::has_filler -> !typed_block<>::has_only_data
file::delete_region -> file::discard
vector::alloc_strategy -> vector::alloc_strategy_type - stxxl::sort(..., M) and stxxl::stream::sort(..., M) now adhere to to the memory limit M
more strictly and throw errors instead of overallocating - Execute completion handler before notifying waiters, so far after.
- API name changes
- 🗄 Deprecated methods:
- stxxl::stats::reset(), stxxl::stats::_reset_io_wait_time():
👉 use stxxl::stats_data instead to store snapshots of the counters and compute differences
- stxxl::stats::reset(), stxxl::stats::_reset_io_wait_time():
- Under-the-hood improvements
- I/O layer cleanup
- aligned_alloc
- Doxy now also lists undocumented members
- stop requiring STXXL_ROOT to be a hard coded absolute path set in make.settings.local,
0️⃣ a default of CURDIR works fine - document #defines in defines.h
- switch on/off file types with STXXL_HAVE_xxx_FILE (to avoid platform compatibility problems)
- 🆕 New file types