• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Kikobeats / router-http
99%

Build:
DEFAULT BRANCH: master
Repo Added 25 Feb 2023 02:39PM UTC
Files 1
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH master
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • Kikobeats/benchmark-baseline
  • Kikobeats/perf-dispatch
  • cursor/critical-bug-management-7168
  • cursor/critical-bug-management-89e0
  • cursor/critical-bug-management-a495
  • cursor/critical-bug-management-c06d
  • cursor/critical-bug-management-cb05
  • cursor/critical-bug-management-d803
  • dependabot/github_actions/actions/checkout-5
  • dependabot/github_actions/actions/checkout-7
  • dependabot/github_actions/pnpm/action-setup-5
  • dependabot/github_actions/pnpm/action-setup-6
  • dependabot/github_actions/pnpm/action-setup-6.0.9
  • dependabot/npm_and_yarn/express-5.3.0
  • dependabot/npm_and_yarn/find-my-way-9.10.0
  • dependabot/npm_and_yarn/find-my-way-9.4.0
  • dependabot/npm_and_yarn/find-my-way-9.5.0
  • dependabot/npm_and_yarn/find-my-way-9.6.0
  • dependabot/npm_and_yarn/find-my-way-9.7.0
  • dependabot/npm_and_yarn/find-my-way-9.8.0
  • fix/use-mount-path-matching
  • master
  • next
  • subrouter

27 Oct 2026 10:01PM UTC coverage: 98.929% (+0.2%) from 98.755%
40591568377

push

github

web-flow
perf(dispatch): keep per-request loop state in one object (#45)

* perf(dispatch): keep per-request loop state in one object

Every request allocated a closure context holding ~20 mutable slots plus
three closures (leaveFrame, handleNext, executeLoop). The loop functions now
live once per router and take a Dispatch instance; a request allocates that
object and a single `next` callback. GC self time in a 3M-request profile
went from 159ms to 30ms.

Dispatch is a class rather than an object literal: as a literal, V8's
allocation-site pretenuring flip-flopped and deoptimized the request path
repeatedly (228ns vs 102ns per request).

A/B, benchmark/index.js, 8 alternating runs per side, median of medians (ms
per 1M requests), node v24.16.0 arm64, load1 12.8-21.4:

| case | base | change | delta |
|---|---|---|---|
| static route | 62.2 | 49.4 | -20.6% |
| param route | 121.3 | 110.1 | -9.2% |
| param route 2 middlewares | 148.0 | 139.9 | -5.5% |
| not found | 80.3 | 73.6 | -8.3% |
| control raw find-my-way | 82.9 | 82.1 | -1.0% |

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(dispatch): lock branches the loop move left untested

Removing the slash restore, the sync yield, the frameEntered guards, or
the null check left the suite green. Those inputs now fail if the check
is dropped. The path-prefix clamp is gone because substring already
stops at the end of the path.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

209 of 214 branches covered (97.66%)

Branch coverage included in aggregate %.

213 of 213 new or added lines in 1 file covered. (100.0%)

622 of 626 relevant lines covered (99.36%)

2630.38 hits per line

Relevant lines Covered
Build:
Build:
626 RELEVANT LINES 622 COVERED LINES
2630.38 HITS PER LINE
Source Files on master
  • Tree
  • List 1
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
40591568377 master perf(dispatch): keep per-request loop state in one object (#45) * perf(dispatch): keep per-request loop state in one object Every request allocated a closure context holding ~20 mutable slots plus three closures (leaveFrame, handleNext, executeL... push 27 Oct 2026 10:02PM UTC web-flow github
98.93
40590734643 Kikobeats/perf-dispatch Merge fb14d50be into 0a7ae80d8 Pull #45 27 Oct 2026 09:55PM UTC web-flow github
98.93
40569832214 Kikobeats/perf-dispatch Merge 533456865 into 0a7ae80d8 Pull #45 27 Oct 2026 07:31PM UTC web-flow github
98.81
40557924114 Kikobeats/benchmark-baseline Merge 44661884f into b5902dced Pull #44 27 Oct 2026 06:13PM UTC web-flow github
98.75
38529264765 master build(deps): bump find-my-way from 9.9.0 to 9.10.0 (#42) Bumps [find-my-way](https://github.com/delvedor/find-my-way) from 9.9.0 to 9.10.0. - [Release notes](https://github.com/delvedor/find-my-way/releases) - [Commits](https://github.com/delvedo... push 14 Oct 2026 07:35AM UTC web-flow github
98.75
38528564777 master build(deps-dev): bump express from 5.2.1 to 5.3.0 (#43) * build(deps-dev): bump express from 5.2.1 to 5.3.0 Bumps [express](https://github.com/expressjs/express) from 5.2.1 to 5.3.0. - [Release notes](https://github.com/expressjs/express/release... push 14 Oct 2026 07:29AM UTC web-flow github
98.75
38528537843 dependabot/npm_and_yarn/express-5.3.0 Merge 32e47f241 into e13bb3014 Pull #43 14 Oct 2026 07:28AM UTC web-flow github
98.75
38473630375 dependabot/npm_and_yarn/express-5.3.0 Merge 15121952c into e13bb3014 Pull #43 13 Oct 2026 09:51PM UTC web-flow github
98.75
38473587557 dependabot/npm_and_yarn/find-my-way-9.10.0 Merge 39e65d17e into e13bb3014 Pull #42 13 Oct 2026 09:51PM UTC web-flow github
98.75
34371650208 master fix: stop unmatched Express-style final handlers from looping (#41) A top-level 4-arg finalhandler that does `if (!err) return next()` was handed handleNext on unmatched routes, so next() re-entered the dispatch loop forever and hung the client. ... push 09 Sep 2026 03:40PM UTC web-flow github
98.75
See All Builds (125)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc