|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +nav-class: dark |
| 4 | +categories: matt |
| 5 | +title: Decimal Goes Back to Review |
| 6 | +author-id: matt |
| 7 | +author-name: Matt Borland |
| 8 | +--- |
| 9 | + |
| 10 | +We are excited to announce that the Decimal ([https://github.com/cppalliance/decimal](https://github.com/cppalliance/decimal)) library is going back to review for inclusion in Boost from 06 to 15 October. |
| 11 | +In preparation for this we have made quite a few changes since the indeterminate end of the first review about 9 months ago: |
| 12 | + |
| 13 | +Breaking Changes: |
| 14 | +- Based on bitwise comparisons with other similar libraries and database software, we have changed the internal encoding of our IEEE 754-compliant types |
| 15 | +- We spent about 3 months optimizing just back end integer types that are now used throughout the library, and as the internals of decimal128_t |
| 16 | +- We have changed the type names to better match conventions: |
| 17 | + - `decimalXX` is now `decimalXX_t` |
| 18 | + - `decimalXX_fast` is now `decimal_fastXX_t` |
| 19 | +- The headers have been similarly renamed (e.g. decimal32.hpp -> decimal32_t.hpp), and can now be used independently instead of requiring the monolith based on feedback in Review |
| 20 | +- Constructors have been simplified to reduce confusion (no more double negative logic) |
| 21 | +- The default rounding mode has changed to align with IEEE 754, with rounding bugs being squashed across the modes as well |
| 22 | + |
| 23 | +Other Changes: |
| 24 | +- The documenation content has been overhauled thanks to feedback from Peter Turcan and others during the first review |
| 25 | +- The docs are no longer a single long page of Asciidoc; we have moved to Antora. Thanks to Joaquín and Christian for making it trivial to copy from Unordered to make that happen. |
| 26 | + - https://develop.decimal.cpp.al/ |
| 27 | +- We now support formatting with {fmt} |
| 28 | +- Benchmarks have been expanded to include GCC `_DecimalXX` types, and Intel's libbid. I think people should be pleased with the results now, since that was a huge point of contention at the end of the review |
| 29 | +- We have added support for CMake pkg config for ease of use |
| 30 | +- Every post-review issue John was kind enough to consolidate and open have been addressed: https://github.com/cppalliance/decimal/issues?q=is%3Aissue%20state%3Aclosed%20label%3A%22Boost%20Review%22 |
| 31 | + |
| 32 | +Continued Developments: |
| 33 | + |
| 34 | +- I think the only unaddressed comment from the first review is support for hardware decimal floating point types. |
| 35 | +There are a few rarer architectures that have native decimal floating point units like POWER10. |
| 36 | +Is it possible to fully integrate these native types for use in the library? |
| 37 | +Armed with a compiler farm account I have begun developing a wrapper around the native types that seems to work. |
| 38 | +Stay tuned. |
| 39 | + |
| 40 | +- One item that we have considered, but have not put any effort into yet would be getting the library running on CUDA platforms. |
| 41 | +If this is a feature that you are interested in, please let us know! |
| 42 | + |
| 43 | +- As is always the case with Boost reviews, regardless of the outcome I am sure that we will receive lots of feedback on how to improve the library. |
| 44 | + |
| 45 | +If you are interested, much of the contents of the first review can be found in the original thread on the boost mailing list archive: https://lists.boost.org/archives/list/boost@lists.boost.org/thread/AGFOQZMJ4HKKQ5C5XDDKNJ3VJL72YTWL/ |
0 commit comments