All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.8.14 (2024-11-18)
- use performance.now() for timestamping with node (0497b2c)
0.8.13 (2024-10-27)
- fix throughput samples imputation in corner case (8de3cc7)
- avoid variable affectation (eb35407)
- README.md: add missing warmupTime options (356d72d)
- ci: handle various release type on npm registry (7cf519d)
0.8.12 (2024-10-21)
- add warmup minimum execution time option (7718d34)
0.8.11 (2024-10-20)
- bind timestamping method to their modules once (3cfcc9b)
- bind timestamping functions to their module (dffe3f0)
0.8.10 (2024-10-19)
- factor out statistics computation from samples (3c2a41f)
0.8.9 (2024-10-18)
- add after/before each function iteration hooks (c7543ae)
- cleanup benchmark building (aff9b96)
- refine measure() comment (b3910a0)
0.8.8 (2024-10-18)
- improve statistical accuracy (ab1753f)
0.8.7 (2024-10-18)
- handle corner case promise like benchmark function (ad9c3be)
- promise like rejection without catch handling (57de829)
0.8.6 (2024-10-17)
- avoid duplicate benchmark run (61c8eb2)
0.8.5 (2024-10-16)
- properly handle nullish arg in isAsyncFunction() (79aa988)
- properly handle promises in benchmark (f7ee29e)
- freeze Student tTable (d7d3b8f)
- README.md: refine example code (0d9762d)
0.8.4 (2024-10-10)
- handle divide by zero in throughput samples (7d6d9fe)
- cleanup custom now() (4b041d2)
- ci: switch to deno 2.x.x (cf495ef)
0.8.3 (2024-10-08)
- add CommonJS support (8825565)
0.8.2 (2024-10-04)
- refine latency MAD display and warning conditions (ab2cf96)
- refine throughput warning condition (5d19f0a)
0.8.1 (2024-10-04)
- format iters/s warnings properly (175d7f6)
0.8.0 (2024-10-04)
- add custom benchmark reporter support
- untangle latency and throughput (stats, display, ...)
- fix reporter type definition (6c2979c)
- cleanup isFunction() helper implementation (8c679f4)
- untangle latency and throughput (stats, display, ...) (683588f)
- use isFunction() in more code paths (57e0b32)
0.7.4 (2024-10-03)
- factor out function type detection helpers (cada431)
- major restructuration to ease pluggable features (25ac409)
- reporter: simplify iters std dev computation (c13fc14)
- untangle terminal display primitives from main code (40638ae)
0.7.3 (2024-10-02)
- cleanup warning message (4f02f2e)
0.7.2 (2024-10-01)
- allow to define benchmark behavior at all levels (a86ced9)
- display explicit warning about samples statistical (82d08ea)
- refine variable name (ced909a)
- use isObject() helper in more places (d7f20f4)
0.7.1 (2024-09-30)
- add upper/lower values to BMF throughput report (4555059)
0.7.0 (2024-09-30)
- rename iter/s to iters/s (like ops/s)
- cleanup statistics helper arguments namespace (846655b)
- rename iter/s to iters/s (like ops/s) (f188e81)
0.6.4 (2024-09-30)
- do not round timestamping (bc2f605)
- display MAD when necessary in p50 percentile (4e42c6a)
0.6.3 (2024-09-29)
- fix benchmark related functions async detection (038340c)
- comment a bit benchmark stats data structure (2bcd724)
0.6.2 (2024-09-29)
- add average and median absolute deviation to stats (cdf968a)
- fix absolute deviation computation (c2ad613)
- cleanup quantile computation implementation (8279e44)
- median() -> medianSorted() (850e46c)
- refine benchmark time measurement displaying (c5e2c8e)
- rename mean() -> average() (81749fb)
0.6.1 (2024-09-29)
- call garbage collector before each benchmark (21bdbf3)
- fix gc() call on unknown JS runtime (893f960)
- fix gc() implementation on Deno runtime (b386e8a)
- improve gc() detection on browser (5146ef7)
- try to run gc() with more JS runtimes (1cef68c)
- cleanup colors in output detection (551df36)
- cleanup gc() implementation (5ebe98a)
- cleanup variables namespace (f84c010)
- deno 2.x.x support (fd39123)
0.6.0 (2024-09-26)
- remove clear() from the public API
- ensure unknown JS runtime has proper defaults (5705403)
- make standalone CLI executable generation works on Windows™ (50b3e6e)
- remove clear() from the public API (3bfdb3c)
- cleanup deps for standalone binary generation (3f2329a)
- cleanup test and cli building scripts usage (44e5b93)
- enable
.editorconfig
in biome formatter (de27a2c) - refine package.json cli:* scripts (20c9dfc)
- cli: fix
build:cli
script recursion (47aac22) - cli: run sequentially cli build scripts (44d90e0)
- sync bun packages lock file (a064be1)
0.5.7 (2024-08-08)
- add deno CLI installation section (dfd421c)
0.5.6 (2024-08-08)
- add bun single-file executable for CLI support (7961789)
- cli: print meaningful message if package.json not found (bda431f)
0.5.5 (2024-07-20)
- make benchmarks more friendly with dark theme (a85c9a6)
- fix ms conversion to ps in units cheatsheet (acd154a)
0.5.4 (2024-07-18)
- handle extrageanous space in CLI benchmarks (8b50d44)
- make node sea generation works (06fdc40)
- make node sea works which n (de36378)
0.5.3 (2024-07-11)
- add node single executable application configuration (e48ed77)
- ensure CLI standalone binary includes required files (1589024)
0.5.2 (2024-07-10)
- allow to specify the number of warmup runs (9f29086)
- cli: allow to execute custom commands at benchmarking steps (69c1fdc)
- cleanup empty function usage (007345d)
0.5.1 (2024-07-09)
- fix CLI usage documentation (33735e3)
0.5.0 (2024-07-09)
- add CLI (#8)
- ensure
file
write default JSON output to configured file (394b033)
- add ToC in README.md (abd1504)
0.4.16 (2024-07-05)
- switch to release-please release manager (234f244)
- ci: cleanup GH action (ee255e7)
- refine GH action setup-bun configuration (25382b6)
- switch biome.js configuration to standard.js style (5d9754a)
- ci: add autofix GH action (736c4f8)
- ci: do not cancel workflow on autofix.ci error (d2b04dc)
- ci: fix setup-bun configuration (a12a9d0)
- ci: really ensure tag version is not prefixed with 'v' (7dbb1be)
- ci: remove v prefix in release-please tag (1aa36d1)
- deps-dev: apply updates (51d9eea)
- deps-dev: apply updates (e8d8302)
- deps-dev: apply updates (8603c48)
- deps-dev: apply updates (0a7ace0)
- deps-dev: apply updates (0785cfc)
- deps-dev: apply updates (1f3034e)
- deps-dev: apply updates (b9bb1e0)
- deps: bump oven-sh/setup-bun from 1 to 2 (9c3fe1b)
- Fix a sanity check at benchmarks summary display.
- Ensure benchmarks summary is only displayed with two valid benchmarks.
- Maintenance release.
- Fix benchmark throughput computation.
- Add benchmark relative speed ratio error margin to summary.
- Fix
run()
warmup
option handling. - Display summary for no group benchmarks.
- Add
file
torun()
option allowing to save the JSON output to a file.
- Ensure report returned by
run()
is not cleared. - Fix
run()
json
option handling.
- Ensure report returned by
run()
is not cleared.
- Add JSON BMF benchmark report format support to allow integration with Bencher.
- Move benchmark options to
run()
.
- Fix benchmark function JSDoc type definition.
- Add
group()
asynchronous callback support.
- Fix JSDoc API description.
- Fix
bench()
andbaseline()
type definitions.
- Fix browser support.
- Fix ESM browser export.
- BREAKING CHANGE: rename the default exported file to a more de facto standardized namespace. Usage in browser is impacted.
- Add releasing on JSR.
- Fix rate computation and formatting in summary.
- Less biased timestamp rounding.
- Refine minimum number of samples for Student t-distribution.
- Add accurate two-tailed Student t-distribution table for 95% confidence level.
- Ensure default minimum samples guarantee statistical significance.
- Fix statistical significance threshold value and reporting in JSON.
- Add error margin to report.
- Remove IQR filtering since error margin permits to evaluate the results statistical significance.
- BREAKING CHANGE: rename in JSON report
std
tosd
for the standard deviation. - BREAKING CHANGE: switch percentile p999 to p995 in report.
- Align
iter/s
withtime (avg)
formatting.
- Add median (p50) to console output.
- Optimize benchmark statistics computation.
- Add
time: number
torun()
options specifying the minimum benchmark time in nanoseconds.
- Fix
measure()
asynchronous implementation. - Fix percentiles computation.
- Fix inconsistent benchmark behavior: the samples statistical significance shall be done on the same measurement base.
- Add
clear()
benchmark clearing primitive. - Optimize JavaScript runtime environment detection code (constify environment variables).
- Add IQR samples outlier detection and removal.
- Add standard deviation to JSON report.
- Add
samples: number
torun()
options specifying the minimum number of benchmark samples. - Add
options: { before: () => void | Promise<void>; after: () => void | Promise<void> }
tobench()
andbaseline()
specifying callbacks to run before and after the benchmark. - Add
options: { before: () => void | Promise<void>; after: () => void | Promise<void> }
togroup()
specifying callbacks to run before and after the group. - Add
iter/s
to report. - Add package publication GitHub workflow.