Repository navigation
Rewrite the README as a front page - #15
Merged
Merged
Conversation
The old one had grown by accretion: each phase appended its news to the top, so a first-time reader met the project through whatever had most recently been built rather than through what it is. This is the usual shape for a repository people are meant to evaluate in thirty seconds — badges, a demo above the fold, a feature table, install and usage, architecture, then the deeper material. Nothing was softened to fit it. The scope note is still the second thing on the page, and "Not implemented" is now a table rather than a sentence, which makes the gaps easier to read rather than easier to miss. Every claim in it was checked against the binary rather than against memory: the key bindings against the editor's match arms, the builtins against the lookup table, the environment variables and file names against the constants, and the demo transcript through a pseudoterminal. One inconsistency surfaced while doing that. The `--benchmark` figures were measured on a debug build but appear under an install section that says `--release`, where they are about twice as fast. Both the README and docs/performance.md now report the release numbers and say which build they came from.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The budget test failed on CI's macOS runner: parsing `ls` measured 17 allocations against a ceiling of 14, while measuring 8 locally. Not a parser regression — harness noise. The counter is a global in the process, so it counts every allocation made anywhere while it runs, including ones on another thread. libtest runs each test on its own thread and formats results on the main one, and that formatting allocates. Beside one other test, `ls` measures anywhere from 15 to 62. The file already knew this and tried to fix it by collapsing every assertion into a single test, but that leaves the harness's own threads running. Filtering by thread is the obvious next move and the wrong one: asking which thread you are on means touching thread-local storage from inside the global allocator, and on some platforms the first such touch allocates, straight back into the allocator that asked. So the target sets `harness = false` and is a plain `main`. One thread, nothing else in the process, and 224 runs — 96 of them concurrent under load — produce byte-identical output. The ceilings are unchanged, since the measurements were never over them. Two things fall out. `report_measured_counts` is gone: the table now prints on every run, pass or fail, which is all that test did. And a breach reports every case that is over rather than stopping at the first.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The old README had grown by accretion — each phase appended its news to the top, so a first-time reader met the project through whatever had most recently been built rather than through what it is.
This is the usual shape for a repository people evaluate in thirty seconds: badges, a demo above the fold, a feature table, install and usage, architecture, then the deeper material.
Nothing was softened to fit it
The scope note is still the second thing on the page:
And "Not implemented" is now a table rather than a buried sentence — which makes the gaps easier to read, not easier to miss.
Every claim checked against the binary
Not against memory:
cd ~,cd -, globbing pass-through, refused syntax, and the no-prompt path all runAlso verified: all 7 markdown tables have consistent columns, and every relative link resolves.
One inconsistency it surfaced
The
--benchmarkfigures were measured on a debug build but sat under an install section that says--release, where they are about twice as fast — 0.48 ms of startup rather than 0.82.Both the README and
docs/performance.mdnow report release numbers and say which build they came from.