New and Improved Decimal Library

It has been about 6 months since the indeterminate end of the Decimal review, but Chris and I wanted to announce the newest major version of the library (v5.0.0). What has changed? Quite a lot: Breaking Changes: - Based on bitwise comparisons with other similar libraries and database software, we have changed the internal encoding of our IEEE 754-compliant types - 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 - We have changed the type names to better match conventions: - decimalXX is now decimalXX_t - decimalXX_fast is now decimal_fastXX_t - The headers have been similarly renamed, and can now be used independently instead of requiring the monolith based on feedback in Review - Constructors have been simplified to reduce confusion Other Changes: - The doc content have been overhauled thanks to feedback from Peter Turcan and others during the review - 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. - https://develop.decimal.cpp.al/ - We now support formatting with {fmt} - Benchmarks have been expanded to include GCC _Decimal 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 - Every post-review issue John was kind enough to consolidate and open have been addressed Thanks to all those that helped make the library better than it was. Let us know if you find any new issues, or need a feature, as you try the new version. Chris and I are thinking about doing the re-review in the Fall; stay tuned. Matt

Wooh congratulations, this is great news! Sounds like the indeterminate review had positive impact on determination :p After a quick glance, the documentation looks good (I kinda want to try Antora now).
- The headers have been similarly renamed, and can now be used independently instead of requiring the monolith based on feedback in Review
Can you quickly summarize what reviewers said at the time ? In one of my projects I was actually considering putting several header-only files into a monolith, so I'm curious about what drove the review to go the other way. Congratulations again ! :D Arno

Wooh congratulations, this is great news!
Sounds like the indeterminate review had positive impact on determination :p
Thank you!
After a quick glance, the documentation looks good (I kinda want to try Antora now).
The move was actually a lot easier than I expected, and is an improvement over the single page.
- The headers have been similarly renamed, and can now be used independently instead of requiring the monolith based on feedback in Review
Can you quickly summarize what reviewers said at the time ? In one of my projects I was actually considering putting several header-only files into a monolith, so I'm curious about what drove the review to go the other way.
So originally the entire library had to be consumed through a single header <boost/decimal.hpp>. I thought this was pretty convenient. Sloccount says our include directory is >35,000 lines so we we're having a non-trivial impact on compile times. Several reviewers asked to be able to pick and choose which headers they used to avoid this slowdown.
Congratulations again ! :D Arno
Thanks again, Matt

Breaking Changes: - Based on bitwise comparisons with other similar libraries and database software, we have changed the internal encoding of our IEEE 754-compliant types
Can you please give some more details about this change?
Yes; in May we had an issue opened by a developer making a similar Go package. He noticed that our encoded values had a difference in the high bits. After looking at IEEE 754-2019 again, I had made an error at the beginning of the library causing our encoding to be a mixture of of the two allowable encoding formats. Fortunately, correcting this was fairly straightforward, and we now have better testing against other libs. Matt
participants (3)
-
Arnaud Becheler
-
Matt Borland
-
pdimov@gmail.com