v0.4.0
Pre-release-
BREAKING CHANGES: remove
ByteCursor
methodsTo make bare-ts/lib API uniform, methods of
ByteCursor
are replaced by regular functions.import * as bare from "@bare-ts/lib" const bc = new bare.ByteCursor(new Uint8Array(5), bare.Config({})) - bc.check(5) - bc.reserve(5) - bc.read(5) + bare.check(bc, 5) + bare.reserve(bc, 5) + bare.readUnsafeU8FixedArray(bc, 5)
-
BREAKING CHANGES: remove
textDecoderThreshold
andtextEncoderThreshold
configurationCalls to native
TextDecoder.decode
andTextEncoder.encode
have a fixed cost.
This cost outperforms the native performance to decode and encode small strings.bare-ts uses a custom implementation to decode and encode small strings.
The choice between the custom and the native codecs is based on thresholds.
These threshold were configurable viatextDecoderThreshold
andtextEncoderThreshold
config properties.This is not clear whether this configuration is worth to expose.
Most of decoded and encoded strings are small.
Fixed thresholds seem fair enough. -
Assertions and development mode
Previously, bare-ts enabled a few assertions to check some function arguments.
For instance, the following code could trigger anAssertionError
:import * as bare from "@bare-ts/lib" const bc = new bare.ByteCursor(new Uint8Array(5), bare.Config({})) bare.writeU8(bc, 2**10) // AssertionError: too large number
Assertions are now disabled by default.
They are enabled under the following condition:-
The code is executed under node with
NODE_ENV=development
-
The code is executed or bundled under
development
condition.
New assertions were added to improve error reporting on development.
More assertions could be added in the future.Because assertions can be disabled, we improved the code robustness:
All uint/int writters truncate their input to ensure that the number of written bytes is bounded. -