STXXL v1.4.0 Release Notes

Release Date: 2015-06-15 // over 6 years ago
  • ๐Ÿ”– Version 1.4.0 (12 December 2013)

    • Reorganized Directory Hierarchy
      • separating old component based directories into lib/ (libstxxl source
        โœ… files), tests/ (for tests cases), examples/ (for tutorial and example code)
        and tools/ (for stxxl_tool and more benchmarks).
    • ๐Ÿ‘ท CMake build system for cross-platform compilation
      • replaced adhoc Makefiles with CMake build system
      • CMake scripts can also output MSVC project files and more.
      • all component tests must register with CMake's test system -> run make test
      • generates pkg-config and CMake's project config files
    • ๐Ÿ“š Greatly Improved Doxygen Documentation
      • integrated old LaTeX tutorial
      • newly written tutorials for almost all STXXL containers and algorithms
      • embedded design documentation from Roman Dementiev's PhD thesis
      • new compilation instructions for CMake build system
    • ๐Ÿ‘Œ Improved .stxxl Config Options for File I/O Implementations
      • looking for .stxxl in more places than just the current directory (see the
        ๐Ÿ“„ docs for which places exactly).
      • parse file size with SI and IEC units, like "10GiB" in disk= config lines.
      • parse additional file I/O implementation options.
      • support for "unlink_on_open" (keep file descriptor but unlink file) and
        "delete_at_exit" options.
      • support for "direct=off/try/on" to turn off O_DIRECT for tmpfs and similar.
      • the default open mode is now direct=try -> prints a warning if O_DIRECT is
        unavailable on the system.
    • .stxxl Config Options Represented as disk_config Class
      • all disk= config lines are parsed into disk_config objects.
      • allow API calls to configure disks via stxxl::config::add_disk()
      • delay config file load till config::initialize() is called by block_manager
    • ๐Ÿ“œ Command line parser stxxl::cmdline_parser
      • stand-alone command line parser with ability to parse SI and IEC units for
        "bytes sizes".
      • automatically output nicely formatted help for all options and flags.
      • using the cmdline_parser for all stxxl_tool subtools.
    • Created stxxl_tool from multiple small tools and benchmarks
      • stxxl_tool is a collection of subtools, previous scattered around in the
        directory hierarchy.
      • goal is to have one tool installed in binary distribution together with
        libstxxl library and includes.
      • primary tool for standardized platform speed tests.
      • provide good command line help on these subtools via cmdline_parser.
    • โž• Adding skew3 as "real-world" STXXL application to examples subdirectory.
      • enhanced integrated stxxl::tuple construction for this application.
    • ๐Ÿง Enable use of raw block devices on Linux
      • these do provide more stable I/O throughput than even XFS.
      • disable growing of these devices
    • ๐Ÿ”ง Most platform configuration is now done by CMake and saved into the
      <stxxl/bits/config.h> header file
    • โœจ Enhanced stxxl::block_manager to count maximum, current and total number of
      bytes allocated in external memory.
    • Support Visual Studio 2012 and 2013 without Boost by using std::thread
      • VS 2012 and 2013 support STL threads, mutexes, condition_variables and
        more, which are basically modeled after the Boost libraries. Thus we can
        simply uses these included libraries instead of Boost.
      • Fixed bad runtime deadlock bug occurring when joining std::threads after
        main() exits. The bug persists in VS 2012 and 2013.
    • Implementing counting_ptr reference counted objects
      • used like boost::intrusive_ptr with a base class.
      • reimplementing request_ptr using just counting_ptr.
      • (optionally) use atomic operations for thread-safe reference counting
      • applying counting_ptr to stream::sorted_runs to avoid extra copying
    • ๐Ÿ†• New STXXL container "stxxl::sequence"
      • basically a deque container without random access to blocks.
      • efficient {push/pop}_{front/back} at both ends.
      • access to block sequence via stream and reverse_stream constructions
    • ๐Ÿ†• New STXXL container "stxxl::sorter"
      • combination of stream::runs_creator and stream::runs_merger into a
        convenient sorting container.
    • Added vector_bufreader and vector_bufwriter to overlapping I/O and
      computation when accessing a stxxl::vector in scanning mode.
      • documented problems of scanning in a vector
      • C++11 range loop access support to stxxl::vector via vector_bufreader.
    • โž• Added uint40 and uint48 types for integers with five and six bytes.
    • โž• Adding STXXL_CHECK macros to always check outcomes in tests.
    • Renaming mng/mng.{h,cpp} -> mng/block_manager.{h,cpp}.
    • Reworking version.h
      • add integer version like 10400 for 1.4.0
      • add get_version_string() for longer version string with features
      • check_library_version() for mismatch between headers and libraries
    • Reworking error_handling.h to throw much more useful exceptions with
      errno information and more.
    • Various file renames (which are only possible at major version changes).
    • ๐Ÿ›  Fixing bug in shrinking vector with vector::resize(n,true).