| Home | Libraries | People | FAQ | More

## Release Notes

### Boost 1.70 Release

- Removed support for already deprecated GCC < 4.3 and MSVC < 9.0 (Visual 2008) compilers.
- Default allocator parameter changed form `new_allocator<T>` to `void` to reduce symbol lenghts.
- Fixed bugs:
  - GitHub #96: "Workaround: Intel compilers do not offer CTAD yet".
  - GitHub #97: "buffer overflow in boost::container::flat_map on FreeBSD".
  - GitHub #98: "flat_map: insert_or_assign does not work with hint".
  - GitHub #100: "Compile error on Green Hills: container_detail::flat_tree has no member insert".
  - GitHub #103: "Fix deallocating never-allocated storage in vector.merge()".
  - GitHub #104: "Fix -Wmissing-noreturn clang warnings".
  - GitHub #105: "Fix gcc -Wdeprecated-copy".

### Boost 1.69 Release

- Deprecated GCC < 4.3 and MSVC < 9.0 (Visual 2008) compilers.
- Implemented C++20 `contains()` for associative containers as specified in P0458R2: Checking for Existence of an Element in Associative Containers.
- Fixed serious bug in heterogeneous lookup functions (is_transparent was broken).
- Fixed bugs:
  - GitHub #77: "warning: 'sbrk' is deprecated".
  - GitHub #79: "Mark small_vector move operations noexcept".
  - GitHub #80: "flat_map deduction guides are ambiguous".
  - GitHub #81: "Vector with custom allocator does not support value types with operator&".
  - GitHub #82: "Function definition in header file".
  - GitHub #83: "Iterator zero incrementing leads to assert on empty vector".
  - GitHub #84: "Allow vector to be assigned to itself".
  - GitHub #85: "container: misc-typos".
  - GitHub #86: "Add missing warning re-enabling include".
  - GitHub #89: "UBSAN failures detected in preflight CI PR".
  - GitHub #90: "Build fails on clang-5 with libstdc++7-dev (C++17 issue)".
  - GitHub #93: "vector::erase memory leak".

### Boost 1.68 Release

- Improved correctness of `adaptive_pool` and many parameters are now compile-time constants instead of runtime constants.
- Implemented C++14's heterogeneous lookup functions for `[multi]map/[multi]set/flat_[multi]map/flat_[multi]set`.
- Added GitHub #71: "Constructor Template Auto Deduction guides ".
- Fixed bugs:
  - Trac #13533: "Boost vector resize causes assert(false)".
  - GitHub #73: "triviality of pair".
  - GitHub #74: "vector assignment not using memcpy".
  - GitHub #75: "flat_set: Heap overflow".
  - GitHub #76: "flat_set: undefined behaviour on empty range".
  - Fixed race condition bug in `unsynchronized_pool_resource` found by Arthur O'Dowyer in his blog post <memory_resource> for libc++
- Implemented proposed resolution for "LWG 3120 Unclear behavior of monotonic_buffer_resource::release()". After `release()` the original buffer is recovered for the next allocation.

### Boost 1.67 Release

- vector can now have options, using `vector_options`. The growth factor and the stored size type can be specified.
- Improved range insertion in flat_[multimap/set] containers overall complexity is reduced to O(NlogN).
- Fixed bugs:
  - GitHub #61: "Compile problems on Android ndk r16 beta 1".
  - GitHub #64: "Fix splice for slist".
  - GitHub #65: "`pmr::monotonic_buffer_resource::allocate()` can return a pointer to freed memory after `release()` is called".
  - Trac #13500: "Memory leak when using erase on string vectors".

### Boost 1.66 Release

- flat_[multimap/set] can now work as container adaptors, as proposed in P0429R1. The allocator argument is checked for size() and empty() members. If so, the argument is interpreted as the required underlying container. This means that static_vector, stable_vector and small_vector can be used now with flat associative containers.
- Fixed bugs:
  - GitHub #54: "no sbrk() in VxWorks, configure dlmalloc to use only mmap".
  - GitHub #58: "Comparing strings does not compile in gcc 7+ in C++17 mode".
  - GitHub #59: "basic_string::npos is missing its definition".

### Boost 1.65 Release

- Implemented `extract_sequence`, `adopt_sequence` functions for flat_[multi]map/set associative containers.
- Fixed bugs:
  - GitHub #48: "Replace deprecated/removed C++98 binders".
  - GitHub #49: "Remove useless allocator copy in map".
  - GitHub #50: "Fixed bug Trac #13038".
  - GitHub #51: "Fix integer rollover that triggers clang ubsan when U is unsigned".

### Boost 1.64 Release

- Fixed bugs:
  - Trac #11333: "boost::basic_string_ref should interop with boost::container::basic_string".
  - Trac #12749: "container::pmr::polymorphic_allocator compilation error".
  - Trac #12915: "Buffer overflow in boost::container::vector (affects flat_set)".
  - GitHub #45: "emplace_back must return reference to back(), not to *end()".
  - GitHub #46: "Fix use of propagate_on_container_swap".

### Boost 1.63 Release

- Fixed bugs:
  - Trac #12534: "flat_map fails to compile if included after type_traits is instantiated under gcc".
  - Trac #12577: "Null reference in pair.hpp triggers runtime warning with -fsanitize=undefined".
  - GitHub #40: Fix parameter types in copy_move_algo.hpp: iterator_traits::difference_type -> allocator_traits::size_type.
  - GitHub #41: Avoid -Wunreachable-code in do_allocate().

### Boost 1.62 Release

- Fixed bugs:
  - Trac #9481: "Minor comment typo in Boost.Container".
  - Trac #9689: "Add piecewise_construct to boost::container".
  - Trac #11170: "Doc slip for index_of".
  - Trac #11802: "Incorrect ordering after using insert() with ordered_range_t on a flat_multiset with a non-default sort order".
  - Trac #12117: "flat_set constructor with ordered_unique_range".
  - Trac #12177: "vector::priv_merge uses unqualified uintptr_t".
  - Trac #12183: "GCC 6.1 thinks boost::container::string violates strict aliasing".
  - Trac #12256: "set<std::pair<int,int>>::insert cause compilation error in debug configuration in Visual Studio 2012".
  - Trac #12273: "static_vector max_size() and capacity() should be constant expressions". Added constant `static_vector<>::static_capacity` to use the configured capacity in constant expressions.
  - Trac #12286: "PMR flat_map from Boost Container does not compile".
  - Trac #12296: "{deque,string} combine for a memory leak".
  - Trac #12319: "flat_set` should be nothrow move constructible".
- Revised noexcept expressions of default and move constructors in all containers.
- Implemented C++17's `insert_or_assign`/`try_emplace` for `map` and `flat_map`.
- Implemented C++17's Splicing Maps and Sets (Revision 5) for `map`, `multimap`, `set`, `multiset`.
- Implemented C++17's P0084R2 Emplace Return Type in `deque`, `vector`, `stable_vector`, `small_vector`, `static_vector`, `list` and `slist`.

### Boost 1.61 Release

- `boost::container::small_vector` supports more constructors and assignments.
- Fixed bugs:
  - Trac #11820: "compiler error when using operator[ of map"].
  - Trac #11856: "pool_resource.cpp error: declaration changes meaning".
  - Trac #11866: "small_vector does not have range constructor".
  - Trac #11867: "small_vector should have constructor and assignment operator taking other small_vector".
  - Trac #11912: "flat_map use of vector::priv_forward_range_insert_expand_backwards may cause move with same source".
  - Trac #11957: "static_vector::max_size() is higher than the capacity".
  - Trac #12014: "boost::container::set can not insert const (ref) range".
  - GitHub #33: Make sure std::string constructor is available.

### Boost 1.60 Release

- Implemented Polymorphic Memory Resources.
- Add more BOOST_ASSERT checks to test preconditions in some operations (like `pop_back`, `pop_front`, `back`, `front`, etc.)
- Added C++11 `back`/`front` operations to `basic_string`.
- Fixed bugs:
  - Trac #11627: "small_vector<T,n>::swap() appears to be broken".
  - Trac #11628: "small_vector<int,n> iterates over elements in destructor".
  - Trac #11697: "Wrong initialization order in tuple copy-constructor".
  - Trac #11698: "Missing return statement in static_storage_allocator".
  - GitHub #29: Doc fixes for flap_map complexity requirements.
  - GitHub #31: DL_SIZE_IMPL also dereference addr.

### Boost 1.59 Release

- GitHub #26: Fix bug in stable_vector::capacity(). Thanks to timsong-cpp/Arindam Mukerjee.
- GitHub #27: fix stable_vector's index_of's doxygen comment. Thanks to kariya-mitsuru.
- Trac #11380: "Container library std forward declarations incorrect in std_fwd.hpp on libc++ with gcc".
- Trac #11388: "boost::container::list::emplace_back broken on Visual Studio 2010".
- Trac #11339: "VC12 LNK2005 error with boost::container::adaptive_pool".

### Boost 1.58 Release

- Experimental `small_vector` container.
- Massive dependency reorganization. Now Boost.Container depends on very basic utilities like Boost.Core and Boost.Intrusive. Preprocessed code size have decreased considerably and compilation times have improved.
- Added `nth` and `index_of` functions to containers with random-access iterators (except `basic_string`).
- Added C++17's `allocator_traits<Allocator>::is_always_equal`.
- Updated containers to implement new constructors as specified in 2210. Missing allocator-extended constructor for allocator-aware containers.
- Fixed bugs:
  - Trac #9931: "flat_map::insert(ordered_unique_range_t...) fails with move_iterators" (reopened).
  - Trac #11076: "Unqualified calls to memmove/memcpy in container/detail/copy_move_algo.hpp".
  - Trac #10790 ("long long errors from container").
  - Trac #10808 ("compare equal operator of vector is broken").
  - Trac #10930 ("container std_fwd.hpp neglects custom std namespaces").
  - Trac #11139 ("boost::container::vector<std::shared_ptr<const T>...>::const_iterator allows changing dereferenced elements").
- Source Breaking: `scoped_allocator_adaptor`'s `propagate_on_container_copy_assignment`, `propagate_on_container_move_assignment` and `propagate_on_container_swap` are no longer `::boost::integral_constant<bool, true/false>` types. The dependency reorganization needed to break with those classes to avoid MPL dependencies, and interoperability with `std::integral_constant` was not guaranteed. Code assumming `boost::true_type/boost::false_type` on this will not compile. As a workaround, use the guaranteed internal `::value` constant: `::boost::integral_constant<bool, scoped_allocator_adaptor<Allocator>::propagate_on_container_move_assignment::value>`.

### Boost 1.57 Release

- Added support for `initializer_list`. Contributed by Robert Matusewicz.
- Fixed double destruction bugs in vector and backward expansion capable allocators.
- Fixed bugs:
  - Trac #10263 ("AIX 6.1 bug with sched_yield() function out of scope").
  - GitHub #16: Fix iterators of incomplete type containers. Thanks to Mikael Persson.

### Boost 1.56 Release

- Added DlMalloc-based Extended Allocators.
- Improved configurability of tree-based ordered associative containers. AVL, Scapegoat and Splay trees are now available to implement `set`, `multiset`, `map` and `multimap`.
- Fixed bugs:
  - #9338: "VS2005 compiler errors in swap() definition after including container/memory_util.hpp".
  - #9637: "Boost.Container vector::resize() performance issue".
  - #9648: "string construction optimization - char_traits::copy could be used ...".
  - #9801: "I can no longer create and iterator_range from a stable_vector".
  - #9915: "Documentation issues regarding vector constructors and resize methods - value/default initialization".
  - #9916: "Allocator propagation incorrect in the assignment operator of most".
  - #9931: "flat_map::insert(ordered_unique_range_t...) fails with move_iterators".
  - #9955: "Using memcpy with overlapped buffers in vector".

### Boost 1.55 Release

- Implemented SCARY iterators.
- Fixed bugs #8269, #8473, #8892, #9009, #9064, #9092, #9108, #9166.
- Added `default initialization` insertion functions to vector-like containers with new overloads taking `default_init_t` as an argument instead of `const value_type &`.

### Boost 1.54 Release

- Added experimental `static_vector` class, based on Andrew Hundt's and Adam Wulkiewicz's high performance `varray` class.
- Speed improvements in `vector` constructors/copy/move/swap, dispatching to memcpy when possible.
- Support for `BOOST_NO_EXCEPTIONS` #7227.
- Fixed bugs #7921, #7969, #8118, #8294, #8553, #8724.

### Boost 1.53 Release

- Fixed bug #7650.
- Improved `vector`'s insertion performance.
- Changed again experimental multiallocation interface for better performance (still experimental).
- Added no exception support for those willing to disable exceptions in their compilers.
- Fixed GCC -Wshadow warnings.
- Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.

### Boost 1.52 Release

- Improved `stable_vector`'s template code bloat and type safety.
- Changed typedefs and reordered functions of sequence containers to improve doxygen documentation.
- Fixed bugs #6615, #7139, #7215, #7232, #7269, #7439.
- Implemented LWG Issue #149 (range insertion now returns an iterator) & cleaned up insertion code in most containers
- Corrected aliasing errors.

### Boost 1.51 Release

- Fixed bugs #6763, #6803, #7114, #7103. #7123,

### Boost 1.50 Release

- Added Scoped Allocator Model support.
- Fixed bugs #6606, #6533, #6536, #6566, #6575,

### Boost 1.49 Release

- Fixed bugs #6540, #6499, #6336, #6335, #6287, #6205, #4383.
- Added `allocator_traits` support for both C++11 and C++03 compilers through an internal `allocator_traits` clone.

### Boost 1.48 Release

- First release. Container code from Boost.Interprocess was deleted and redirected to Boost.Container via using directives.