Release Overview
Curated overview of releases across Bare's building-block and helper modules—breaking changes, removals, and additions.
A curated record of changes across Bare's runtime and ecosystem modules, newest first. For the raw upstream record, see each module's GitHub releases; this page is the docs-team view of what the changes mean for your application.
Looking for pear CLI or pear-* module releases instead? See Pear's release overview.
2026-10-21 — Bare v1.36.0
- Added: WebAssembly addons. An addon package can ship a WebAssembly build,
prebuilds/wasi-wasm32/<name>.wasm, and Bare loads it sandboxed through WASI: through WASI, the addon reaches only the directories, streams, and randomness that a WASI provider grants, though it can still reach whatever JavaScript in its realm can. Ask for it with thehostimport attribute, and name the provider with thewasiattribute, as inrequire('bare-sqlite', { with: { host: 'wasi-wasm32', wasi: './wasi.js' } })or the samewithclause onimport. Without the attribute, Bare uses the.wasmbuild only when the package has no native build or linked addon for the platform, and with no provider it grants nothing except clocks. The support comes from the bundledbare-modulev7.5.0, not from Bare's own source. See WebAssembly addons. - Changed: on a process sealed with
Bare.Addon.seal(), an addon resolved after the seal whose native build the process has not loaded falls back to the package's.wasmbuild, if it ships one, instead of failing withCANNOT_LOAD. A package without a.wasmbuild now fails there withADDON_NOT_FOUNDinstead ofCANNOT_LOAD. An addon resolved before the seal, such as one reached through a staticrequire()from the sealing module or any module linked with it, still fails withCANNOT_LOAD. SeeBare.Addon. - Changed:
Bare.suspend(),Bare.wakeup(), and thesuspend()andwakeup()methods of a thread throw aRangeErrorfor alingerordeadlineabove2147483647. Before, such a value wrapped to a 32-bit signed integer, soInfinitybecame0and a deadline that became negative left the wakeup timer never firing. SeeBare.suspend(). - Deprecated: every form of
new Bare.Thread()exceptnew Thread(filename, source[, options]), including the callback forms that run the body of a function on the thread.Thread.create()has been deprecated since 1.31.0. Pass the source, or usebare-thread. The deprecated forms still work. SeeBare.Thread. - Fixed: a resume or wakeup could be missed after an explicit
Bare.idle(). - Changed: bundles
bare-modulev7.5.0, up from v7.4.0, andbare-module-traversev2.7.2, up from v2.6.0, and addsbare-wasm-abiv0.1.1,bare-wasiv0.1.2, andbare-wasmv0.1.0. See Bare module updates. - Changed: the typings declare
Bare.IPCin theBarenamespace. Nothing changes at run time.
2026-10-21 — Bare module updates
bare-directory — v0.1.0
- Added: a new module for capability-based directory access. A handle opened from a path reaches only what is inside the directory, operations take a single name rather than a path, symbolic links are never followed, and rights can only be narrowed. The kernel enforces the confinement as far as each platform allows.
bare-wasiuses it to give a WebAssembly addon host directories. See bare-directory.
bare-module — v7.5.0
- Added: WebAssembly addons. The
hostimport attribute resolves the addons of a module and its dependencies forwasi-wasm32, and thewasiattribute names the module that provides their WASI capabilities. The loader runs a.wasmaddon throughbare-wasm-abi. See WebAssembly addons. - Added: the
wasiloader option, a function that returns the WASI options of an addon imported without awasiattribute. A cache read from a loader with anotherwasithrowsCACHE_INCOMPATIBLE. - Added: the errors
ADDON_HOST_INCOMPATIBLEandADDON_WASI_INCOMPATIBLE. The addons of a package load in one context per loader, and importing the package under another host or provider throws. - Changed: the minimum Bare is 1.35.0, up from 1.32.0. On a sealed process, the loader skips native addons that
Bare.Addon.loaded(), added in Bare 1.35.0, reports as not loaded.
bare-module-traverse — v2.7.2
- Added (v2.7.0):
conditionsin the options oftraverse.resolve.bareandtraverse.resolve.nodemix in additional resolver conditions, and ahostattribute adds thewasiandwasm32conditions to those of the native host. The options type now extends the options of bothbare-module-resolveandbare-addon-resolve. See bare-module-traverse. - Added (v2.7.1): the
mountoption, the URL that an entry bundle is mounted at, and the addons and assets that an imported bundle declares are added to the traversal'sartifacts. - Added: the
Dependencytype declareswasi, the URL of the WASI provider of a WebAssembly addon, which the traversal has set since v2.6.0. - Changed (v2.7.0): queued subgraphs are walked first in, first out, so dependencies are yielded in a different order.
bare-pack — v3.0.2
- Breaking (v3.0.0):
pack()takes aresolveModulecallback as a positional argument beforewriteFile, so a call that passeswriteFilemust passnullforresolveModulein front of it. A 2.x call on 3.0 hands itswriteFiletoresolveModule. See bare-pack. - Breaking (v3.0.0): offloaded addons and assets stay in
bundle.addonsandbundle.assets, under their rewritten resolution. 2.x left them out. - Changed (v3.0.0): the CLI resolves modules through
bare-pack/fs, which follows symbolic links, so a linked package is keyed by its real path. - Fixed (v3.0.1): a module reached in several addon contexts is written once.
- Added (v3.0.2): type declarations for
bare-pack/fs.
bare-sqlite — v0.1.5
- Added: a WebAssembly build,
prebuilds/wasi-wasm32/bare-sqlite.wasm, which Bare 1.36.0 loads with thehostimport attribute. It cannot load extensions: on a database opened withallowExtension: true,loadExtension()throws aSQLiteErrorwith codeERRORand the messageERROR: extension loading is not supported. The directory its WASI provider grants needs thecreateandremoverights, because it locks a database with a.lockdirectory. See WebAssembly build. - Changed: the API is documented as TSDoc in the type declarations instead of the README.
bare-wasi — v0.1.2
- Added: a new module that implements WASI preview 1 for WebAssembly instances. A guest gets nothing unless it is given it: streams, preopened directories backed by memory or by
bare-directory, randomness, arguments, and environment variables. Clocks are available unless denied. There are no sockets. See bare-wasi.
bare-wasm — v0.1.0
- Added: a new module that exports the WebAssembly JavaScript API:
Module,Instance,Memory, and the rest. Its README recommends importing them from it rather than from theWebAssemblyglobal, which may not be available. v0.1.0 reads them from that global itself. See bare-wasm.
bare-wasm-abi — v0.1.1
- Added: a new module that runs Bare addons compiled to
wasm32-wasip1by implementing in JavaScript the libjs functions they import. Threadsafe functions, the event loop, shared memory, and compiling code are left out by design. In v0.1.1, ten libjs functions are neither implemented nor excluded, among themjs_add_teardown_callback, so the WebAssembly builds ofbare-svg1.1.1 andbare-heif1.2.1 do not load. See bare-wasm-abi.
2026-10-13 — Bare v1.35.1
- Fixed: the
barepackage on npm.bare@1.35.0was published withoutindex.d.ts, although itspackage.jsonpoints to that file, so TypeScript found no declarations for it. The publish workflow did not run theprepackscript that copies the typings fromsrc/bare.d.ts, and v1.35.1 runs it before publishing. The runtime is unchanged apart from its version number. See Bare runtime API.
2026-10-13 — Bare v1.35.0
- Breaking: a thread started from a bundle now serves only the modules under the mount of the bundle, which defaults to
filenamefollowed by/. A bundle keyed by absolute URLs outside its mount fails withMODULE_NOT_FOUNDunless the thread is started with the newmountoption. The bundles thatbare-threadandbare-workerprepare from files on disk are keyed this way. See Starting a thread from a bundle. - Breaking:
bare-threadbefore v1.3.0 andbare-workerbefore v4.5.1 do not passmount, so they fail on Bare 1.35.0. A worker started withbare-workerv4.5.0 fails at startup withMODULE_NOT_FOUNDforbare-worker/lib/worker-thread.js. Usebare-threadv1.3.0 or later andbare-workerv4.5.1 or later. A worker that loads a native addon needsbare-workerv4.5.3 or later. - Added:
Bare.Addon.loaded(url), which reports whether the current process has already loaded the dynamic addon aturl, afile:orlinked:URL. It loads nothing and keeps answeringtrueafterAddon.seal(). Any other protocol, includingbuiltin:, givesfalse. SeeBare.Addon. - Added: the
mountoption ofBare.Thread, the URL to mount the bundle of the thread at. It defaults tofilenamefollowed by/, a value that is not a URL throws aTypeError, andfile:///lets the bundle serve any file. SeeBare.Thread. - Added: the
BARE_ENGINE_SHAREDcompile option, which links the JavaScript engine as a shared library instead of embedding it. When it is on, the prebuilds thatBARE_PREBUILDSenables for the default engine are not used. See Compile options. - Added:
bare/target.hrecognizes a compiler that targets WebAssembly under WASI.BARE_PLATFORMis then"wasi",BARE_ARCHis"wasm32", andBARE_PLATFORM_WASIandBARE_ARCH_WASM32are defined. The platform support table lists no WebAssembly target, and the types ofBare.platformandBare.archdo not include these values. See Headers and macros. - Changed: a thread started from a bundle treats the addons that the bundle declares but does not embed as present on disk, and loads them through
Bare.Addon. Earlier releases fail withMODULE_NOT_FOUNDfor such an addon, sobare-threadv1.4.0, which leaves addons out of the bundles it prepares, needs Bare 1.35.0 or later in a thread that loads one.Addon.seal()still applies: on a sealed process, such an addon loads only if the process has already loaded it. - Changed:
bare_module_find()returnsvoid *instead ofuv_lib_t *. C code compiles unchanged, and C++ code needs a cast. See Headers and macros. - Changed: libuv is v1.53.0, up from v1.52.1.
- Changed: bundles
bare-modulev7.4.0, up from v7.2.0. It is the cause of the first breaking change in this release, adds amountoption toModule.load(),Module.loadSync(), and the loader'slink(),linkSync(),import(), andimportSync(), and accepts a parsedBundleas thesource. See Loading bundles. - Changed: bundles
bare-addon-resolvev1.11.0 andbare-module-traversev2.6.0, which resolve WebAssembly addons, andbare-module-resolvev1.12.6. See Bare module updates. - Changed: bundles
bare-timersv3.2.4, wheretimeout.refresh()rearms a timeout that has already fired, andbare-urlv2.5.5, whereURL.pathToFileURL()handles Windows extended-length paths. - Changed: the JavaScript API is documented as TSDoc in
src/bare.d.tsinstead of in the README. The declarations now includeBare.IPC,Addon.seal(), andAddon.sealed, which the earlier typings left out. They importDuplexfrombare-streamfor the type ofBare.IPC, andbarelistsbare-streamas an optional peer dependency. - Changed: the threat model says that code that can write to the shared intrinsics can watch and steer every module graph in a realm, so the protocol you hand to untrusted code is not a reliable limit unless you run that code in a realm of its own or freeze the intrinsics first. It also says that WebAssembly addons can still load after
Addon.seal(). Keeping untrusted code away from the shared intrinsics is now one of five embedder duties. See Embedding. - Fixed: the type of
Bare.archnow includesriscv64, which Bare already reported on RISC-V 64 builds. SeeBare.arch.
2026-10-13 — Bare module updates
bare-addon-resolve — v1.11.0
- Added: WebAssembly prebuilds. A host that starts with
wasi-, such aswasi-wasm32, is looked up last, asprebuilds/<host>/<name>.wasm, after the native prebuilds and linked addons. See bare-addon-resolve. - Changed: a
wasi-host no longer usesopts.extensionsor shares the native lookup. Before,wasi-wasm32yielded.bareand.nodecandidates, ahead of linked addons. - Fixed: a
deferred:entry in theresolutionsmap is ignored for an addon, and resolution continues as if the map had no entry. Before, the entry was resolved as a module, sodeferred:.could yield a JavaScript file, such as theindex.jsof the package, instead of an addon.
bare-assert — v1.3.0
- Added:
deepStrictEqual(),notDeepStrictEqual(), andpartialDeepStrictEqual();throws(),doesNotThrow(),rejects(), anddoesNotReject(); andmatch(),doesNotMatch(), andifError(). See bare-assert. - Changed: the minimum Bare is 1.32.0, because
bare-assertdepends onbare-typev1.3.0 or later, which requires it. An older Bare refuses to loadbare-assertwithUNSUPPORTED_ENGINE. A fresh install of v1.2.0 already has the same requirement, because it pulls inbare-typethroughbare-inspect. - Fixed:
AssertionError.codeis'ASSERTION'instead ofundefined, and the type declarations now includefail()andnotOk().
bare-bluetooth-android — v0.11.3
- Breaking (v0.11.0):
new Server()no longer opens the GATT server. Callserver.open()onceserver.stateis'on', and again each time the adapter returns to'on', then add the services again. Without it,addService(),respondToRequest(), andupdateValue()throwGATT server unavailable.server.close()closes the server. See bare-bluetooth-android. - Added (v0.10.0):
central.getBondedDevices(), atypeproperty onDevicewith theDEVICE_TYPE_*constants, andnew Peripheral({ device }), which connects to a device without scanning.scanResult,rssi, andserviceDataarenullfor such a peripheral. - Added:
BluetoothErroris exported from the package root, and theCentralandServerconstructors throw it with the codeADAPTER_UNAVAILABLEon a device with no Bluetooth adapter. - Changed (v0.11.1): a failed
L2CAPChannelwrite destroys the stream with the error instead of throwing fromwrite(), and native channel errors and close destroy the stream instead of being emitted directly. Listen for'error'on the channel. - Changed (v0.9.3): the native build no longer pins
ANDROID_PLATFORMtoandroid-34, and the prebuilds no longer listlibnativehelper.soas a needed library. - Changed (v0.11.2): the prebuilds link the C++ standard library statically and no longer list
libc++_shared.soas a needed library. - Fixed (v0.9.2): a peripheral drops its
read,write,notify, andnotifyStateevents for a characteristic that it did not discover, instead of emitting them with anullcharacteristic.
bare-bluetooth-apple — v0.7.0
- Added (v0.6.0):
central.retrievePeripherals(ids)andcentral.retrieveConnectedPeripherals(services), which returnRetrievedPeripheralentries without scanning.central.connect()andcentral.disconnect()accept them, so a saved peripheral id can be reconnected without a scan. See bare-bluetooth-apple. - Changed:
CentralandPeripheralManagerno longer let the system show its Bluetooth power alert when Bluetooth is off. Pass{ showPowerAlert: true }to the constructor to restore it.
bare-dns — v2.3.0
- Breaking: the minimum Bare is now 1.33.0 (was 1.7.0) on every platform, in a minor release. An older Bare refuses to load
bare-dnswithUNSUPPORTED_ENGINE. - Added: DNS resolution on Android. When the addon first loads, it reads
bare.android.jvm.v1andbare.android.context.v1from the embedder context and gives the Java VM and the connectivity manager to c-ares. It skips this step without an error if a key is missing. See Android.
bare-fs — v4.8.4
- Changed (v4.8.3):
fs.cp(),fs.cpSync(), andfs.promises.cp()copy symbolic links as links instead of skipping them. A link replaces a file or link at the destination, but copying over a directory throwsEEXIST. Special files such as named pipes throwENOTSUPinstead of being skipped silently. See bare-fs. - Fixed (v4.8.3): on Windows,
fs.symlink()andfs.symlinkSync()without atypeno longer create a junction for an existing target that is not a directory. A directory target gives a directory link, and anything else gives a file link. - Fixed: the millisecond timestamps of
Stats, and theDatevalues that go with them, are computed with 64-bit arithmetic, so they no longer overflow when the seconds value is held in 32 bits.
bare-make — v2.1.0
- Breaking (v2.0.0): the macOS, iOS, Linux, and
win32targets use the Clang fromllvm-runtimeand, for the targets that assemble with NASM, the NASM fromnasm-runtime, instead of a compiler found on the machine, such as Apple Clang on macOS. The Android and MinGW targets still use the Android NDK and a MinGW compiler found onPATH.nodemust be onPATHwhen you generate a build system for one of the targets that changed, including whenbare-makeruns on Bare. Without it,generate()rejects withGENERATE_FAILED. See Toolchain. - Breaking (v2.0.0):
generate()passes the flags it adds forsanitize,fuzz,color, anddebugbuilds through theCFLAGS,CXXFLAGS, andLDFLAGSenvironment variables instead ofCMAKE_C_FLAGSand the linker flag cache entries. They now append to flags already in the environment, and they apply to C++ as well as C. CMake reads the variables only when it first configures a build tree, so callinggenerate()again on an existing tree with a differentsanitizevalue leaves its flags as they were. Setcachetofalse, or pass--no-cache, to configure the tree again. See Compiler and linker flags. - Breaking (v2.0.0): the
bare-processdependency is gone. The JavaScript API still runs on Bare, but running the CLI,bin.js, throughbarefails withMODULE_NOT_FOUNDforprocess. - Added:
make.test.env()andbare-make test env, which return or print the environment variables that the test launcher adds or changes, so that programs run outside CTest can apply them.generate()now always setsCMAKE_PROJECT_INCLUDEto record the launcher, and aCMAKE_PROJECT_INCLUDEentry indefineis kept and runs first. See Environment. - Added: the
wasi-wasm32target, selected withplatform: 'wasi'andarch: 'wasm32', which needs the optionalwasi-sysrootpackage and builds executables with the.wasmsuffix. The target comes fromcmake-toolchainsv2.1.0, whichbare-makev2.1.0 is the first release to require. With an oldercmake-toolchains, such as the onebare-makev1.8.0 uses,generate()rejects the target withUNKNOWN_TOOLCHAIN. - Changed: the musl targets need the optional
musl-sysrootpackage instead of a musl cross compiler onPATH. - Fixed (v2.0.1): on
win32,sanitizealso passes/OPT:NOICFto the linker, so identical code folding no longer causes false AddressSanitizer one-definition-rule reports.
bare-module — v7.4.0
- Breaking (v7.2.2): a bundle serves only the modules under its mount, which is the URL of the bundle followed by
/. A module outside it, such as a key of/../bar.jsor an absolute URL that the mount does not cover, is read through the protocol and fails withMODULE_NOT_FOUNDif the protocol does not have it. In v7.2.1 the bundle served its own copy. A bundle with absolute keys outside its own URL needs themountoption from v7.3.0. See Loading bundles. - Added (v7.3.0): the
mountoption, the URL that the entry bundle is mounted at, onModule.load(),Module.loadSync(), and the loader'slink(),linkSync(),import(), andimportSync(). A value that is not a URL throws aTypeError.Bare.Threadforwards its ownmountoption to it. - Added:
Module.load()andModule.loadSync()accept an already parsedBundleas thesource. In v7.3.0, passing one threw a misleadingMount must be a URLTypeError. - Fixed (v7.2.2): a
.bundleloads through an asynchronous protocol instead of throwingUNEXPECTED_PROMISE, andrequire()of a missing literal specifier through one throwsMODULE_NOT_FOUND, andrequire.asset()throwsASSET_NOT_FOUND. A specifier computed at run time still throwsUNEXPECTED_PROMISE. See Asynchronous protocols. - Fixed (v7.2.1): loaders that share a
cacheand read through the default protocol no longer throwCACHE_INCOMPATIBLEwithCache is read through a different protocol, which a secondModule.load()with the samecachehit.loader.patch()leavesloader.protocolas it was, and a loader that shares the cache also reads the patch.
bare-module-resolve — v1.12.6
- Fixed: a target that is a URL, such as
deferred:dornode:fs, in aresolutionsorimportsmap that resolves to nothing no longer falls through to a package lookup, soreadPackageis not called for a package named after the target, such asnode_modules/deferred:d/package.json. See bare-module-resolve.
bare-module-traverse — v2.6.0
- Added: WebAssembly addons. A
.wasmaddon is traversed as an addon, andtraverse.resolve.baredefaultshoststo[host, 'wasi-wasm32'], so a package with no native build falls back toprebuilds/wasi-wasm32/<name>.wasm. See WebAssembly addons. - Added: the
hostandwasiimport attributes,traverse.assertAddonContext(), and the errorsUNKNOWN_ADDON_HOST,ADDON_HOST_INCOMPATIBLE, andADDON_WASI_INCOMPATIBLE. - Breaking:
traverse.preresolved()takes a newattributesargument before the resolutions map, which breaks direct callers. - Changed: with
traverse.resolve.bareand nohosts, thewasiandwasm32conditions in packageexportsandimportsare matched and recorded next todefault. - Fixed: the
typeimport attribute is applied to imports resolved through aresolutionsmap, and addons listed in aresolutionsmap are typed as addons whatever their extension.
bare-pack — v2.2.4
- Added: WebAssembly addon bundling, through
bare-module-traverse~2.6.0. Withresolve.bareand nohosts,pack()falls back to the.wasmbuild of a package with no native build and embeds it like a native addon. The CLI takes the host platform by default, so pass--host wasi-wasm32next to the native hosts to bundle it. See WebAssembly addons. - Changed (v2.2.3):
pack()callsreadModuleat most once per URL, which avoids reading the samepackage.jsonrepeatedly.
bare-sidecar — v0.5.8
- Added: the
stdiooption,'pipe','inherit', or'ignore', for all three standard streams or for each one. A sidecar can now write to the host's streams or discard them. Earlier versions always piped them, and an unread pipe could block the sidecar. See Standard streams. - Changed: the bundled Bare runtime is v1.34.1, up from v1.34.0.
bare-stow — v0.1.7
- Changed (v0.1.6):
basedefaults to the closest directory that contains every module in the bundle. It was the directory that containsentryfor the API and the working directory for the CLI, so a bundle could hold keys such as/../node_modules/...whennode_modulessat in a parent directory of the entry. An explicitbasethat does not contain every module makesstow()throwModule '<url>' is outside base '<base>'. See bare-stow. - Changed (v0.1.6): the
start()of thebare-sidecartarget inherits the standard streams of the host by default, so the console output of the bundle is shown. Passstdioto override it. This needsbare-sidecarv0.5.8 or later, because earlier versions ignorestdio. - Fixed:
ipc.ready, and so the harnessstart(), rejects withWorker exited with code <code> before readyorWorker closed before readywhen the worker exits or the transport closes first, instead of staying pending forever.
bare-subprocess — v6.2.2
- Changed:
subprocess.kill()returnstrueif the signal was sent andfalseif the child had already exited. It can be called more than once, and it setssubprocess.killedonly when it returnstrue. See bare-subprocess. - Fixed: a parent that called
kill(0)on a child no longer waits for the child at teardown, because the child now receivesSIGTERMif it is still running. - Fixed (v6.2.1): a
spawn()that fails, for example for a command that does not exist, no longer sendsSIGTERMto the whole process group of the parent when the process tears down.
bare-timers — v3.2.4
- Fixed:
timeout.refresh()on a timeout that has already fired rearms it, so the callback runs again after its delay. Before, the callback did not run again when no other timer was pending. See bare-timers.
bare-url — v2.5.5
- Changed: on Windows,
URL.pathToFileURL()handles extended-length paths such as\\?\C:\fooand\\?\UNC\server\share\foo, and throwsINVALID_ARG_VALUEfor a UNC path with an empty server name or no resource path, such as\\server. See bare-url.
react-native-bare-kit — v0.16.0
- Breaking: native addons are no longer linked automatically. Earlier releases ran
bare-linkfrom the podspec on iOS and from a Gradle task before each Android build. v0.16.0 removed both steps and its dependency onbare-link, so an app must link its own addons. See Linking native addons.
2026-09-30 — Bare v1.34.1
- Breaking: the minimum macOS is now 13.0 (was 12.0) and the minimum iOS is now 15.0 (was 14.0), in a patch release. See Supported platforms.
- Changed: bundles
bare-modulev7.2.0, which addsloader.patch()andloader.evict()for cache eviction and accepts animportsattribute inrequire.resolve()andimport.meta.resolve().
2026-09-28 — Bare v1.34.0
- Added:
bare_poll(), which runs the event loop without blocking so a host loop that owns the thread, a UI run loop for example, can drive Bare. See Embedding. - Added:
bare_attach()andbare_detach(), for calling into JavaScript from embedder code that Bare did not call. Seebare_attach()andbare_detach(). - Changed: bundles
bare-modulev7.1.0, which exposes the graph-wide resolutions map asmodule.resolutions, along withbare-subprocessv6.2.0,bare-structured-clonev2.0.1, andbare-typev1.4.0.
2026-09-14 — Bare v1.33.0
- Added: an embedder context API, letting the embedder pass state to addons. Reaching it from a deferred
new Addon()call needs v1.33.2. - Fixed (v1.33.1): a prefix with a trailing
/is always treated as a directory. - Changed:
bare-moduleis bumped to v7, so the module system no longer carries its own file system read capability—the embedder must pass one in. See the threat model for what this changes. - Changed:
resolutionsandimportsare no longer read frommodule.
2026-09-07 — Bare v1.32.0
- Added:
Bare.Addon.seal(), letting an embedder permanently freeze dynamic addon loading in a process after loading a trusted set of addons—so any JavaScript that runs afterward can't bring in new native code. Statically linked addons are unaffected, andBare.Addon.sealedreports whether the process is sealed. - Added:
new Thread(callback)runs a function body on the new thread, andnew Thread(filename, source[, options])takes the source positionally. SeeBare.Thread. - Deprecated:
ThreadOptions.source, in favor of the positional form.Thread.create()stays deprecated, as it has been since v1.31.0—usenew Thread().
2026-09-01 — Bare module updates
bare-type — v1.1.1
- Breaking:
type.createTag(),type.addTag()andtype.checkTag()removed, with no replacement, in a patch release. See bare-type.
2026-08-04 — Bare v1.31.0
- Deprecated:
Addon.cache,Addon.resolve(specifier), andAddon.load(url), in favor ofnew Addon(url), andThread.create(), in favor ofnew Thread().bare-modulev7 will use the new API to take over addon resolution, initialization, and caching.
2026-07-01 — Bare v1.30.0
- Added: TypeScript module support.
- Changed: module caches are isolated; addon resolution now relies only on
bare-module's public API.
Patch releases in this window (dependency bumps, prebuild updates) and most of Bare's ecosystem modules (bare-buffer, bare-http1, bare-inspect, etc.) aren't covered yet—that backfill is in progress as a separate effort across Bare, P2P, and Pear. See each module's GitHub releases for the raw upstream record in the meantime.
See also
- Pear's release overview—
pearCLI andpear-*module releases. - P2P's release overview—Hypercore, Hyperdrive, HyperDHT, Corestore, and other P2P building-block/helper-module changes.
- Building blocks reference—current API for P2P modules.
- Helpers reference—current API for P2P helpers.
Last updated on