|
6 | 6 | [](https://github.com/brightprogrammer/MisraStdC/actions/workflows/test-windows-llvm.yml) |
7 | 7 | [](https://github.com/brightprogrammer/MisraStdC/actions/workflows/fuzz.yml) |
8 | 8 |
|
9 | | -A C11 standard-library replacement that brings the parts of Rust, Zig, C++, and |
10 | | -Python that actually pay off into plain C — without a runtime, a code generator, |
11 | | -or a template compiler. Everything is opt-in at build time, so you compile only |
12 | | -what you use, and nothing hides at runtime: allocators are plain values you own, |
13 | | -generics expand to inlined code you can step through, and a single |
14 | | -`#include <Misra.h>` pulls in whatever the build enabled. |
| 9 | +A C11 standard library, made with love, to bring some modern concepts into |
| 10 | +plain C. Everything is opt-in at build time — you compile only what you use, and |
| 11 | +a single `#include <Misra.h>` pulls in whatever the build enabled. |
| 12 | + |
| 13 | +> Parts of this codebase have been written and re-written with the help of LLMs, |
| 14 | +> under close supervision. See |
| 15 | +> [Transparency and use of LLMs](#transparency-and-use-of-llms) for how. |
15 | 16 |
|
16 | 17 | > Not related to the MISRA C standard or its guidelines. The name comes from |
17 | 18 | > the author's surname — Siddharth Mishra, nicknamed "Misra". |
@@ -155,3 +156,53 @@ In-depth guides live under [`Docs/`](Docs/). Before contributing, read |
155 | 156 | [`CODING-CONVENTIONS.md`](CODING-CONVENTIONS.md) and run the test suite plus |
156 | 157 | `clang-format`. Released into the public domain under the |
157 | 158 | [Unlicense](LICENSE.md). |
| 159 | + |
| 160 | +## Project status |
| 161 | + |
| 162 | +This codebase is in its very early stages. There is no stable branch yet, and |
| 163 | +there won't be one for a while. **Treat `master` as unstable** — agents |
| 164 | +introduce coding drift that gets caught and fixed later, so the tip of `master` |
| 165 | +can carry inconsistencies that are still being ironed out. Build against it with |
| 166 | +that expectation. |
| 167 | + |
| 168 | +What *is* stable is the set of standards the code is held to: naming, ownership, |
| 169 | +allocator rules, error handling, formatting, and the rest are written down in |
| 170 | +[`CODING-CONVENTIONS.md`](CODING-CONVENTIONS.md). When the code and the |
| 171 | +conventions disagree, the conventions are right and the code is a bug to be |
| 172 | +fixed. |
| 173 | + |
| 174 | +The tests aim to cover as much of the codebase as possible, and best effort goes |
| 175 | +into keeping everything stable *in its usage* — APIs behave as documented and |
| 176 | +the suite is meant to catch regressions across the library. What remains mostly |
| 177 | +unstable is **performance**. The prototype code just works; it isn't yet fast. |
| 178 | +At the time of writing a significant share of the available time and effort is |
| 179 | +going into benchmarking and improving it. |
| 180 | + |
| 181 | +## Transparency and use of LLMs |
| 182 | + |
| 183 | +Parts of this codebase have been written and re-written with the help of large |
| 184 | +language models, under close supervision. I want to be upfront about that rather |
| 185 | +than pretend every line was typed by hand. |
| 186 | + |
| 187 | +The models do not get a free hand. I work them in tight review loops: I read |
| 188 | +what they produce, scrutinize it against the conventions above, and push back |
| 189 | +hard when it drifts — and it does drift, sometimes from noise in the model and |
| 190 | +sometimes because my own prompt was sloppy. When the output starts to "slop" |
| 191 | +(plausible-looking code that quietly ignores an established pattern, reaches for |
| 192 | +libc where an in-tree primitive exists, oversells what it actually does, or |
| 193 | +invents an API instead of using the real one), I stop it, point at the specific |
| 194 | +convention it broke, and make it redo the work until it matches the rest of the |
| 195 | +library. Nothing lands because it looked convincing; it lands because I checked |
| 196 | +it. |
| 197 | + |
| 198 | +I also drive the commit history deliberately. The models tend to leave a trail |
| 199 | +of experimental, half-right commits while we iterate; before anything is |
| 200 | +published I have them cherry-pick and squash that down into a small set of |
| 201 | +clean, self-contained commits with honest messages, so the history reads as a |
| 202 | +sequence of deliberate changes rather than a transcript of the back-and-forth |
| 203 | +that produced them. |
| 204 | + |
| 205 | +The intent is simple: the convenience of an LLM for the mechanical work, none of |
| 206 | +the abdication of judgement. The author remains responsible for every design |
| 207 | +decision that goes in; granular, line-by-line knowledge of the code is not 100% |
| 208 | +guaranteed, but a high-level understanding of it is assured. |
0 commit comments