Releases: mongodb/js-bson
v6.10.4
6.10.4 (2025-06-02)
The MongoDB Node.js team is pleased to announce version 6.10.4 of the bson
package!
Release Notes
Top-Level Await removed from the browser BSON bundle
In versions <6.10.4, BSON uses a top-level await to asynchronously import the crypto
module. This change unintentionally caused headaches for users of webpack, react native, vite and other tools bundlers and tools.
The top-level await has been removed from all BSON bundles. Thanks to @lourd for this contribution.
Prevent the creation of incorrectly sized float32 vectors
This adds validation to our BSON.serialize
and EJSON.stringify
methods that will prevent creating float 32 vectors that are not a multiple of 4. Previously created vectors that do not meet this validation will still be deserialized
and parsed
so they can be fixed.
Additionally, the toFloat32Array()
, toInt8Array()
, and toPackedBits()
methods now perform the same validation that serialize does to prevent use of incorrectly formatted Binary vector values. (For example, a packed bits vector with more than 7 bits of padding)
Vectors of an incorrect length could only be made manually (directly constructing the bytes and calling new Binary
). We recommend using toFloat32Array
and fromFloat32Array
when interacting with Vectors in MongoDB as they handle the proper creation and translation of this data type.
Bug Fixes
- NODE-6074: Removes top-level await in bson with separate node and browser ESM bundles (#749) (4602973)
- NODE-6735, NODE-6711: add BSON vector validation to EJSON stringification, serialization and conversion to native types (#748) (64ff6a2)
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.9.1
6.9.1 (2025-03-06)
The MongoDB Node.js team is pleased to announce version 6.9.1 of the bson
package!
Release Notes
⚠️ Fixed potential data corruption bug when useBigInt64
is enabled
After refactoring to improve deserialization performance in #649, we inadvertently introduced a bug that manifested when deserializing Long
values with the useBigInt64
flag enabled. The bug would lead to negative Long
values being deserialized as unsigned integers. This issue has been resolved here.
Thanks to @rkistner for reporting this bug!
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.8.1
6.8.1 (2025-03-06)
The MongoDB Node.js team is pleased to announce version 6.8.1 of the bson
package!
Release Notes
⚠️ Fixed potential data corruption bug when useBigInt64
is enabled
After refactoring to improve deserialization performance in #649, we inadvertently introduced a bug that manifested when deserializing Long
values with the useBigInt64
flag enabled. The bug would lead to negative Long
values being deserialized as unsigned integers. This issue has been resolved here.
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.7.1
6.7.1 (2025-03-06)
The MongoDB Node.js team is pleased to announce version 6.7.1 of the bson
package!
Release Notes
⚠️ Fixed potential data corruption bug when useBigInt64
is enabled
After refactoring to improve deserialization performance in #649, we inadvertently introduced a bug that manifested when deserializing Long
values with the useBigInt64
flag enabled. The bug would lead to negative Long
values being deserialized as unsigned integers. This issue has been resolved here.
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.6.1
6.6.1 (2025-03-06)
The MongoDB Node.js team is pleased to announce version 6.6.1 of the bson
package!
Release Notes
⚠️ Fixed potential data corruption bug when useBigInt64
is enabled
After refactoring to improve deserialization performance in #649, we inadvertently introduced a bug that manifested when deserializing Long
values with the useBigInt64
flag enabled. The bug would lead to negative Long
values being deserialized as unsigned integers. This issue has been resolved here.
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.5.1
6.5.1 (2025-03-06)
The MongoDB Node.js team is pleased to announce version 6.5.1 of the bson
package!
Release Notes
⚠️ Fixed potential data corruption bug when useBigInt64
is enabled
After refactoring to improve deserialization performance in #649, we inadvertently introduced a bug that manifested when deserializing Long
values with the useBigInt64
flag enabled. The bug would lead to negative Long
values being deserialized as unsigned integers. This issue has been resolved here.
Thanks to @rkistner for reporting this bug!
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.4.1
6.4.1 (2025-03-05)
The MongoDB Node.js team is pleased to announce version 6.4.1 of the bson
package!
Release Notes
⚠️ Fixed potential data corruption bug when useBigInt64
is enabled
After refactoring to improve deserialization performance in #649, we inadvertently introduced a bug that manifested when deserializing Long
values with the useBigInt64
flag enabled. The bug would lead to negative Long
values being deserialized as unsigned integers. This issue has been resolved here.
Fixed float byte-wise handling on big-endian systems
Caution
Among the platforms BSON and the MongoDB driver support this issue impacts s390x big-endian systems. x86, ARM, and other little-endian systems are not affected. Existing versions of the driver can be upgraded to this release.
A change in BSON@6.4.0 (2024-02-29) started parsing and serializing floats using a Float64Array
. When reading the bytes from this array the ordering is dependent on the platform it is running on and we now properly account for that ordering.
Bug Fixes
- NODE-6812: incorrect negative bigint handling (#762) (ce3e544)
- NODE-6818: flip byte order depending on system endianness (#766) (8a55718)
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.10.3
6.10.3 (2025-02-19)
The MongoDB Node.js team is pleased to announce version 6.10.3 of the bson
package!
Release Notes
⚠️ Fixed potential data corruption bug when useBigInt64
is enabled
After refactoring to improve deserialization performance in #649, we inadvertently introduced a bug that manifested when deserializing Long
values with the useBigInt64
flag enabled. The bug would lead to negative Long
values being deserialized as unsigned integers. This issue has been resolved here.
Thanks to @rkistner for reporting this bug!
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.10.2
6.10.2 (2025-01-29)
The MongoDB Node.js team is pleased to announce version 6.10.2 of the bson
package!
Release Notes
Fix calculateObjectSize
not accounting for BigInt
value size
BSON.calculateObjectSize
was missing a condition for BigInt
values, meaning it did not account for them in the same way that it would for Long
values. This has been corrected so that Bigint
values contribute 8 bytes worth of size to the total count.
We also added a new default condition that will catch any new values that may be returned by typeof
in the future and will throw an error rather than returning an inaccurate size.
Bug Fixes
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.
v6.10.1
6.10.1 (2024-11-27)
The MongoDB Node.js team is pleased to announce version 6.10.1 of the bson
package!
Release Notes
Fix issue with the internal unbounded type cache
As an optimization, a previous performance improvement stored the type information of seen objects to avoid recalculating type information. This caused an issue in the driver under extreme load and high memory usage as the cache grew. The assumption was that garbage collection would clear it enough to sustain normal operation. The cache is now removed and other optimal type checking is used in its place.
Cache the hex string of an ObjectId lazily
When ObjectId.cacheHexString
is set to true
we no longer convert the buffer to a hex string in the constructor, since the cache is already being filled in any call to objectid.toHexString()
.
Additionally, if a string is passed into the constructor we can cache this immediately as there is no performance impact and no extra memory that needs to be allocated.
This improves the performance for situations where you are parsing ObjectIds from a string (ex. JSON
) and want to avoid recalculating the hex. It also improves situations where you have ObjectIds coming from BSON and only convert some of them strings perhaps after applying some filter to eliminate some.
With cacheHexString
enabled deserializing ObjectIds from BSON shows ~80% performance improvement and toString
-ing ObjectIds that were constructed from a string convert ~40% faster!
Thanks to @SeanReece for contributing this improvement!
Bug Fixes
Performance Improvements
Documentation
We invite you to try the bson
library immediately, and report any issues to the NODE project.