New
stxxl-1.4.0
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).