1 2[/ Copyright 2005-2008 Daniel James. 3 / Distributed under the Boost Software License, Version 1.0. (See accompanying 4 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] 5 6[template ticket[number]'''<ulink url="https://svn.boost.org/trac/boost/ticket/'''[number]'''">'''#[number]'''</ulink>'''] 7 8[section:changes Change Log] 9 10[h2 Boost 1.33.0] 11 12* Initial Release 13 14[h2 Boost 1.33.1] 15 16* Fixed the points example, as pointed out by 沈慧峰. 17 18[h2 Boost 1.34.0] 19 20* Use declarations for standard classes, so that the library 21 doesn't need to include all of their headers 22* Deprecated the `<boost/functional/hash/*.hpp>` headers. Now a single header, 23 <[headerref boost/functional/hash.hpp]> is used. 24* Add support for the `BOOST_HASH_NO_EXTENSIONS` macro, which 25 disables the extensions to TR1. 26 27* Minor improvements to the hash functions for floating point numbers. 28* Update the portable example to hopefully be more generally portable. 29 30[h2 Boost 1.34.1] 31 32* [@http://svn.boost.org/trac/boost/ticket/952 Ticket 952]: 33 Suppress incorrect 64-bit warning on Visual C++. 34 35[h2 Boost 1.35.0] 36 37* Support for `long long`, `std::complex`. 38* Improved algorithm for hashing floating point numbers: 39 * Improved portablity, as described by Daniel Krügler in 40 [@http://lists.boost.org/boost-users/2005/08/13418.php 41 a post to the boost users list]. 42 * Fits more information into each combine loop, which can reduce the 43 the number of times combine is called and hopefully give a better 44 quality hash function. 45 * Improved the algorithm for hashing floating point numbers. 46 * On Cygwin use a binary hash function for floating point numbers, as 47 Cygwin doesn't have decent floating point functions for `long double`. 48 * Never uses `fpclass` which doesn't support `long double`. 49 * [@http://svn.boost.org/trac/boost/ticket/1064 Ticket 1064]: 50 Removed unnecessary use of `errno`. 51* Explicitly overload for more built in types. 52* Minor improvements to the documentation. 53* A few bug and warning fixes: 54 * [@http://svn.boost.org/trac/boost/ticket/1509 Ticket 1509]: 55 Suppress another Visual C++ warning. 56 * Some workarounds for the Sun compilers. 57 58[h2 Boost 1.36.0] 59 60* Stop using OpenBSD's dodgy `std::numeric_limits`. 61* Using the boost typedefs for `long long` and `unsigned long long`. 62* Move the extensions into their own header. 63 64[h2 Boost 1.37.0] 65 66* [@http://svn.boost.org/trac/boost/ticket/2264 Ticket 2264]: 67 In Visual C++, always use C99 float functions for `long double` and `float` as 68 the C++ overloads aren't always availables. 69 70[h2 Boost 1.38.0] 71 72* Changed the warnings in the deprecated headers from 1.34.0 to errors. These 73 will be removed in a future version of Boost. 74* Moved detail headers out of `boost/container_hash/detail`, since they are part of 75 functional/hash, not container_hash. `boost/container_hash/detail/container_fwd.hpp` 76 has been moved to `boost/detail/container_fwd.hpp` as it's used outside of 77 this library, the others have been moved to `boost/functional/hash/detail`. 78 79[h2 Boost 1.39.0] 80 81* Move the hash_fwd.hpp implementation into the hash subdirectory, leaving a 82 forwarding header in the old location. You should still use the old location, 83 the new location is mainly for implementation and possible modularization. 84* [@https://svn.boost.org/trac/boost/ticket/2412 Ticket 2412]: Removed deprecated 85 headers. 86* [@https://svn.boost.org/trac/boost/ticket/2957 Ticket 2957]: Fix configuration 87 for vxworks. 88 89[h2 Boost 1.40.0] 90 91* Automatically configure the float functions using template metaprogramming 92 instead of trying to configure every possibility manually. 93* Workaround for when STLport doesn't support long double. 94 95[h2 Boost 1.42.0] 96 97* Reduce the number of warnings for Visual C++ warning level 4. 98* Some code formatting changes to fit lines into 80 characters. 99* Rename an internal namespace. 100 101[h2 Boost 1.43.0] 102 103* [@https://svn.boost.org/trac/boost/ticket/3866 Ticket 3866]: 104 Don't foward declare containers when using gcc's parallel library, 105 allow user to stop forward declaration by defining the 106 `BOOST_DETAIL_NO_CONTAINER_FWD` macro. 107* [@https://svn.boost.org/trac/boost/ticket/4038 Ticket 4038]: 108 Avoid hashing 0.5 and 0 to the same number. 109* Stop using deprecated `BOOST_HAS_*` macros. 110 111[h2 Boost 1.44.0] 112 113* Add option to prevent implicit conversions when calling `hash_value` by 114 defining `BOOST_HASH_NO_IMPLICIT_CASTS`. When using `boost::hash` 115 for a type that does not have `hash_value` declared but does have 116 an implicit conversion to a type that does, it would use that 117 implicit conversion to hash it. Which can sometimes go very wrong, 118 e.g. using a conversion to bool and only hashing to 2 possible 119 values. Since fixing this is a breaking change and was only 120 approached quite late in the release cycle with little discussion 121 it's opt-in for now. This, or something like it, will become the 122 default in a future version. 123 124[h2 Boost 1.46.0] 125 126* Avoid warning due with gcc's `-Wconversion` flag. 127 128[h2 Boost 1.50.0] 129 130* [@http://svn.boost.org/trac/boost/ticket/6771 Ticket 6771]: 131 Avoid gcc's `-Wfloat-equal` warning. 132* [@http://svn.boost.org/trac/boost/ticket/6806 Ticket 6806]: 133 Support `std::array` and `std::tuple` when available. 134* Add deprecation warning to the long deprecated 135 `boost/container_hash/detail/container_fwd.hpp`. 136 137[h2 Boost 1.51.0] 138 139* Support the standard smart pointers. 140* `hash_value` now implemented using SFINAE to avoid implicit casts to built 141 in types when calling it. 142* Updated to use the new config macros. 143 144[h2 Boost 1.52.0] 145 146* Restore `enum` support, which was accidentally removed in the last version. 147* New floating point hasher - will hash the binary representation on more 148 platforms, which should be faster. 149 150[h2 Boost 1.53.0] 151 152* Add support for `boost::int128_type` and `boost::uint128_type` where 153 available - currently only `__int128` and `unsigned __int128` on some 154 versions of gcc. 155* On platforms that are known to have the standard floating point functions, 156 don't use automatic detection - which can break if there are ambiguous 157 overloads. 158* Fix undefined behaviour when using the binary float hash (Thomas Heller). 159 160[h2 Boost 1.54.0] 161 162* [@https://svn.boost.org/trac/boost/ticket/7957 Ticket 7957]: 163 Fixed a typo. 164 165[h2 Boost 1.55.0] 166 167* Simplify a SFINAE check so that it will hopefully work on Sun 5.9 168 ([ticket 8822]). 169* Suppress Visual C++ infinite loop warning ([ticket 8568]). 170 171[h2 Boost 1.56.0] 172 173* Removed some Visual C++ 6 workarounds. 174* Ongoing work on improving `hash_combine`. This changes the combine function 175 which was previously defined in the reference documentation. 176 177[h2 Boost 1.58.0] 178 179* Fixed strict aliasing violation 180 ([@https://github.com/boostorg/container_hash/pull/3 GitHub #3]). 181 182[h2 Boost 1.63.0] 183 184* Fixed some warnings. 185* Only define hash for `std::wstring` when we know we have a `wchar_t`. 186 Otherwise there's a compile error as there's no overload for hashing 187 the characters in wide strings ([ticket 8552]). 188 189[h2 Boost 1.64.0] 190 191* Fix for recent versions of Visual C++ which have removed `std::unary_function` 192 and `std::binary_function` ([ticket 12353]). 193 194[h2 Boost 1.65.0] 195 196* Support for `char16_t`, `char32_t`, `u16string`, `u32string` 197 198[h2 Boost 1.66.0] 199 200* Avoid float comparison warning when using Clang - this workaround was 201 already in place for GCC, and was used when Clang pretends to be GCC, 202 but the warning was appearing when running Clang in other contexts. 203 204[h2 Boost 1.67.0] 205 206* Moved library into its own module, `container_hash`. 207* Moved headers for new module name, now at: 208 `<boost/container_hash/hash.hpp>`, 209 `<boost/container_hash/hash_fwd.hpp>`, 210 `<boost/container_hash/extensions.hpp>`. 211* Added forwarding headers to support the old headers locations. 212* Support `std::string_view`, `std::error_code`, `std::error_condition` 213 `std::optional`, `std::variant`, `std::monostate` where available. 214* Update include paths from other Boost libraries. 215* Manually write out tuple overloads, rather than using the 216 preprocessor to generate them. Should improve usability, due 217 to better error messages, and easier debugging. 218* Fix tutorial example ([ticket 11017]). 219* Quick fix for hashing `vector<bool>` when using libc++. Will try to introduce 220 a more general fix in the next release. 221 222[endsect] 223