aipooljs Changelog
This content is not available in your language yet.
[Unreleased]
Section titled “[Unreleased]”[0.5.5] - 2026-06-08
Section titled “[0.5.5] - 2026-06-08”Changed
Section titled “Changed”- Project home migrated to the
isluminaGitHub org; the package is now published from there via npm trusted publisher (OIDC + SLSA provenance). Family-wide version alignment at0.5.5— no runtime or API changes.
[0.5.2] - 2026-06-05
Section titled “[0.5.2] - 2026-06-05”- Review-driven documentation fixes (
README.md,README_ZHTW.md,llms-full.txt; plus repo-onlySTABILITY.md): clarity and accuracy from a cross-package code review. No runtime or API change;distbyte-identical to 0.5.1.
[0.5.1] - 2026-06-02
Section titled “[0.5.1] - 2026-06-02”src/index.ts(borrowJSDoc): documented INV7 — dispose-during-borrow invariant. Ifdispose()is called while an async borrow is in-flight, thefinallyblock’srelease()throwsPoolDisposedError, which masks the originalfnresult or error. Explicit guidance: do not dispose a pool that has active borrows.src/index.ts(OverflowHandlerJSDoc): added infinite-recursion hazard warning for the function-handler form. Callingpool.acquire()from within the handler without first making a slot available causes unbounded recursion; the handler is responsible for ensuring capacity before any nested acquire.
test/borrow.test.ts(Br20): regression test locking in INV7 —dispose()called while an async borrow is in-flight causes the borrow to reject withPoolDisposedErrorregardless offn’s outcome.test/property.test.ts(P1 comment): added note that thealive + available === sizeproperty holds only under fixed-capacity modes; under'grow'the bound is the current (doubled) capacity. See P3.test/property.test.ts(P3): new property test for the'grow'invariant — across a sequence of grow-triggered acquires,alive + availableequals the current (doubled) capacity with no phantom slots.
[0.4.0] - 2026-05-29
Section titled “[0.4.0] - 2026-05-29”Dependency-hygiene + stability-freeze release, part of the ai*js family-wide v0.4.0
dependency-reduction cycle. No runtime API addition. Production bundles are
byte-identical to 0.3.1 (dist/index.js 869 B gzip); the public surface is unchanged.
Changed
Section titled “Changed”- Removed unused
tsxdevDependency.depcheckconfirmedtsxwas not referenced by any script, config, or source file.pnpm-lock.yamlis pruned accordingly — smaller install graph and reduced CI supply-chain surface. Runtime/peer dependencies remain zero.
STABILITY.md: the 0.3.x stable surface (createPool/PoolOptions/Pool/NullPool/OverflowHandler/PoolError/PoolDisposedError/onOverflow/borrow+ its 6 invariants) is now declared 1.0-track frozen — these signatures will not change before 1.0 and are guaranteed stable across the 1.x line once 1.0 ships. The polymorphic-chunked-pool remains a draft (target v0.6+).
pnpm auditclean — no transitive advisories.- Backward-compatible minor: no exports removed, no signatures changed, no error
name/codechanges, no default-behaviour changes.
[0.3.1] - 2026-05-29
Section titled “[0.3.1] - 2026-05-29”- F1 — borrow synchronous-abort during fn: if
fncallssignal.abort()synchronously before its firstawait, theabortevent fires before theaddEventListener("abort", …)listener is attached, causing the rejection to be silently dropped. A post-attachif (signal.aborted) onAbort()guard now catches this case, ensuring the borrow rejects withAbortErrorand the slot is released immediately (not deferred untilfnsettles). - F2 — ‘grow’ is now atomic on
create()failure: the grow loop previously pushed each newly created object straight intoavail, so a mid-growcreate()throw left partial slots committed (breaking thealive + available === sizeinvariant). The loop now builds into a temporarygrown: T[]array and only commits toavailandcapacityonce all allocations succeed.
Changed
Section titled “Changed”- Size budget
dist/index.js: 850 B → 900 B (accommodates F1/F2 correctness fixes; error-message strings retained — no golfing).
STABILITY.md: addedOverflowHandler<T>andNullPool<T>to the Stable section (both were already exported and documented in 0.3.0; the omission was an oversight).CONTRIBUTING.md: updated stale ”≤ 500 B gzip” / “past 500 B” guidance to ”≤ 900 B”.
[0.3.0] - 2026-05-29
Section titled “[0.3.0] - 2026-05-29”onOverflowoption ('throw' | 'null' | 'grow' | (pool) => T) onPoolOptions<T>. Default remains'throw'— fully backward-compatible.NullPool<T>interface and overloadedcreatePoolfactory:onOverflow: 'null'narrowsacquire()return type toT | nullat compile time.OverflowHandler<T>type exported.borrow(fn, opts?)helper onPool<T>: auto-releases viatry/finally, with opt-inAbortSignalcancellation. Sync and asyncfnboth supported. Six stability invariants documented inSTABILITY.md.STABILITY.md— stable API surface + borrow invariants + polymorphic-chunked-pool draft placeholder.
Changed
Section titled “Changed”- Size budget
dist/index.js: 700 B → 850 B (accounts foronOverflowdispatch +borrowasync/abort machinery).
- README roadmap:
borrow+onOverflowmoved from the never-shipped 0.2.0 row to 0.3.0. - README status line: “0.1.0 published” → “0.3.0 published”.
- README Capabilities table: “Auto-grow (overflow throws PoolError)” updated to reflect opt-in
onOverflow('grow'available; default still throws). STABILITY.mdadded tollms-full.txtviascripts/build-llms-full.mjs.
[0.1.1] - 2026-05-28
Section titled “[0.1.1] - 2026-05-28”Changed (CI)
Section titled “Changed (CI)”publish.ymlnow triggers onpush: tags: ["v*"](wasworkflow_dispatchonly). Aligns with the trigger used byaifsmjs/aiecsjs/aibridgejs. Tag push now automatically runs the OIDC trusted publish.npm publish --provenance --access public— the workflow now emits a sigstore provenance attestation so consumers can verify the tarball was built by this workflow on this commit.
No runtime / source / API changes. This is a CI-only patch to validate the GitHub Actions OIDC trusted-publisher pipeline now that the npm trusted publisher entry is configured. Production bundles are byte-identical to 0.1.0.
[0.1.0] - 2026-05-28
Section titled “[0.1.0] - 2026-05-28”createPool({ create, reset, size })factory — fixed-size, fail-fast on overflow.acquire()/release()/drain()/dispose()lifecycle.- Double-release detection via
Set-tracked alive set; offendingrelease()throwsPoolError. dispose()is idempotent; subsequentacquire()/release()/drain()throwPoolDisposedError.alive/available/disposedread-only counters.- Test coverage ≥95% statements / lines / functions / ≥90% branches.
- Size budget: ≤500 B gzip (raised to 700 B if strict-TS overhead pushes past 500 B).
- Dual ESM + CJS build via
tsupwithminify: true;sideEffects: false; zero runtime dependencies.
[0.0.1] - 2026-05-28
Section titled “[0.0.1] - 2026-05-28”Added (scaffold)
Section titled “Added (scaffold)”- Full package scaffold landed (
package.json,tsconfig.json,tsconfig.test.json,tsup.config.ts,vitest.config.ts,biome.json,scripts/{verify-exports,check-size,build-llms-full}.mjs,test/scaffold.test.ts,examples/.gitkeep,.github/workflows/{ci,publish}.yml,llms.txt,llms-full.txt). src/index.tsremains athrowstub exposing the frozen 0.1.0 API surface (createPool,Pool<T>,PoolOptions<T>,PoolError,PoolDisposedError).pnpm typecheck && pnpm lint && pnpm coverage && pnpm build && pnpm verify:exports && pnpm verify:llms && pnpm check:sizewalks clean against a single placeholder test.- Coverage thresholds temporarily set to
0/0/0/0; tightened to95/90/100/100in 0.1.0 with real tests. - Size budget temporarily set to 3 KB gzip; tightened to the 500 B README target in 0.1.0.
- Publish workflow exists but trigger is
workflow_dispatchonly — no accidental npm release on tag push until 0.1.0.