⚠ __This is a problematic decision__ It temporarily **breaks compatibility with 32bit** until this issue is resolved. == Explanation == Lumiera relies on a mix of the Standard library and Lib-Boost for calculation of hash values. Before C++11, the Standard did not support and hashtable implementation; meanwhile, we got several hash based containers in the STL and a framework for hashes, which unfortunately is incomplete and cumbersome to use. The C++ Committee has spend endless discussions and was not able to settle on a convincing solution without major drawbacks regarding one aspect or the other. This situation is problematic, since Lumiera relies heavily on the technique of building stable systematic identifiers based on chained hash values. It is thus essential to use a strong, reliable and portable hash function. But unfortunately... * the standard-fallback solution is known to be weak. * Lib-Boost automatically uses stronger implementations for 64bit systems * this implies that Hash-Values **are non-portable** As the Lumiera project currently has no developer time to expend on such a difficult and deep topic of fundamental research, today I decided to go down the path of least resistance and **effectively abandon any system that can not compile and use the 64bit `hash_combine` implementation. This changeset extracts code from Lib-Boost 1.67 and adds a static assertion to **break compilation** on non-64bit-platforms (whatever this means)
8.1 MiB
8.1 MiB
| The file is too large to be shown. |