daslang.io: the cross-language page carries dasProfile's Zig lane, a startup board, and the Linux record - #3962
Conversation
…asProfile's ZIG lane after C++ on the AOT or JIT board, and the page's copy counts eight runtimes with C++ and Zig as the native floor; the provenance line names the zig version when the record carries one
…e's Startup section, one row per program, the wall time of one launch as a script, under the JIT, as a standalone exe and as its zig twin, with the artifact size on the exe cells; the hero counts three boards
…launch time in every language on the boards, from the record's Startup section, the artifact size beside an exe lane's time; the hero says what the third board is
…ane builds at the configuration's default optimization, -O3 on clang and gcc, /O2 on MSVC
…the records the deploy fetched, labeled by each record's CPU, and both it and the front-page cycler list linux beside darwin and windows; pages.yml fetches the linux record too - a platform whose record is missing is dropped client-side
…tches and that a missing one is dropped client-side
489085c to
d65ed80
Compare
There was a problem hiding this comment.
🟡 Changes recommended
The workflow/docs curl commands use flags that won’t fail on upstream 404s, which can silently write invalid “JSON” files into site/files/ instead of cleanly skipping missing platforms.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Updates the daslang.io benchmarks UI and deploy pipeline to align with upcoming dasProfile records: add a Zig lane, add a Startup board, and make platform selection/rendering driven by whichever per-platform records are available (darwin/linux/windows).
Changes:
- Extend the benchmark lane definitions to include Zig (and adjust C++ labeling) in both the cross-language page and the front-page cycler.
- Add a third “Startup” board on
benchmarks.html, including optional artifact-size display and dynamic platform buttons based on fetched records. - Update Pages deploy workflow and site docs to fetch/describe
profile_results_<platform>.jsonfor darwin/linux/windows.
File summaries
| File | Description |
|---|---|
site/README.md |
Updates local dev + documentation to the new per-platform dasProfile record scheme (darwin/linux/windows). |
site/files/forge.js |
Adds Zig to the “AOT or JIT” columns and includes linux in the platform fetch list for the front-page cycler. |
site/benchmarks.html |
Adds Zig lane + Startup board and makes platform buttons/data driven by whichever records load successfully. |
.github/workflows/pages.yml |
Extends deploy-time fetch loop to include linux record alongside darwin/windows. |
Review details
- Files reviewed: 4/4 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…he file on failure - without -f a missing record upstream wrote the 404 body as profile_results_<platform>.json and the warning never printed; the README's local snippet does the same
There was a problem hiding this comment.
🔵 Needs a closer look
site/benchmarks.html currently accumulates startupOrder with possible duplicates (can render duplicate rows) and site/README.md has an internal inconsistency about the optional Windows record.
Review details
Suppressed comments (2)
Previously missed (2) — in code that hasn't changed since the last review.
site/benchmarks.html:517
- In normalize(),
out.startupOrderis appended to for every entry in theStartupsection, which can produce duplicate lane names if the upstream JSON ever contains multiple Startup tests (or repeats a language). That would render duplicate rows in the Startup board and makes the order unstable. Deduplicate while preserving first-seen order.
site/README.md:35 - The file-tree listing omits
profile_results_windows.json, but later the README describesprofile_results_<platform>.jsonfordarwin,linux, andwindowsand provides a curl loop that fetcheswindowstoo. Listing the Windows file here (as optional/may be missing upstream) keeps the documentation internally consistent.
- Files reviewed: 4/4 changed files
- Comments generated: 0 new
- Review effort level: Lite
Behavior change: the cross-language page and the front-page cycler render whichever of the darwin, linux and windows records the deploy fetches from dasProfile - once borisbat/dasProfile#14 lands, that is macOS (M1 Max) and Linux (zen4), each with a Zig column and a startup board, and no Windows entry until a Windows capture lands.
Why. dasProfile gains a zig lane, a startup table (hello world in every language on the boards) and a Linux record, and drops the old Windows one; the page that renders its records has to know all of it.
What changes.
LANES["AOT or JIT"]and the front-page cycler'sBENCH_COLScarryZIGafter C++; the C++ label carries no flag (the lane builds at the configuration's default optimization); the page's copy counts eight runtimes with C++ and Zig as the native floor; the provenance line names the zig version when the record carries one.startup, one row per runtime:startupRowsreads the record'sStartupsection (itshello worldrow, one entry per language, in the record's order), a cell shows the launch time with its spread and, on an exe lane, the artifact size; the hint says what a row is.linux;pages.ymlfetches the linux record too; a platform whose record is missing upstream is dropped client-side.site/README.mdsays so.Observable behavior.
Zigcolumn of-and an empty startup board.Where to look.
site/benchmarks.html-LANES,STARTUP_LABELS,PLATFORM_ORDER,normalize,startupRows,render;site/files/forge.js-PLATFORMS,BENCH_COLS;.github/workflows/pages.yml- the fetch loop.Validation, claims, ledger
Validation
python3 -m http.serverinsite/, the records staged asfiles/profile_results_<platform>.json) with two and with three platforms;site/REVIEW.dasgreen; the fast preflight gates (untracked, format, review-md, md-ascii, hash-refs) green.Not done