Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(5.x): release 5.5.0 #625

Merged
merged 1 commit into from
Sep 13, 2023

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Sep 12, 2023

🌱 A new release!

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.


@github-actions github-actions bot changed the title chore(5.x): release 5.4.1 [skip-ci] chore(5.x): release 5.5.0 [skip-ci] Sep 12, 2023
@github-actions github-actions bot force-pushed the release-please--branches--5.x--components--bson branch from 22fda98 to b48aaa7 Compare September 12, 2023 18:04
@W-A-James W-A-James changed the title chore(5.x): release 5.5.0 [skip-ci] chore(5.x): release 5.5.0 Sep 13, 2023
@W-A-James W-A-James merged commit 045dc2d into 5.x Sep 13, 2023
1 check passed
@W-A-James W-A-James deleted the release-please--branches--5.x--components--bson branch September 13, 2023 14:02
W-A-James added a commit that referenced this pull request Sep 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants