docs(web/guides): performance notes for 2.x upgraders (#3213) - #3369
Conversation
Adds an upgrading-section page documenting the measured 4.0.x per-instance mixin-integration regression reported in #3213, the #3236 fix and its measured deltas (Lucee 7 + SQLite), the June 2026 profiling baseline, and how upgraders get the fix (bleeding-edge until the v4.0.6 cut). Registered in the v4-0-0 sidebar to avoid the orphan-page trap. Refs #3213 Signed-off-by: Peter Amiri <petera@pai.com>
There was a problem hiding this comment.
Wheels Bot — Reviewer
TL;DR — This PR adds a "Performance Notes for 2.x Upgraders" guide page (performance-notes.mdx) and registers it in the v4-0-0 sidebar under Upgrading & Releases, closing the documentation gap from #3213. The page is careful, well-sourced, and sticks to measured numbers. I verified every substantive claim (the #3236 attribution, the linked pages, the frontmatter/import conventions) and they hold up. One user-facing command in a copy-paste code block is wrong/inconsistent with the rest of the guides — a non-blocking docs nit. Verdict: comment.
Docs
performance-notes.mdx:68 — wheels server start should be wheels start. The "How to get the fix" code block ends with a wheels server start line.
The branded CLI exposes the dev-server lifecycle command as wheels start (cli/lucli/Module.cfc:1002 — public string function start(); the MCP-hidden list at Module.cfc:186 registers "start", not server). server start is LuCLI's internal subcommand, not the user-facing verb. Every sibling guide page uses wheels start:
basics/routing.mdx:162,basics/migrations.mdx:29,basics/seeding.mdx:88— all point users atwheels startbasics/database-and-multiple-datasources.mdx:57—wheels stopthenwheels start
and CLAUDE.md documents the command as wheels start / wheels stop. A reader copy-pasting this block gets an inconsistent (and likely invalid) command. Change line 68 to wheels start.
What I verified (no findings)
- #3236 attribution is accurate.
git logconfirms8f73b77b5 perf(model): cache mixin-integration plan to fix per-instance overhead (#3236)— the commit the page cites for the fix. - Both linked pages exist.
/v4-0-0/start-here/release-channels/maps tostart-here/release-channels.mdx; the sidebar link/v4-0-0/upgrading/performance-notes/matches the new file's route. wheels upgrade check/wheels upgrade applyare real, documented commands (command-line-tools/wheels-commands/upgrade.mdx,upgrading/3x-to-4x.mdx:404-405).- Frontmatter and import conventions match prior art.
type: explanationis used by 5 other v4-0-0 pages; theimport { Aside } from '@astrojs/starlight/components';line is the exact string used by 18 existing pages.
Commits
Clean. Single commit docs(web/guides): performance notes for 2.x upgraders — valid type (docs), scope allowed (unrestricted), header ~52 chars, sentence-case. PR title matches and is a valid conventional-commit header. No changelog fragment is expected for a docs-only change.
Nice work keeping the page to measured numbers only and citing the profiling caveats (debug-bar overhead as a benchmarking gotcha, not a claimed reduction). Fix the one command and this is ready.
What & why
Issue #3213's literal ask — a readable 2.x-vs-4.x performance writeup — never shipped anywhere in
the guides or the blog; the measured numbers lived only in PR/issue comments. This adds
web/sites/guides/src/content/docs/v4-0-0/upgrading/performance-notes.mdx("Performance Notesfor 2.x Upgraders") and registers it in the
v4-0-0sidebar under Upgrading & Releases (avoidingthe known orphan-page trap).
Content (measured numbers only — no invented benchmarks)
environment: Lucee 5 on Tomcat) — quoted from the Wheels 2.x > 4.x Performance Comparison #3213 body.
Lucee 7 + SQLite: 2,000 ×
model().new()2,772 ms -> 1,513 ms (~1.8x), framework suite33.3 s -> ~22 s. Notes the abandoned ~5.8x prototype-clone follow-up as a dead end, per the
issue thread.
warm serving ~0.38 ms in-JVM, dev debug bar ~34% throughput cost (stated as the measured
dev-only overhead — the profiling record shows the bar costs ~34%, so the page frames it as a
benchmarking caveat rather than a shipped reduction).
v4.0.6 ships, with
wheels upgrade check/applysteps and a link to the Release Channels guide.Test evidence
pnpm run buildinweb/sites/guides— 445 pages,/v4-0-0/upgrading/performance-notes/index.htmlemitted; sidebar JSON validates.(docs-only change; suite unaffected by construction).
Scope
Docs only — no framework, CLI, or app code. No blog post (publishing admin is out of scope here).
Closure of #3213 waits on the v4.0.6 cut, which ships the #3236 fix to stable.
Refs #3213
🤖 Generated with Claude Code