NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3256 most downloaded on pub.dev
Portable Dart package to handle data serialization/deserialization efficiently, including a dynamic BytesBuffer to read/write data.
Last release 1 months ago
15 Aug 2026
Release timing varies
gaps range from 8 days to 1.7 years
Nearly every release is documented
notes for 18 of 18 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
18 releases · first in 2022
Four correctness fixes. The first affects every platform; the other three are web-only ( dart2js / dartdevc ), where an int is a JavaScript double and
Four correctness fixes. The first affects every platform; the other three are
web-only (dart2js/dartdevc), where an int is a JavaScript double and the
bitwise operators are 32-bit.
DataSerializerPlatformGeneric (web):
shiftLeftInt and shiftRightInt for non-negative operands.<< / >> fast path, which is a 32-bit operation here:
shiftLeftInt(127, 28) returned 4026531840 instead of 34091302912,0.shiftRightInt truncated its operand before shifting, soshiftRightInt(9007199254740991, 7) returned 33554431 instead of70368744177663.Leb128 / BytesBufferLeb128Extension (web):
|=, and | is also a 32-bit+ is equivalent and stays exact.2^shift — far larger than the valueDateTime.microsecondsSinceEpoch sits in the affected rangeBytesBufferLeb128Extension:
readLeb128SignedInt: it decoded almost every signed valuelastByte was assigned after the break, so it only ever held the0 for a single-byte value.-1 read as 127, -2 as126, -64 as 64.64 encodes as[0xC0, 0x00], and reading the sign from 0xC0 turned it into -16320;1000 became -15384.-1000000 testLeb128.decodeSigned was never affected — it reads the signBytesBuffer read path was wrong.Tests:
readLeb128SignedInt: single-byte negatives,Leb128.decodeSigned so a fix on one side cannot be undone on the other.shiftLeftInt and shiftRightInt across and beyondBigInt, for positive and negative1 << 40, since a shift is a0 there — aCI:
.github/workflows/dart.yml: the Chrome job now collects and uploadsplatform_generic.dart is the web one and is never loaded on the VM — so adata_serializer_edge_cases_test.dart covering paths the suite hadBytesEmitter's rejection of data types it cannot represent,BytesBufferError.toString, the BytesIO transfer defaults, theByteDataExtension length-range checks, DataSerializerPlatform's 64-bitBitsBuffer.isAtPadding/toString, Writable's default bufferBytesFileIO's public constructor, transfer defaults and capacityOne column per quarter.
.github/workflows/dart.yml : updated GitHub Actions actions/checkout from v3 to v6 and codecov/codecov-action from v3 to v6.
CI:
.github/workflows/dart.yml: updated GitHub Actions actions/checkout from v3 to v6 and codecov/codecov-action from v3 to v6.BytesBuffer:
writeNullable and readNullable methods to write/read nullable objects with a presence boolean flag.writeJSON and readJSON methods to serialize/deserialize JSON-encodable objects as strings.Tests (data_serializer_bytes_buffer_test_base.dart):
writeNullable / readNullable covering null, non-null, custom objects, and sequential values.writeJSON / readJSON covering maps, lists, primitives, sequential values, and equivalence to direct JSON encode/decode.pubspec.yaml:
>=3.10.0 <4.0.0.collection to ^1.19.1lints to ^5.1.1test to ^1.31.1coverage to ^1.15.0path to ^1.9.1Rollback to collection 1.18.0 for Flutter SDK compatibility.
Rollback to collection 1.18.0 for Flutter SDK compatibility.
collection: ^1.18.0
Remove use of UnmodifiableUint8ListView for Dart 3.5.0 compatibility.
Remove use of UnmodifiableUint8ListView for Dart 3.5.0 compatibility.
sdk: '>=3.4.0 <4.0.0'
collection: ^1.19.0
test: ^1.25.8
coverage: ^1.9.0
Remove use of UnmodifiableUint8ListView for Dart 3.5.0 compatibility.
sdk: '>=3.4.0 <4.0.0'
collection: ^1.19.0
test: ^1.25.8
coverage: ^1.9.0
Dart 3.3.0 compatibility changes:
Dart 3.3.0 compatibility changes:
ListGenericExtension:
asUnmodifiableView to method asUnmodifiableListView.Uint8ListDataExtension:
asUnmodifiableView to allow use of Uint8List.asUnmodifiableView.Uint32ListDataExtension:
asUnmodifiableView to allow use of Uint32List.asUnmodifiableView.Uint64ListDataExtension:
asUnmodifiableView to allow use of Uint64List.asUnmodifiableView.sdk: '>=3.3.0 <4.0.0'
lints: ^3.0.0
test: ^1.25.2
coverage: ^1.7.2
path: ^1.9.0
- New BitsBuffer. - BytesBuffer: - writeWritables/readWritables: new parameter option leb128. - Added writeFloat64, writeAllFloat64, readFloat64 and r
Merge v1.0.12 (BitsBuffer)
v1.0.12
- New `BitsBuffer`.
- `BytesBuffer`:
- `writeWritables/readWritables`: new parameter option `leb128`.
- Added `writeFloat64`, `writeAllFloat64`, `readFloat64` and `readAllFloat64`.
- Added `writeFloat32`, `writeAllFloat32`, `readFloat32` and `readAllFloat32`.
- Added `readTo` and `writeFrom`.
- test: ^1.24.8
- Added support to Leb128. - New BytesEmitter. - DataSerializerPlatform: - Added supportsFullBitsShift, shiftRightInt and shiftLeftInt.
Merge v1.0.11 - LEB128
- Added support to `Leb128`.
- New `BytesEmitter`.
- `DataSerializerPlatform`:
- Added `supportsFullBitsShift`, `shiftRightInt` and `shiftLeftInt`.
- sdk: '>=3.0.0 <4.0.0'
- dependency_validator: ^3.2.3
Added support to Leb128.
New BytesEmitter.
DataSerializerPlatform:
supportsFullBitsShift, shiftRightInt and shiftLeftInt.sdk: '>=3.0.0 <4.0.0'
dependency_validator: ^3.2.3
- data_serializer_io.dart: data_serializer.io
v1.0.10
- `data_serializer_io.dart`: `data_serializer.io`
- BytesIO: - Added flush, close, isClosed and supportsClosing. - BytesBuffer: - Added flush and close.
Merge v1.0.9
- `BytesIO`:
- Added `flush`, `close`, `isClosed` and `supportsClosing`.
- `BytesBuffer`:
- Added `flush` and `close`.
Implementations: BytesFileIO and BytesUint8ListIO.
New BytesIO:
BytesFileIO and BytesUint8ListIO.Added constructor BytesBuffer.fromIO.
DataSerializerPlatformGeneric:
_writeInt64 and _readInt64 for JS/Browser platform.Dart CI:
sdk: '>=2.18.4 <4.0.0'
collection: ^1.18.0
lints: ^2.0.1
test: ^1.24.3
dependency_validator: ^3.2.2
coverage: ^1.6.3
- ListIntDataExtension: - Added toInt8List, toUint16List, toInt16List, toUint32List, toInt32List,toUint64List, toInt64List. - Added asInt8ListasUint16
v1.0.7
- `ListIntDataExtension`:
- Added `toInt8List`, `toUint16List`, `toInt16List`,
`toUint32List`, `toInt32List`,`toUint64List`, `toInt64List`.
- Added `asInt8List``asUint16List`, `asInt16List`,
`asUint32List`, `asInt32List`, `asUint64List`, `asInt64List`.
- New `ListGenericExtension`:
- `reversedList`, `copyTo`, `copy`, `asUnmodifiableView`, `reverseChunks`
- - `Uint8ListDataExtension`: added `toUint32List`.
- New `ByteDataExtension`, `Uint32ListDataExtension` and `Uint64ListDataExtension`.
- Improved tests.
DataSerializerPlatform, and Uint8ListDataExtension:
DataSerializerPlatform, and Uint8ListDataExtension:
getInt16/32/64 and getUint16/32/64:
endian to allow Endian.little.- Added BytesBuffer.indexOf.
BytesBuffer.indexOf.BytesBuffer.bytesTo now returns R.
BytesBuffer.bytesTo now returns R.Fix some documentation references.
- Organize extensions names. - Clean code. - Improve tests.
- Fix BigInt serialization. - Improve tests. - Improve documentation.
BigInt serialization.Moved some code from package statistics.
statistics.Your coding agent can read these notes before it upgrades. Set up the MCP server →