v5.5.0
5.5.0 (2023-09-12)
The MongoDB Node.js team is pleased to announce version 5.5.0 of the bson
package!
Release Notes
This release is focused on a bug fix and a new feature for our Decimal128
class.
Decimal128
constructor and Decimal128.fromString
now throw when detecting loss of precision
Prior to this release, Decimal128
would round numbers with more than 34 significant digits and lose precision. Now, on detecting loss of precision, Decimal128
's constructor and Decimal128.fromString
will throw a BSONError
. This behaviour should have been the default as the Decimal128
class was always intended to be high-precision floating point value. As such, silently performing inexact rounding is undesirable behaviour.
New Decimal128.fromStringWithRounding
static method
We understand that some of our users may have depended on the rounding behaviour of Decimal128.fromString
for their applications. To support these users, we have exposed this behaviour via the Decimal128.fromStringWithRounding
method. Anywhere that Decimal128.fromString
was used with the expectation that rounding would occur can be replaced with a call to this new method.
We also want to express our gratitude to @hconn-riparian for reporting a related rounding bug and fix in #560 which has been included in our implementation of this feature.
// pre v5.5
> let d = Decimal128.fromString('127341286781293491234791234667890123')
new Decimal128("1.273412867812934912347912346678901E+35")
// >= v5.5
> let d = Decimal128.fromString('127341286781293491234791234667890123')
Uncaught:
BSONError: "127341286781293491234791234667890123" is not a valid Decimal128 string - inexact rounding
at invalidErr (./js-bson/lib/bson.cjs:1402:11)
at Decimal128.fromStringInternal (./js-bson/lib/bson.cjs:1633:25)
at Decimal128.fromString (./js-bson/lib/bson.cjs:1424:27)
> d = Decimal128.fromStringWithRounding('127341286781293491234791234667890123')
new Decimal128("1.273412867812934912347912346678901E+35")
Read more about inexact rounding and the rationale for this change in our Decimal128
specification.
Features
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.