refactor: keep Claro in one strict C89 source file
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Contributing to Claro
|
||||
|
||||
Claro is a learning tool first. Read [`docs/LEARNING_FIRST.md`](docs/LEARNING_FIRST.md)
|
||||
before proposing learner-facing changes. Keep each change small and predictable,
|
||||
teach one recommended syntax per concept, preserve supported compatibility
|
||||
syntax, and prioritize runnable examples and plain-language diagnostics over
|
||||
feature breadth. Do not claim accessibility validation without testing with
|
||||
intended learners.
|
||||
|
||||
For behavior changes, add a focused regression before implementation and verify
|
||||
that it fails for the intended reason. Then build and run the affected examples
|
||||
and the repository validation gates. See [`docs/ROADMAP.md`](docs/ROADMAP.md) for
|
||||
how the current charter relates to older planning documents.
|
||||
|
||||
## Repository layout
|
||||
|
||||
- `src/claro.c` — C89 interpreter.
|
||||
- `lessons/` — ordered beginner lessons.
|
||||
- `examples/` — programs to try and change.
|
||||
- `docs/` — learning guides, reference, and historical notes.
|
||||
- `tests/` — regression fixtures and expected output.
|
||||
- `tools/` — validation and release helpers.
|
||||
- `lib/` — existing library helpers.
|
||||
- `support/` — optional editor support.
|
||||
|
||||
## Build and verify
|
||||
|
||||
At the beginning of a development/release run, stamp its UTC version once:
|
||||
|
||||
```bash
|
||||
python3 tools/stamp_version.py
|
||||
make -s all
|
||||
```
|
||||
|
||||
Ordinary rebuilds use `make -s all` without changing the run timestamp.
|
||||
Validation helpers also require Python 3. Run:
|
||||
|
||||
```bash
|
||||
./claro test
|
||||
./claro doctor
|
||||
./claro validate
|
||||
python3 tools/validate_v1_17.py
|
||||
```
|
||||
|
||||
The last command is the current full validation entry point; its filename is
|
||||
historical. Use focused sanitizer checks for relevant C runtime changes and
|
||||
report known failures explicitly.
|
||||
|
||||
Execute teaching examples with suitable input and assert their expected output;
|
||||
syntax checking alone is not enough. Update the relevant guide, rerun checks
|
||||
after the final edit, and finish with `git diff --check`. Preserve unrelated
|
||||
local work; exclude generated binaries, caches, and unverified experiments
|
||||
from commits. See [versioning](docs/VERSIONING.md) for the timestamp convention.
|
||||
|
||||
|
||||
The runtime must remain a single C89 implementation file. The full gate runs
|
||||
`python3 tools/validate_c89.py` to compile it independently with strict C89 flags
|
||||
and test formatting, numeric boundaries, and simple functions. Do not introduce
|
||||
C99 syntax or depend on generated project headers. See [C89 notes](docs/C89.md).
|
||||
Reference in New Issue
Block a user