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)
    • 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)
    • 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.
    • 🗄 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
    • 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)