Skip to content

Releases: nigrosimone/fulmine.js

v5.25.9

Choose a tag to compare

@github-actions github-actions released this 25 Oct 18:16

5.25.9 (2026-10-25)

Performance Improvements

  • load mime-db, qs, fast-zlib and acorn on first use, release acorn after listen: about a megabyte less old generation, out of the full collections V8 starts past 8 MB (28d0be6)
  • make String.prototype fast again at listen, a class extending String (ioredis has one) leaves it slow, -13% instructions on a GET (06e677d)
  • read Buffer from the buffer module, the global is a getter (067b966)
  • response: connection headers from the hot settings, close called directly (147420d)

v5.25.8

Choose a tag to compare

@github-actions github-actions released this 25 Oct 10:53

5.25.8 (2026-10-25)

Performance Improvements

  • body: avoid unused streaming state in native parsers (a9e99c8)
  • compression: avoid compressor allocations on identity responses (802b36a)
  • req: the body stream is subscribed only when no parser collected it natively, -2.7% instructions on a POST (466792a)
  • uws: pin the optimized binaries commit (295463d)

v5.25.7

Choose a tag to compare

@github-actions github-actions released this 21 Oct 05:56

5.25.7 (2026-10-21)

Performance Improvements

  • compression: brotli reuses one encoder through the native handle on node 26.11+, 57us against 84 (609001a)
  • req: header names go to uWS getHeader as Buffers, half the cost of a read, -12% instructions on a GET (a651e2d)
  • res: res.type() keeps the Content-Type it stored per argument, -4.5% instructions on a GET (4df4fa2)

v5.25.6

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:08

5.25.6 (2026-10-20)

Performance Improvements

  • compression: a body compressed whole overwrites Content-Length, no delete turning the headers to dictionary mode (51be52b)

v5.25.5

Choose a tag to compare

@github-actions github-actions released this 20 Oct 11:08

5.25.5 (2026-10-20)

Bug Fixes

  • override writes pnpm-workspace.yaml for pnpm and works on bun, benchmarks run in production, Sentry is tested in CI (8315d05)

Performance Improvements

  • query: req.query keeps fast properties, Object.create(null) was dictionary mode, a for-in is 3x cheaper (cda131e)

v5.25.4

Choose a tag to compare

@github-actions github-actions released this 18 Oct 18:35

5.25.4 (2026-10-18)

Bug Fixes

  • app: the app methods sit on its direct prototype as in express, so a library copying its own onto the app (Feathers) no longer writes over app.get (55e7eba)
  • res: an empty write before end() no longer drops the body, the way express-session ends a response (a17fb4f)

v5.25.3

Choose a tag to compare

@github-actions github-actions released this 17 Oct 22:29

5.25.3 (2026-10-18)

Bug Fixes

  • router: an app handed to a Router's use() is not mounted, it keeps its own settings as in express (e2fc676)
  • router: next('route') in a callback of use(path, f1, f2) goes on to f2, each callback is a layer to express (a56c474)
  • router: req.baseUrl a middleware assigns lives in its router, express restores and resets it on the way out (aafd9db)
  • res: send() sets Content-Length before end() as express, and res.end() alone puts none in the headers (5e04e5d)

v5.25.2

Choose a tag to compare

@github-actions github-actions released this 17 Oct 17:36

5.25.2 (2026-10-17)

Performance Improvements

  • router: a router's get('/') and get('/:id') are both native, a parameter never takes an empty segment (8e01038)

v5.25.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 07:25

5.25.1 (2026-10-17)

Performance Improvements

  • static: a small file is read whole and cached with no file thread too, which one core gets (c468853)
  • req: a trust proxy list answers each address once, proxy-addr parsed it on every req.ip (8a5b080)

v5.25.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 05:13

5.25.0 (2026-10-15)

Features

  • cluster: "auto" on one core forks nothing and the one process serves, cluster: 1 still forks a worker (e185de6)
  • cluster: app.cluster.serves, false only in the primary, so a pool is opened where requests are served (66d5d71)
  • cluster: app.cluster says how many workers serve and which one this is, share(total) splits a budget like a pool (44b90ce)

Bug Fixes

  • req: req.ip read late in a mounted app is read up front from then on, the root learns it too (f31d41f)
  • server: a request answered in a mounted app leaves the in-flight list, so close() completes (5e570d4)
  • static: "" splits a path only on windows, and a ".." out of the root is a 403 before the stat, as in send (c43a22c)
  • static: an index whose name starts with a dot is served, send checks dotfiles only on the path asked for (4749861)

Performance Improvements

  • socket: the peer's port is kept at the end only if the app asks for it late, as req.ip (1308951)
  • static: sendFile takes the file express.static joined to its root, no path.resolve (d28ebdf)
  • res: a file's Last-Modified and ETag kept by mtimeMs, no Date built per request (312425c)