Skip to content

Commit a92e746

Browse files
committed
Align README with the repo layout and ion.toml manifest fields.
Adds loop to the language summary, documents emit_in_source, and updates the project tree for lsp, stdlib, and ion-vscode.
1 parent 1b6c13d commit a92e746

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Brief summary; see [ION_SPEC.md](ION_SPEC.md) for the full language reference.
1717
- **Ownership**: move by default; single owner per value; use-after-move is a compile error
1818
- **Borrowing**: `&T` and `&mut T` are stack-local; references cannot escape the function (no return, no struct fields, no channels, no `spawn`)
1919
- **Types**: primitives, structs, enums (tuple and struct variants), generics, `[T; N]`, `[]T`, `Box<T>`, `Vec<T>`, `String`
20-
- **Control flow**: `if`/`while` (bool conditions), `for x in expr` over `Vec<T>`, `[T; N]`, or `String` (bytes as `u8`), `match` with guards, `defer`
20+
- **Control flow**: `if`/`while` (bool conditions), `loop { }`, `for x in expr` over `Vec<T>`, `[T; N]`, or `String` (bytes as `u8`), `match` with guards, `defer`
2121
- **Concurrency**: `channel<T>()` returns `(Sender<T>, Receiver<T>)`; `send(&tx, v)` and `recv(&mut rx)`; `spawn { ... }` with structural `Send`
2222
- **FFI**: `extern "C"` blocks, raw pointers `*T`, calls require `unsafe`
2323
- **Stdlib**: `stdlib/io.ion`, `stdlib/fmt.ion`, `stdlib/fs.ion`, and `stdlib/result.ion`
@@ -127,7 +127,7 @@ The integration harness (`tests/test_runner.sh`) calls `ion-compiler` and `gcc`
127127

128128
### Project manifests (`ion.toml`)
129129

130-
`ion-build` discovers `ion.toml` by walking up from the current directory. Required fields: `name`, `main`, `output`. Common optional fields: `mode` (`single` or `multi`), `out_dir` (default `target`), `cflags`, `ldflags`, `stdlib_paths`.
130+
`ion-build` discovers `ion.toml` by walking up from the current directory. Required fields: `name`, `main`, `output`. Common optional fields: `mode` (`single` or `multi`), `out_dir` (default `target`), `cflags`, `ldflags`, `stdlib_paths`, `emit_in_source`.
131131

132132
Root [ion.toml](ion.toml) builds [examples/hello_world_safe.ion](examples/hello_world_safe.ion). Per-example manifests live under [examples/](examples/) (for example `spawn_channel.toml`, `http_server.toml`, `examples/data_lib/ion.toml`). Use `--manifest path` when the file is not named `ion.toml`:
133133

@@ -200,15 +200,19 @@ On Linux or macOS, use `./target/release/ion-build` and drop `.exe`. Windows cha
200200
```
201201
.
202202
├── src/
203+
│ ├── bin/ # ion-build, ion-lsp
203204
│ ├── lexer/ # Tokenizer
204205
│ ├── parser/ # AST construction
205206
│ ├── ast/ # AST node definitions
206207
│ ├── compiler/ # Module resolution, import paths
207208
│ ├── build/ # ion.toml, ion-build driver, C toolchain
208209
│ ├── tc/ # Type checker (safety, visibility, qualified names)
209210
│ ├── ir/ # Intermediate representation
210-
│ └── cgen/ # C code generator
211-
├── runtime/ # C runtime headers
211+
│ ├── cgen/ # C code generator
212+
│ └── lsp/ # Language server
213+
├── runtime/ # C runtime sources and headers
214+
├── stdlib/ # Standard library modules
215+
├── ion-vscode/ # VS Code / Cursor extension
212216
├── examples/ # Example Ion programs
213217
└── tests/ # Test programs
214218
```

0 commit comments

Comments
 (0)