Sonic Boom is an extremely fast utf8 only stream implementation for Node.js, designed for writing log data to files or file descriptors. It supports backpressure and `.pipe()`, and provides options for async or sync writes, buffering controls, and events for readiness, errors, and dropped data.
Project status
- Actively maintained, with recent updates in 2026 (v4.2.1 on 2026-02-10, v5.0.0 on 2026-03-31) and an upstream push on 2026-08-01, indicating ongoing development.
- Update cadence appears fairly active recently, about 7 weeks between v4.2.1 and v5.0.0, after a longer earlier gap (v4.2.0 was in 2024-10).
AI summary generated
Recent updates
v5.0.0
v5.0.0 primarily modernizes the repository and CI toolchain, and bumps several GitHub Actions and dev dependencies. The code diff shown indicates builtin imports were modernized (using node:fs, node:events, etc.), and the test suite was migrated from tap to node:test style assertions and updated runner tooling.
Breakingv4.2.1
v4.2.1 mainly tightens and corrects the write path around partial writes and UTF-8 handling, including ensuring fs.write/fs.writeSync are called with the proper Node.js signatures for both strings and Buffers. It also refreshes several dev dependency versions (TypeScript, @types/node, sinon fake timers) and updates CI to use actions/checkout@v5.
v4.2.0
v4.2.0 updates the dev tooling (fake timers) and includes changes aimed at better compatibility in non-Node environments. It also adjusts fsync-related flushing/closing behavior to better handle error scenarios.
v4.1.0
v4.1.0 introduces a new `periodicFlush` option to trigger `flush` on an interval, plus a performance optimization around async writes by converting the write buffer to a `Buffer` on certain Node versions. It also bumps `@types/node` to 22.0.0 in devDependencies.
Featuresv4.0.1
The provided release notes for v4.0.1 contain only a changelog link and do not list any specific code changes. The actual diff shows only packaging-related updates and a version bump, with no runtime code changes.
v4.0.0
This release primarily updates the supported Node.js versions for sonic-boom's CI and tooling. Beyond that, the repo changes its development tooling and test setup (including TAP configuration and removal of husky-based hooks) without mentioning those changes in the release notes.
Breakingv3.8.1
v3.8.1 primarily changes SonicBoom stream behavior around reopening files, ensuring a drain event is emitted after a reopen cycle. The release notes also include dev dependency bumps for husky and tsd.
v3.8.0
v3.8.0 updates CI and dev tooling (actions/setup-node and tsd), and changes internal write-buffer handling to address incorrect length tracking for multi-byte UTF-8 strings. The functional code change is centered around a new helper that adjusts how many characters are considered “written” when fs.write reports a byte count that does not match string length.
v3.7.0
Release v3.7.0 updates sonic-boom to improve flushSync behavior by adding an fsyncSync call on the underlying file descriptor. The release notes indicate this change explicitly, and the test suite is updated to validate that the new fsyncSync path is exercised.
v3.6.1
v3.6.1 includes a fix intended to prevent a memory leak when a user writes and flushes before the stream is fully ready (async open path). The code change adds internal state to track pending flush behavior during the open phase and ensures flush callbacks are handled correctly.