1Changelog
2=========
3
40.26 (2021-09-02)
5-----------------
6
7Fix
8~~~
9
10- :cpp:class:`~mppp::real128` and :cpp:class:`~mppp::complex128`
11  are now correctly supported on PPC64, if ``__float128`` is available
12  (`#286 <https://github.com/bluescarni/mppp/pull/286>`__).
13
140.25 (2021-08-31)
15-----------------
16
17New
18~~~
19
20- Add functions to compute the number of digits necessary
21  for round-tripping for :cpp:class:`~mppp::real` and
22  :cpp:class:`~mppp::complex`
23  (`#280 <https://github.com/bluescarni/mppp/pull/280>`__).
24  Requires MPFR>=4.1.
25- Add new interactive notebooks for :cpp:class:`~mppp::real`
26  and :cpp:class:`~mppp::integer`
27  (`#280 <https://github.com/bluescarni/mppp/pull/280>`__).
28
29Fix
30~~~
31
32- Don't prepend ``::`` when invoking GMP/MPFR/MPC
33  macros. This fixes build failures observed on some
34  platforms
35  (`#283 <https://github.com/bluescarni/mppp/pull/283>`__,
36  `#282 <https://github.com/bluescarni/mppp/pull/282>`__).
37
380.24 (2021-06-26)
39-----------------
40
41New
42~~~
43
44- The mp++ conda packages are now available for 64-bit
45  ARM and PowerPC architectures.
46- :cpp:class:`~mppp::complex128` now respects the format
47  flags in output streams
48  (`#276 <https://github.com/bluescarni/mppp/pull/276>`__).
49- :cpp:class:`~mppp::complex` now respects the format
50  flags in output streams
51  (`#275 <https://github.com/bluescarni/mppp/pull/275>`__).
52- :cpp:class:`~mppp::real128` now respects the format
53  flags in output streams
54  (`#273 <https://github.com/bluescarni/mppp/pull/273>`__).
55- :cpp:class:`~mppp::real` now respects the format
56  flags in output streams
57  (`#272 <https://github.com/bluescarni/mppp/pull/272>`__).
58- Add polylogarithms for :cpp:class:`~mppp::real`
59  (`#271 <https://github.com/bluescarni/mppp/pull/271>`__).
60- Add the Lambert W functions :math:`W_0` and :math:`W_{-1}`
61  for :cpp:class:`~mppp::real`
62  (`#271 <https://github.com/bluescarni/mppp/pull/271>`__).
63- Interactive notebooks are now available in the documentation
64  (`#270 <https://github.com/bluescarni/mppp/pull/270>`__).
65
66Fix
67~~~
68
69- Workaround for a failing test with GCC in C++20 mode
70  (`#277 <https://github.com/bluescarni/mppp/pull/277>`__).
71- Workaround for a failing test on 64-bit ARM in release mode
72  (`#274 <https://github.com/bluescarni/mppp/pull/274>`__).
73
740.23 (2021-04-02)
75-----------------
76
77New
78~~~
79
80- Add a new ``fabs()`` overload for the computation of the
81  absolute value of a :cpp:class:`~mppp::real128`
82  (`#269 <https://github.com/bluescarni/mppp/pull/269>`__).
83
84Changes
85~~~~~~~
86
87- Remove the ``explicit`` attribute from several generic
88  constructors in the multiprecision classes
89  (`#269 <https://github.com/bluescarni/mppp/pull/269>`__).
90
91Fix
92~~~
93
94- Disable Boost's autolinking feature in the build system
95  (`#267 <https://github.com/bluescarni/mppp/pull/267>`__).
96
970.22 (2021-01-03)
98-----------------
99
100New
101~~~
102
103- Add a binary serialisation API for :cpp:class:`~mppp::real`
104  (`#263 <https://github.com/bluescarni/mppp/pull/263>`__).
105- Implement optional support for Boost.serialization for all
106  multiprecision classes
107  (`#262 <https://github.com/bluescarni/mppp/pull/262>`__).
108- Add a header file containing the forward declarations
109  of all the number classes
110  (`#261 <https://github.com/bluescarni/mppp/pull/261>`__).
111- Add a couple of new categorisation functions
112  for :cpp:class:`~mppp::real128`
113  (`#261 <https://github.com/bluescarni/mppp/pull/261>`__).
114- Make ``MPPP_FLOAT128_WITH_LONG_DOUBLE`` a public definition
115  (`#261 <https://github.com/bluescarni/mppp/pull/261>`__).
116
117Changes
118~~~~~~~
119
120- Change the sphinx theme for the documentation
121  (`#261 <https://github.com/bluescarni/mppp/pull/261>`__).
122- mp++ now requires CMake >= 3.8 when compiling from source
123  (`#261 <https://github.com/bluescarni/mppp/pull/261>`__).
124
125Fix
126~~~
127
128- Fix build with recent versions of ``clang-tidy``
129  (`#263 <https://github.com/bluescarni/mppp/pull/263>`__).
130- Various build system/docs fixes and enhancements
131  (`#263 <https://github.com/bluescarni/mppp/pull/263>`__,
132  `#261 <https://github.com/bluescarni/mppp/pull/261>`__).
133- Workaround for a compiler issue with older versions of Clang
134  (`#260 <https://github.com/bluescarni/mppp/pull/260>`__).
135
1360.21 (2020-06-17)
137-----------------
138
139New
140~~~
141
142- Implement additional special functions for :cpp:class:`~mppp::real`
143  (``log_base_ui()``)
144  (`#256 <https://github.com/bluescarni/mppp/pull/256>`__).
145- Finish exposing the functions from ``libquadmath``
146  for :cpp:class:`~mppp::real128`
147  (`#255 <https://github.com/bluescarni/mppp/pull/255>`__).
148- Expose more MPFR functions
149  for :cpp:class:`~mppp::real`
150  (`#255 <https://github.com/bluescarni/mppp/pull/255>`__,
151  `#254 <https://github.com/bluescarni/mppp/pull/254>`__).
152- Add a tutorial for :cpp:class:`~mppp::real`
153  (`#252 <https://github.com/bluescarni/mppp/pull/252>`__).
154- Expose all the constants provided by MPFR in the
155  :cpp:class:`~mppp::real` API
156  (`#252 <https://github.com/bluescarni/mppp/pull/252>`__).
157- Add the :cpp:class:`~mppp::integer` LCM primitives
158  (`#247 <https://github.com/bluescarni/mppp/pull/247>`__).
159- Implement additional special functions for :cpp:class:`~mppp::complex`
160  (inverse, reciprocal square root, n-th root, AGM)
161  (`#250 <https://github.com/bluescarni/mppp/pull/250>`__,
162  `#246 <https://github.com/bluescarni/mppp/pull/246>`__).
163- Implement the detection of finite and infinite values
164  for :cpp:class:`~mppp::complex`
165  (`#246 <https://github.com/bluescarni/mppp/pull/246>`__).
166
167Changes
168~~~~~~~
169
170- Overhaul the benchmark suite and update
171  the benchmark results
172  (`#248 <https://github.com/bluescarni/mppp/pull/248>`__).
173- **BREAKING**: the :cpp:class:`~mppp::complex`
174  ``cmp_abs()`` function has been renamed to
175  ``cmpabs()`` for consistency with
176  :cpp:class:`~mppp::real`
177  (`#246 <https://github.com/bluescarni/mppp/pull/246>`__).
178
179Fix
180~~~
181
182- Fix the return value of the :cpp:class:`~mppp::real`
183  ``tan_pi()`` and ``cot_pi()`` functions at the poles
184  (`#256 <https://github.com/bluescarni/mppp/pull/256>`__).
185- Implement a workaround for a build issue with Xcode
186  (`#251 <https://github.com/bluescarni/mppp/pull/251>`__).
187
1880.20 (2020-06-03)
189-----------------
190
191New
192~~~
193
194- mp++ now builds cleanly with ``clang-tidy``
195  (`#244 <https://github.com/bluescarni/mppp/pull/244>`__).
196- Implement additional three-way comparison functions
197  for :cpp:class:`~mppp::real`
198  (`#243 <https://github.com/bluescarni/mppp/pull/243>`__).
199- Add the :cpp:func:`~mppp::set_ui_2exp()` and :cpp:func:`~mppp::set_si_2exp()`
200  functions for :cpp:class:`~mppp::real`, and implement constructors
201  from an integral multiple of a power of 2
202  (`#242 <https://github.com/bluescarni/mppp/pull/242>`__).
203- The mp++ library can now be built with link-time
204  optimisations enabled
205  (`#240 <https://github.com/bluescarni/mppp/pull/240>`__).
206- Add Bessel functions of real order for
207  :cpp:class:`~mppp::real`
208  (`#238 <https://github.com/bluescarni/mppp/pull/238>`__).
209- Add a move constructor with custom precision
210  for :cpp:class:`~mppp::real`
211  (`#234 <https://github.com/bluescarni/mppp/pull/234>`__).
212- Add support for C++20's ``constinit``
213  (`#233 <https://github.com/bluescarni/mppp/pull/233>`__).
214- :cpp:class:`~mppp::real` can now interact with
215  ``std::complex``
216  (`#232 <https://github.com/bluescarni/mppp/pull/232>`__).
217- Add :cpp:class:`~mppp::complex`, a multiprecision
218  complex number class
219  (`#232 <https://github.com/bluescarni/mppp/pull/232>`__).
220- Improve the interoperability between mp++ classes
221  via additional assignment operators
222  (`#229 <https://github.com/bluescarni/mppp/pull/229>`__).
223- mp++ now works with the Intel compiler
224  (`#224 <https://github.com/bluescarni/mppp/pull/224>`__,
225  tested with ``icpc (ICC) 19.1.0.166``). This includes
226  also support for :cpp:class:`~mppp::real128` and
227  :cpp:class:`~mppp::complex128` (with
228  a couple of minor limitations).
229- The interoperability of :cpp:class:`~mppp::real128` with
230  ``long double`` has been improved: it is now supported
231  also on Clang (since version 7) and it does not require
232  mp++ to be configured with the ``MPPP_WITH_MPFR``
233  option any more
234  (`#222 <https://github.com/bluescarni/mppp/pull/222>`__).
235- :cpp:class:`~mppp::real128` can now interact with
236  ``std::complex``
237  (`#220 <https://github.com/bluescarni/mppp/pull/220>`__).
238- Add :cpp:class:`~mppp::complex128`, a quadruple-precision
239  complex number class
240  (`#220 <https://github.com/bluescarni/mppp/pull/220>`__).
241- mp++ now officially supports the ARM (``aarch64``)
242  and PowerPC (``ppc64le``) architectures, which have
243  been added to the continuous integration setup
244  (`#219 <https://github.com/bluescarni/mppp/pull/219>`__).
245
246Changes
247~~~~~~~
248
249- Enable all tests on MinGW
250  (`#237 <https://github.com/bluescarni/mppp/pull/237>`__).
251- Update Catch to the latest version, 2.12.1
252  (`#237 <https://github.com/bluescarni/mppp/pull/237>`__).
253- :cpp:class:`~mppp::real` move operations from
254  :cpp:type:`mpfr_t` have been disabled on MSVC
255  due to compiler issues
256  (`#236 <https://github.com/bluescarni/mppp/pull/236>`__).
257- Improve the implementation of :cpp:class:`~mppp::real`
258  binary operators/functions by using the MPFR primitives
259  more extensively and by handling mixed-precision computations
260  more rigorously when one of the operands in not
261  a :cpp:class:`~mppp::real`
262  (`#230 <https://github.com/bluescarni/mppp/pull/230>`__).
263- For consistency with C++20, mp++'s concepts now
264  use snake case notation. The concept hierarchy has also been
265  simplified and streamlined
266  (`#228 <https://github.com/bluescarni/mppp/pull/228>`__).
267- **BREAKING**: the global precision setting mechanism has been
268  removed from :cpp:class:`~mppp::real`. As a result,
269  the API and behaviour of the :cpp:class:`~mppp::real`
270  class have undergone a few backwards-incompatible changes
271  (`#227 <https://github.com/bluescarni/mppp/pull/227>`__).
272- The documentation is now using sphinx exclusively,
273  doxygen is not involved any more
274  (`#227 <https://github.com/bluescarni/mppp/pull/227>`__,
275  `#225 <https://github.com/bluescarni/mppp/pull/225>`__,
276  `#223 <https://github.com/bluescarni/mppp/pull/223>`__,
277  `#221 <https://github.com/bluescarni/mppp/pull/221>`__).
278- Improve the build system's compatibility with other projects
279  by namespacing variables and imported targets related to
280  mp++'s dependencies
281  (`#226 <https://github.com/bluescarni/mppp/pull/226>`__).
282- Various internal simplifications and improvements
283  to :cpp:class:`~mppp::real128`
284  (`#221 <https://github.com/bluescarni/mppp/pull/221>`__).
285
286Fix
287~~~
288
289- Implement a workaround for Clang 10 not allowing ``constexpr``
290  in-place arithmetics for :cpp:type:`__complex128`
291  (`#238 <https://github.com/bluescarni/mppp/pull/238>`__).
292- Fix a bug in the :cpp:class:`~mppp::real128` test suite
293  (`#224 <https://github.com/bluescarni/mppp/pull/224>`__).
294- Various doc fixes
295  (`#220 <https://github.com/bluescarni/mppp/pull/220>`__).
296- Fix a bug in the test suite in
297  release mode
298  (`#219 <https://github.com/bluescarni/mppp/pull/219>`__).
299
3000.19 (2020-02-29)
301-----------------
302
303New
304~~~
305
306- Implement :cpp:class:`~mppp::real` primitives for exact
307  multiplication/division by powers of 2
308  (`#216 <https://github.com/bluescarni/mppp/pull/216>`__).
309- mp++ can now optionally use `Arb <https://arblib.org/>`__
310  to provide various additional special functions for
311  :cpp:class:`~mppp::real`
312  (`#215 <https://github.com/bluescarni/mppp/pull/215>`__).
313- Implement squaring for :cpp:class:`~mppp::real`
314  (`#215 <https://github.com/bluescarni/mppp/pull/215>`__).
315- :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational`
316  can now interact with ``std::complex``
317  (`#214 <https://github.com/bluescarni/mppp/pull/214>`__).
318- mp++'s multiprecision classes now support pretty-printing in the
319  `xeus-cling notebook <https://github.com/jupyter-xeus/xeus-cling>`__
320  (`#213 <https://github.com/bluescarni/mppp/pull/213>`__).
321- Implement user-defined literals for :cpp:class:`~mppp::rational`,
322  :cpp:class:`~mppp::real128` and :cpp:class:`~mppp::real`
323  (`#213 <https://github.com/bluescarni/mppp/pull/213>`__).
324
325Changes
326~~~~~~~
327
328- The :cpp:class:`~mppp::real` dilogarithm functions now
329  return NaN if the argument is not less than 1.
330- Move more :cpp:class:`~mppp::real` functions from the
331  header into the compiled library
332  (`#216 <https://github.com/bluescarni/mppp/pull/216>`__).
333- The GCC quadmath library is now a private dependency
334  of the mp++ library
335  (`#215 <https://github.com/bluescarni/mppp/pull/215>`__).
336- The :cpp:class:`~mppp::real128` string representation
337  has been changed to use the ``g`` format specifier
338  (`#213 <https://github.com/bluescarni/mppp/pull/213>`__).
339
340Fix
341~~~
342
343- Fix a compilation warning with GCC 4.8
344  (`#216 <https://github.com/bluescarni/mppp/pull/216>`__).
345- Fix a couple of :cpp:class:`~mppp::real` functions
346  returning copies rather than references
347  (`#216 <https://github.com/bluescarni/mppp/pull/216>`__).
348- Various build system/doc fixes and improvements
349  (`#214 <https://github.com/bluescarni/mppp/pull/214>`__,
350  `#215 <https://github.com/bluescarni/mppp/pull/215>`__,
351  `#216 <https://github.com/bluescarni/mppp/pull/216>`__).
352- Fix compilation with older Clang versions in C++17 mode
353  (`#213 <https://github.com/bluescarni/mppp/pull/213>`__).
354
3550.18 (2020-02-14)
356-----------------
357
358New
359~~~
360
361- Add a :cpp:func:`mppp::real::is_valid()` member function
362  to check if a :cpp:class:`~mppp::real` was moved from
363  (`#211 <https://github.com/bluescarni/mppp/pull/211>`__).
364- Implement user-defined literals for :cpp:class:`~mppp::integer`
365  (`#209 <https://github.com/bluescarni/mppp/pull/209>`__).
366- Implement (modular) squaring primitives for :cpp:class:`~mppp::integer`
367  (`#205 <https://github.com/bluescarni/mppp/pull/205>`__).
368- Include mp++'s headers in the project files generated
369  for MSVC (`#199 <https://github.com/bluescarni/mppp/pull/199>`__).
370  Many thanks to `7ofNine <https://github.com/7ofNine>`__!
371
372Changes
373~~~~~~~
374
375- Update the internal copy of Catch to the latest version, 2.11.1
376  (`#210 <https://github.com/bluescarni/mppp/pull/210>`__).
377- mp++'s public headers do not include
378  the ``quadmath.h`` header any more. This change greatly
379  improves mp++'s compatibility with Clang when the
380  ``MPPP_WITH_QUADMATH`` option is active
381  (`#206 <https://github.com/bluescarni/mppp/pull/206>`__).
382- Continue moving code into the compiled library
383  (`#204 <https://github.com/bluescarni/mppp/pull/204>`__,
384  `#206 <https://github.com/bluescarni/mppp/pull/206>`__).
385- Enable the C++20 concept declaration syntax if GCC >= 9 is
386  being used
387  (`#203 <https://github.com/bluescarni/mppp/pull/203>`__).
388
389Fix
390~~~
391
392- Various build system and documentation improvements
393  (`#200 <https://github.com/bluescarni/mppp/pull/200>`__,
394  `#202 <https://github.com/bluescarni/mppp/pull/202>`__).
395
3960.17 (2019-09-13)
397-----------------
398
399New
400~~~
401
402- mp++'s concepts are now compatible with the C++20
403  concepts proposal (`#196 <https://github.com/bluescarni/mppp/pull/196>`__,
404  `#198 <https://github.com/bluescarni/mppp/pull/198>`__).
405  Many thanks to `7ofNine <https://github.com/7ofNine>`__!
406- Expose most of the missing special functions from the MPFR API
407  for :cpp:class:`~mppp::real`
408  (`#190 <https://github.com/bluescarni/mppp/pull/190>`__,
409  `#192 <https://github.com/bluescarni/mppp/pull/192>`__,
410  `#194 <https://github.com/bluescarni/mppp/pull/194>`__).
411
412Changes
413~~~~~~~
414
415- On MSVC, use the ``WIN32_LEAN_AND_MEAN`` definition
416  (`#198 <https://github.com/bluescarni/mppp/pull/198>`__).
417- Update the internal copy of Catch to the latest version, 2.9.2
418  (`#197 <https://github.com/bluescarni/mppp/pull/197>`__).
419- Drastically reduce the build time of the test suite by separately
420  compiling the Catch main function
421  (`#197 <https://github.com/bluescarni/mppp/pull/197>`__).
422
423Fix
424~~~
425
426- Workaround a constexpr issue involving :cpp:class:`~mppp::real128`
427  on GCC 9
428  (`#197 <https://github.com/bluescarni/mppp/pull/197>`__).
429- Fix C++17 builds with MSVC 2015
430  (`#191 <https://github.com/bluescarni/mppp/pull/191>`__).
431
4320.16 (2019-05-25)
433-----------------
434
435Fix
436~~~
437
438- Properly set the version numbers for the mp++ dynamic library
439  (`#187 <https://github.com/bluescarni/mppp/pull/187>`__).
440
4410.15 (2019-05-24)
442-----------------
443
444New
445~~~
446
447- Expose the hyperbolic functions from the MPFR API
448  for :cpp:class:`~mppp::real`
449  (`#184 <https://github.com/bluescarni/mppp/pull/184>`__).
450- Add the possibility of generating Unicode MSVC solutions
451  (`#183 <https://github.com/bluescarni/mppp/pull/183>`__).
452- Finish exposing all the trigonometric functions from the MPFR API
453  for :cpp:class:`~mppp::real`
454  (`#180 <https://github.com/bluescarni/mppp/pull/180>`__).
455- Add the possibility to build mp++ as a static library
456  (`#176 <https://github.com/bluescarni/mppp/pull/176>`__).
457- Add CircleCI to the continuous integration pipeline
458  (`#173 <https://github.com/bluescarni/mppp/pull/173>`__).
459- Implement the logarithm/exponential functions for :cpp:class:`~mppp::real`
460  (`#172 <https://github.com/bluescarni/mppp/pull/172>`__).
461
462Changes
463~~~~~~~
464
465- When compiled with MPFR version 4 or later, mp++ now ensures that
466  thread-local and global caches are freed separately at thread exit
467  and program shutdown
468  (`#182 <https://github.com/bluescarni/mppp/pull/182>`__).
469- Update the internal copy of Catch to the latest version, 2.7.2
470  (`#181 <https://github.com/bluescarni/mppp/pull/181>`__).
471- The MPFR cleanup function ``mpfr_free_cache()`` is now called
472  at the end of every thread which creates at least
473  one :cpp:class:`~mppp::real` object
474  (`#180 <https://github.com/bluescarni/mppp/pull/180>`__).
475- Implement a specialised version of the ``swap()`` primitive
476  for :cpp:class:`~mppp::integer` and
477  :cpp:class:`~mppp::rational` (`#174 <https://github.com/bluescarni/mppp/pull/174>`__).
478- Improve the implementation of the less than/greater than operators for
479  :cpp:class:`~mppp::integer`. Together with the ``swap()`` improvements,
480  this change leads to a ~9% decrease in runtime for the
481  ``integer1_sort_signed``
482  benchmark (`#174 <https://github.com/bluescarni/mppp/pull/174>`__).
483- Continue moving code from the headers into the compiled library (`#170 <https://github.com/bluescarni/mppp/pull/170>`__,
484  `#172 <https://github.com/bluescarni/mppp/pull/172>`__).
485
486Fix
487~~~
488
489- Fix two race conditions in the testing code
490  (`#181 <https://github.com/bluescarni/mppp/pull/181>`__).
491- The :cpp:class:`~mppp::zero_division_error` exception is now correctly
492  marked as visible
493  (`#180 <https://github.com/bluescarni/mppp/pull/180>`__).
494- Add a workaround for a ``clang-cl`` bug (`#179 <https://github.com/bluescarni/mppp/pull/179>`__).
495- Various build system and documentation improvements (`#172 <https://github.com/bluescarni/mppp/pull/172>`__).
496- Fix a warning when building mp++ with older MSVC versions (`#170 <https://github.com/bluescarni/mppp/pull/170>`__).
497
4980.14 (2019-04-11)
499-----------------
500
501New
502~~~
503
504- The :cpp:func:`~mppp::type_name()` function is now part of the public API
505  (`#169 <https://github.com/bluescarni/mppp/pull/169>`__).
506- :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational` now respect the format
507  flags in output streams (`#161 <https://github.com/bluescarni/mppp/pull/161>`__).
508
509Changes
510~~~~~~~
511
512- mp++ does not depend on the DbgHelp library on Windows any more
513  (`#169 <https://github.com/bluescarni/mppp/pull/169>`__).
514- **BREAKING**: mp++ has now a compiled component. In order to use mp++, you will now have to
515  both include the mp++ headers **and** link to the mp++ library
516  (`#169 <https://github.com/bluescarni/mppp/pull/169>`__).
517- Various improvements to the benchmarks (`#166 <https://github.com/bluescarni/mppp/pull/166>`__).
518- **BREAKING**: the input stream operators have been removed from all classes
519  (`#161 <https://github.com/bluescarni/mppp/pull/161>`__).
520
521Fix
522~~~
523
524- Fix an issue in the build system when compiling the unit tests in release mode with MSVC (`#164 <https://github.com/bluescarni/mppp/pull/164>`__).
525- Fixes for the demangler on OSX when 128-bit integers are involved (`#163 <https://github.com/bluescarni/mppp/pull/163>`__).
526- Fix a build issue on OSX when the compiler is not Xcode (`#161 <https://github.com/bluescarni/mppp/pull/161>`__).
527
5280.13 (2019-03-13)
529-----------------
530
531Changes
532~~~~~~~
533
534- Update copyright date (`#162 <https://github.com/bluescarni/mppp/pull/162>`__).
535- Add a tutorial for :cpp:class:`~mppp::real128` (`#160 <https://github.com/bluescarni/mppp/pull/160>`__).
536- Various build system improvements (`#159 <https://github.com/bluescarni/mppp/pull/159>`__).
537- Update the internal copy of Catch to the latest version, 2.5.0 (`#158 <https://github.com/bluescarni/mppp/pull/158>`__).
538
539Fix
540~~~
541
542- Fix a compilation error when using booleans as second arguments in the ``pow()`` and ``binomial()`` overloads of :cpp:class:`~mppp::integer`
543  (`#162 <https://github.com/bluescarni/mppp/pull/162>`__).
544- Work around a compilation error on MSVC when using C++17 (`#162 <https://github.com/bluescarni/mppp/pull/162>`__).
545- Various documentation fixes (`#160 <https://github.com/bluescarni/mppp/pull/160>`__).
546
5470.12 (2018-10-11)
548-----------------
549
550New
551~~~
552
553- Add a hash function for :cpp:class:`~mppp::real128` (`#157 <https://github.com/bluescarni/mppp/pull/157>`__).
554- Add all the root functions from the GMP API to the :cpp:class:`~mppp::integer` API
555  (`#156 <https://github.com/bluescarni/mppp/pull/156>`__).
556- Add all the root functions from the MPFR API to the :cpp:class:`~mppp::real` API
557  (`#154 <https://github.com/bluescarni/mppp/pull/154>`__).
558- Add a specialisation of ``std::numeric_limits`` for :cpp:class:`~mppp::real128`
559  (`#144 <https://github.com/bluescarni/mppp/pull/144>`__).
560
561Changes
562~~~~~~~
563
564- Initialising a :cpp:class:`~mppp::real` with an invalid :cpp:type:`~mppp::real_kind` enum value now raises an
565  exception, rather than initialising to NaN (`#153 <https://github.com/bluescarni/mppp/pull/153>`__).
566- Switch to the sphinx material design theme for the documentation (`#153 <https://github.com/bluescarni/mppp/pull/153>`__).
567- Update the internal copy of Catch to the latest version, 2.4.0 (`#152 <https://github.com/bluescarni/mppp/pull/152>`__).
568- Various improvements to the GCD implementation for :cpp:class:`~mppp::integer`
569  (`#150 <https://github.com/bluescarni/mppp/pull/150>`__).
570- The addition/subtraction operators of :cpp:class:`~mppp::integer` now use the low-level :cpp:func:`~mppp::add_ui()`,
571  :cpp:func:`~mppp::add_si()`, :cpp:func:`~mppp::sub_ui()` and :cpp:func:`~mppp::sub_si()` primitives when the other argument is a
572  C++ integral (`#147 <https://github.com/bluescarni/mppp/pull/147>`__).
573- Various documentation additions, improvements and fixes (`#146 <https://github.com/bluescarni/mppp/pull/146>`__,
574  `#148 <https://github.com/bluescarni/mppp/pull/148>`__, `#149 <https://github.com/bluescarni/mppp/pull/149>`__,
575  `#153 <https://github.com/bluescarni/mppp/pull/153>`__, `#155 <https://github.com/bluescarni/mppp/pull/155>`__).
576- **BREAKING**: replace the ``integer_nbits_init`` tag structure with the strongly-typed :cpp:type:`mppp::integer_bitcnt_t` enum
577  (`#145 <https://github.com/bluescarni/mppp/pull/145>`__).
578- Ensure that :cpp:class:`~mppp::real128` is trivially copyable (`#144 <https://github.com/bluescarni/mppp/pull/144>`__).
579
580Fix
581~~~
582
583- Fix various warnings issued by Clang 7 in the unit tests (`#157 <https://github.com/bluescarni/mppp/pull/157>`__).
584
5850.11 (2018-05-22)
586-----------------
587
588New
589~~~
590
591- Wrap more functions from the quadmath API in :cpp:class:`~mppp::real128` (`#140 <https://github.com/bluescarni/mppp/pull/140>`__).
592
593Changes
594~~~~~~~
595
596- The build system should now detect MPIR installations when looking for GMP (`#139 <https://github.com/bluescarni/mppp/pull/139>`__).
597- Update the internal copy of Catch to the latest version, 2.2.2 (`#137 <https://github.com/bluescarni/mppp/pull/137>`__).
598
599Fix
600~~~
601
602- Fix a couple of missing ``inline`` specifiers in the tests (`#143 <https://github.com/bluescarni/mppp/pull/143>`__).
603- Fix a missing ``noexcept`` in the move constructor of :cpp:class:`~mppp::real128` (`#138 <https://github.com/bluescarni/mppp/pull/138>`__).
604
6050.10 (2018-04-06)
606-----------------
607
608New
609~~~
610
611- Add a target in the build system to compile and run the benchmarks (`#135 <https://github.com/bluescarni/mppp/pull/135>`__).
612- Extend the :cpp:func:`~mppp::add_ui()` and :cpp:func:`~mppp::sub_ui()` functions to work on all unsigned
613  C++ integral types, and introduce corresponding :cpp:func:`~mppp::add_si()` and :cpp:func:`~mppp::sub_si()`
614  functions for signed C++ integral types (`#131 <https://github.com/bluescarni/mppp/pull/131>`__).
615- Initial version of the rational tutorial (`#130 <https://github.com/bluescarni/mppp/pull/130>`__).
616- The demangler is now aware of cv qualifiers and references (`#129 <https://github.com/bluescarni/mppp/pull/129>`__).
617
618Changes
619~~~~~~~
620
621- **BREAKING**: the :cpp:func:`~mppp::add_ui()` function now **requires** an unsigned integral as the third argument
622  (previously, the function could be invoked with a signed integral argument thanks to C++'s conversion rules).
623
624Fix
625~~~
626
627- Fix a test failure on FreeBSD (`#134 <https://github.com/bluescarni/mppp/pull/134>`__).
628- Various small documentation fixes (`#130 <https://github.com/bluescarni/mppp/pull/130>`__,
629  `#135 <https://github.com/bluescarni/mppp/pull/135>`__).
630- Fix demangling failures for 128-bit integers in OSX (`#128 <https://github.com/bluescarni/mppp/pull/128>`__).
631
6320.9 (2018-02-25)
633----------------
634
635New
636~~~
637
638- Add a couple of benchmarks against hardware integer types (`#124 <https://github.com/bluescarni/mppp/pull/124>`__).
639
640Changes
641~~~~~~~
642
643- The :cpp:concept:`mppp::string_type` concept is now satisfied by cv qualified types as well
644  (`#127 <https://github.com/bluescarni/mppp/pull/127>`__).
645
646- Add a leading ``mppp::`` to the names of mp++'s classes in the pybind11 custom type casters
647  (`#120 <https://github.com/bluescarni/mppp/pull/120>`__). This should be only a cosmetic change.
648
649- Update the internal copy of Catch to the latest version, 2.1.1 (`#120 <https://github.com/bluescarni/mppp/pull/120>`__).
650
651- Small tweaks/improvements to the build system and to the docs (`#118 <https://github.com/bluescarni/mppp/pull/118>`__,
652  `#120 <https://github.com/bluescarni/mppp/pull/120>`__, `#121 <https://github.com/bluescarni/mppp/pull/121>`__,
653  `#124 <https://github.com/bluescarni/mppp/pull/124>`__, `#126 <https://github.com/bluescarni/mppp/pull/126>`__).
654
655Fix
656~~~
657
658- Fix a potential bug in the :cpp:class:`~mppp::real` printing code (`#123 <https://github.com/bluescarni/mppp/pull/123>`__).
659
660- Fix a potential name shadowing issue in the pybind11 integration utilities (`#125 <https://github.com/bluescarni/mppp/pull/125>`__).
661
6620.8 (2018-01-26)
663----------------
664
665New
666~~~
667
668- Add a function to check if a :cpp:class:`~mppp::real` is equal to one
669  (`#117 <https://github.com/bluescarni/mppp/pull/117>`__).
670
671- The pybind11 integration utilities now automatically translate mp++ exceptions into appropriate
672  Python exceptions (`#115 <https://github.com/bluescarni/mppp/pull/115>`__).
673
674- Expose various internal type traits in the public API (`#114 <https://github.com/bluescarni/mppp/pull/114>`__).
675
676- Add an implementation of the binomial coefficient for rational top arguments
677  (`#113 <https://github.com/bluescarni/mppp/pull/113>`__).
678
679Changes
680~~~~~~~
681
682- When C++ concepts are enabled, various functions now use automatically-deduced return types
683  to simplify the implementation and improve the generated documentation
684  (`#114 <https://github.com/bluescarni/mppp/pull/114>`__).
685
686- In the CMake config-file package produced by the installation process, ensure
687  that the installed package version is considered compatible with any other version with the same
688  major version number (`#113 <https://github.com/bluescarni/mppp/pull/113>`__).
689
690Fix
691~~~
692
693- Fix a compilation error in the in-place operators of :cpp:class:`~mppp::real` when using concepts
694  (`#116 <https://github.com/bluescarni/mppp/pull/116>`__).
695
696- Fix a compilation error in the pybind11 utilities when mp++ is configured with quadmath support
697  but without MPFR (`#114 <https://github.com/bluescarni/mppp/pull/114>`__).
698
6990.7 (2018-01-11)
700----------------
701
702New
703~~~
704
705- Implement the initial version of the binary serialisation API (`#110 <https://github.com/bluescarni/mppp/pull/110>`__).
706
707- Add builds based on MSVC 2017 in Appveyor (`#110 <https://github.com/bluescarni/mppp/pull/110>`__).
708
709- Extend the ``mppp::CppInteroperable`` concept to include all C++ integral types
710  (`#104 <https://github.com/bluescarni/mppp/pull/104>`__).
711
712- Add left bit shift benchmarks for :cpp:class:`~mppp::integer` (`#103 <https://github.com/bluescarni/mppp/pull/103>`__).
713
714- Implement division without remainder (``tdiv_q()``) and exact division with positive divisor (``divexact_gcd()``)
715  for :cpp:class:`~mppp::integer` (`#103 <https://github.com/bluescarni/mppp/pull/103>`__).
716
717- Implement the ``trunc()`` and  ``integer_p()`` primitives for :cpp:class:`~mppp::real`
718  (`#102 <https://github.com/bluescarni/mppp/pull/102>`__).
719
720- Implement the :cpp:func:`~mppp::free_integer_caches()` function to manually free the caches used internally by
721  :cpp:class:`~mppp::integer` (`#98 <https://github.com/bluescarni/mppp/pull/98>`__).
722
723Changes
724~~~~~~~
725
726- Update copyright date (`#110 <https://github.com/bluescarni/mppp/pull/110>`__).
727
728- Various updates to the documentation and to the benchmarks (`#107 <https://github.com/bluescarni/mppp/pull/107>`__,
729  `#108 <https://github.com/bluescarni/mppp/pull/108>`__).
730
731- Add an internal demangling utility to improve the quality of the error messages (`#105 <https://github.com/bluescarni/mppp/pull/105>`__).
732
733- Various performance improvements for :cpp:class:`~mppp::integer` division, fused multiply-add, left bit shift,
734  addition and multiplication
735  (`#103 <https://github.com/bluescarni/mppp/pull/103>`__, `#106 <https://github.com/bluescarni/mppp/pull/106>`__,
736  `#108 <https://github.com/bluescarni/mppp/pull/108>`__).
737
738- Improve the detection of the availability of the ``thread_local`` keyword on recent Xcode versions
739  (`#99 <https://github.com/bluescarni/mppp/pull/99>`__).
740
7410.6 (2017-12-05)
742----------------
743
744New
745~~~
746
747- Implement additional ``get()`` conversion functions for :cpp:class:`~mppp::real128` (`#96 <https://github.com/bluescarni/mppp/pull/96>`__).
748
749- Implement the increment and decrement operators for :cpp:class:`~mppp::rational` (`#95 <https://github.com/bluescarni/mppp/pull/95>`__).
750
751- Implement support for ``__int128_t`` and ``__uint128_t`` (`#90 <https://github.com/bluescarni/mppp/pull/90>`__).
752
753- Implement the bitwise logic operators for :cpp:class:`~mppp::integer` (`#86 <https://github.com/bluescarni/mppp/pull/86>`__).
754
755- Initial implementation of the :ref:`pybind11 integration utilities <tutorial_pybind11>` (`#81 <https://github.com/bluescarni/mppp/pull/81>`__).
756
757- Implement the ``frexp()`` primitive for :cpp:class:`~mppp::real128` (`#81 <https://github.com/bluescarni/mppp/pull/81>`__).
758
759- Implement the ``get/set_z_2exp()`` primitives for :cpp:class:`~mppp::real` (`#77 <https://github.com/bluescarni/mppp/pull/77>`__).
760
761- Implement construction with preallocated storage for :cpp:class:`~mppp::integer` (`#74 <https://github.com/bluescarni/mppp/pull/74>`__).
762
763- Implement construction from an array of limbs for :cpp:class:`~mppp::integer` (`#73 <https://github.com/bluescarni/mppp/pull/73>`__).
764
765Changes
766~~~~~~~
767
768- Various additions to the tutorial (`#97 <https://github.com/bluescarni/mppp/pull/97>`__).
769
770- **BREAKING**: the imported target created by the installation process has been renamed from ``Mp++`` to ``mp++``
771  (`#94 <https://github.com/bluescarni/mppp/pull/94>`__).
772
773- Take advantage of ``std::gcd()`` on C++17 (`#93 <https://github.com/bluescarni/mppp/pull/93>`__).
774
775- Update the benchmark results for :cpp:class:`~mppp::integer` (`#91 <https://github.com/bluescarni/mppp/pull/91>`__).
776
777- Add division benchmarks for :cpp:class:`~mppp::integer` (`#91 <https://github.com/bluescarni/mppp/pull/91>`__).
778
779- A few performance tweaks for :cpp:class:`~mppp::integer` (`#91 <https://github.com/bluescarni/mppp/pull/91>`__).
780
781- Simplifications in the bit shifting primitives for :cpp:class:`~mppp::integer` (`#85 <https://github.com/bluescarni/mppp/pull/85>`__).
782
783- Split an :cpp:class:`~mppp::integer` test in two parts to curb memory usage during compilation (`#80 <https://github.com/bluescarni/mppp/pull/80>`__).
784
785- Use bit counting intrinsics in MSVC (`#79 <https://github.com/bluescarni/mppp/pull/79>`__).
786
787- Update the internal copy of Catch to the latest version, 2.0.1 (`#76 <https://github.com/bluescarni/mppp/pull/76>`__).
788
789- Improve the performance of generic assignment for :cpp:class:`~mppp::integer` (`#74 <https://github.com/bluescarni/mppp/pull/74>`__).
790
791- Improve construction from C++ integrals for :cpp:class:`~mppp::integer` (`#74 <https://github.com/bluescarni/mppp/pull/74>`__).
792
793Fix
794~~~
795
796- Fix :cpp:class:`~mppp::integer` warnings in release mode (`#97 <https://github.com/bluescarni/mppp/pull/97>`__).
797
798- Various internal cleanups in :cpp:class:`~mppp::integer` (`#80 <https://github.com/bluescarni/mppp/pull/80>`__,
799  `#85 <https://github.com/bluescarni/mppp/pull/85>`__, `#86 <https://github.com/bluescarni/mppp/pull/86>`__).
800
801- Small fixes regarding the use of GMP type aliases in :cpp:class:`~mppp::integer` (`#73 <https://github.com/bluescarni/mppp/pull/73>`__).
802
8030.5 (2017-11-07)
804----------------
805
806New
807~~~
808
809- Implement the :cpp:class:`~mppp::real` class (`#40 <https://github.com/bluescarni/mppp/pull/40>`__).
810
811- Add non-throwing GMP-style conversion functions (`#59 <https://github.com/bluescarni/mppp/pull/59>`__,
812  `#61 <https://github.com/bluescarni/mppp/pull/61>`__).
813
814- Implement move constructors and move assignment operators from ``mpz_t`` and ``mpq_t`` for :cpp:class:`~mppp::integer`
815  and :cpp:class:`~mppp::rational` (`#57 <https://github.com/bluescarni/mppp/pull/57>`__).
816
817- Implement a cache for the allocation of limbs arrays in small :cpp:class:`~mppp::integer` objects
818  (`#55 <https://github.com/bluescarni/mppp/pull/55>`__).
819
820- Implement the :cpp:class:`~mppp::real128` class (`#31 <https://github.com/bluescarni/mppp/pull/31>`__).
821
822- Implement the ``sub_ui()`` primitive for :cpp:class:`~mppp::integer` (`#37 <https://github.com/bluescarni/mppp/pull/37>`__).
823
824- Add a CI build testing against the latest unstable GMP branch (`#34 <https://github.com/bluescarni/mppp/pull/34>`__).
825
826- Add assignment operators from ``std::string_view`` for :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational`
827  (`#32 <https://github.com/bluescarni/mppp/pull/32>`__).
828
829- Add the possibility of constructing non-canonical :cpp:class:`~mppp::rational` objects from numerator/denominator pairs
830  (`#28 <https://github.com/bluescarni/mppp/pull/28>`__).
831
832Changes
833~~~~~~~
834
835- Use the sphinx bootstrap theme for the html documentation (`#71 <https://github.com/bluescarni/mppp/pull/71>`__).
836
837- Various simplifications in the :cpp:class:`~mppp::rational` API (`#66 <https://github.com/bluescarni/mppp/pull/66>`__).
838
839- Introduce a :cpp:concept:`~mppp::string_type` concept and use it to reduce the number of overloads in the
840  constructors/assignment operators from string (`#63 <https://github.com/bluescarni/mppp/pull/63>`__,
841  `#64 <https://github.com/bluescarni/mppp/pull/64>`__).
842
843- The :cpp:class:`~mppp::integer` functions accepting the return value as a parameter will now
844  demote a return value with dynamic storage to static storage if the other arguments all have static storage
845  (`#58 <https://github.com/bluescarni/mppp/pull/58>`__).
846
847- The free functions for :cpp:class:`~mppp::integer` and :cpp:class:`~mppp::rational` now return a reference
848  to the return value, rather than ``void`` (`#56 <https://github.com/bluescarni/mppp/pull/56>`__).
849
850- Performance improvements and code simplifications for :cpp:class:`~mppp::integer` division
851  (`#55 <https://github.com/bluescarni/mppp/pull/55>`__).
852
853- Minor improvements in the static checks for the expected layouts of ``mpz_t`` and ``mpq_t``
854  (`#53 <https://github.com/bluescarni/mppp/pull/53>`__, `#42 <https://github.com/bluescarni/mppp/pull/42>`__).
855
856- Enable additional compiler warning flags in debug builds for GCC (`#52 <https://github.com/bluescarni/mppp/pull/52>`__).
857
858- **BREAKING**: various improvements/changes to the bit shifting functions for :cpp:class:`~mppp::integer`,
859  and the exception raised by the bit shifting operators is not any more
860  ``std::domain_error``, it is now ``std::overflow_error`` (`#48 <https://github.com/bluescarni/mppp/pull/48>`__).
861
862- Various updates to the benchmarks (`#39 <https://github.com/bluescarni/mppp/pull/39>`__).
863
864- Use various C++17 standard library bits if available, and improve general C++17 compatibility
865  (`#31 <https://github.com/bluescarni/mppp/pull/31>`__, `#37 <https://github.com/bluescarni/mppp/pull/37>`__).
866
867- Update the internal copy of Catch to the latest version, 1.9.7 (`#36 <https://github.com/bluescarni/mppp/pull/36>`__).
868
869- Bump up the minimum required CMake version to 3.3 (`#31 <https://github.com/bluescarni/mppp/pull/31>`__).
870
871- Performance improvements and simplifications in the :cpp:class:`~mppp::rational` constructors and assignment operators
872  (`#28 <https://github.com/bluescarni/mppp/pull/28>`__, `#32 <https://github.com/bluescarni/mppp/pull/32>`__).
873
874Fix
875~~~
876
877- Fixes/improvements in the support for ``long double`` (`#50 <https://github.com/bluescarni/mppp/pull/50>`__,
878  `#54 <https://github.com/bluescarni/mppp/pull/54>`__).
879
880- Fix the compilation of the tests on Clang 5 (`#43 <https://github.com/bluescarni/mppp/pull/43>`__).
881
882- Fix too lax constraints in the implementation of in-place operators for :cpp:class:`~mppp::integer` and
883  :cpp:class:`~mppp::rational` (`#41 <https://github.com/bluescarni/mppp/pull/41>`__).
884
885- Fix the PDF build of the documentation (`#39 <https://github.com/bluescarni/mppp/pull/39>`__).
886
887- Fix a few missing ``inline`` specifiers (`#38 <https://github.com/bluescarni/mppp/pull/38>`__, `#41 <https://github.com/bluescarni/mppp/pull/41>`__).
888
889- Fix C++ version detection on MSVC (`#36 <https://github.com/bluescarni/mppp/pull/36>`__).
890
891- Fix missing tests for :cpp:class:`~mppp::rational` hashing (`#29 <https://github.com/bluescarni/mppp/pull/29>`__).
892
893- Fix some MSVC warnings when compiling the tests in release mode (`#28 <https://github.com/bluescarni/mppp/pull/28>`__).
894
895- Various minor documentation fixes.
896
8970.4 (2017-07-29)
898----------------
899
900New
901~~~
902
903- Implement the constructors from a range of characters and from ``std::string_view`` for :cpp:class:`~mppp::integer`
904  and :cpp:class:`~mppp::rational` (`#23 <https://github.com/bluescarni/mppp/pull/23>`__).
905
906- Implement the assignment operator and the constructor from ``mpz_t`` in :cpp:class:`~mppp::rational`
907  (`#19 <https://github.com/bluescarni/mppp/pull/19>`__).
908
909Changes
910~~~~~~~
911
912- Expand CI to include GCC 7 in C++17 mode (`#27 <https://github.com/bluescarni/mppp/pull/27>`__).
913
914- Improve testing coverage (`#25 <https://github.com/bluescarni/mppp/pull/25>`__).
915
916- Various extensions to the benchmark suite (`#25 <https://github.com/bluescarni/mppp/pull/25>`__).
917
918- Various performance improvements in :cpp:class:`~mppp::integer` thanks to the reduction of the number of branches
919  in the implementation of basic arithmetic for the 1/2-limb specialisations (`#25 <https://github.com/bluescarni/mppp/pull/25>`__).
920
921- Update the internal copy of Catch to the latest version, 1.9.6 (`#24 <https://github.com/bluescarni/mppp/pull/24>`__).
922
923- Performance improvements for :cpp:func:`mppp::integer::size()` (`#23 <https://github.com/bluescarni/mppp/pull/23>`__).
924
925- Performance improvements for the construction/conversion of :cpp:class:`~mppp::integer` from/to C++ integrals
926  (`#23 <https://github.com/bluescarni/mppp/pull/23>`__).
927
928- Make sure the MPFR cleanup routine is automatically called on shutdown (`#22 <https://github.com/bluescarni/mppp/pull/22>`__).
929
930- Performance improvements for :cpp:func:`mppp::integer::nbits()` on GCC and Clang (`#17 <https://github.com/bluescarni/mppp/pull/17>`__).
931
932Fix
933~~~
934
935- Fix a build failure on older GMP versions (`#25 <https://github.com/bluescarni/mppp/pull/25>`__).
936
937- Fix a build system bug when building the benchmarks with older CMake versions (`#25 <https://github.com/bluescarni/mppp/pull/25>`__).
938
939- Various minor fixes.
940
9410.3 (2017-06-12)
942----------------
943
944New
945~~~
946
947- Implement the multiprecision :cpp:class:`~mppp::rational` class (`#14 <https://github.com/bluescarni/mppp/pull/14>`__).
948
949- Implement fast assignment functions to zero and plus/minus one for :cpp:class:`~mppp::integer`.
950
951- Add assignment operators from string for :cpp:class:`~mppp::integer`.
952
953- Implement the ``submul()`` primitive for :cpp:class:`~mppp::integer`.
954
955- Implement the assignment operator from ``mpz_t`` in :cpp:class:`~mppp::integer`, and use it in various function
956  in order to avoid the creation of a temporary.
957
958Changes
959~~~~~~~
960
961- Performance improvements for the copy/move assignment operators of :cpp:class:`~mppp::integer`.
962
963Fix
964~~~
965
966- Various small documentation fixes.
967
9680.2 (2017-05-09)
969----------------
970
971New
972~~~
973
974- Provide a CMake config-file package as part of the install process.
975
976- Implement the missing in-place modulo operator with C++ integrals
977  on the left.
978
979- Experimental support for C++ concepts.
980
981- Support the ``clang-cl`` compiler on Windows.
982
983- Add input stream operator.
984
985- Add in-place arithmetic operators with interoperable types on the
986  left-hand side.
987
988- Add convenience overloads for the computation of the binomial
989  coefficient.
990
991- Add convenience overloads for ``pow()``.
992
993- Add functions to test if an integer is equal to -1.
994
995- Add a static member to ``integer`` storing the static size.
996
997Changes
998~~~~~~~
999
1000- Split out the library in multiple files.
1001
1002- Rename the ``mp_integer`` class to ``integer``.
1003
1004- Various improvements to the documentation.
1005
1006- Rework the library interface to use regular functions rather than
1007  ``inline friend`` functions.
1008
1009- Change the license to MPL2.
1010
1011- Remove the allocation cache.
1012
1013- Remove the custom namespace option.
1014
1015Fix
1016~~~
1017
1018- Fix operators example in the documentation.
1019