diff options
| author | 2026-10-14 08:29:46 +0330 | |
|---|---|---|
| committer | 2026-10-14 08:29:46 +0330 | |
| commit | 1c53304d03414890af0da7432d1aea87e754a14a (patch) | |
| tree | 97190d86cf548c9bc63f68c86a4d2a4f09809713 /src/tools/genmap.c | |
| parent | a (diff) | |
feat: grow memory limits, add icon/actor libraries, overhaul LSP diagnostics
Compiler and VM
- make every memory map limit dynamic and adjustable at both build time and
runtime, including compiler tables, stacks, and every execution region
- reserve and grow tables, operand and return stacks, frame segments, and
image-building output without relocating live code or globals
- rename i/o and string helpers consistently (puts -> put_s, putn -> put_n,
scat -> cat_s) across compiler, runtime, examples, tests, and docs
- recast and consume values assigned to globals from inside functions
- allow fixed and const together, add typed closure returns (fn:t(...)),
multi-include syntax (include rt, run, core;), and recurse type inference
- never infer string literals as word, anywhere, as argument, variable, or
return type
- draft docs/BORROW.md: a borrow checker less intrusive than Rust's but more
intelligent
LSP and editor integration
- require explicit includes and give every toolchain area its own namespace
(rt, lsp, run, core)
- hover for built-in types, inferred types, values known at hover time, array
and pointer lifetime/size, library names in include statements, and inferred
lifetimes with explanations
- honor /* */ comments as documentation for variables and arguments, and stop
misattributing section headers or trailing comments as variable hints
- stream diagnostics and cancel stale requests on change
- jump to definition and references, including cross-file
- quick fixes with automatic library import, and namespace completion
Hints and diagnostics
- render hints as blue squigglies by default, with hints on/small/off per file
- suppress magic-number hints via a preceding /* */ comment, and say so
- warn on unused arguments; allow multiple _ discards in parameters, pattern
matching, and tagged enums, warning if a _ is actually used
- rewrite hint and comment prose in professional compiler-doc register
Libraries
- add icon.zc: run-time self-modification, find/replace syntax, type and block
edits, and step-through inspection of locals and globals
- add actor.zc: async actors with Actor<I,O>, implicit this, spawn/recv/send,
injected into the compiler machinery at include time rather than built in
Tooling and docs
- reorganize sources, tests, and designs into subdirectories
- unify windows entry points in tinyvm.bat and add a matching tinyvm.sh
- add --help across the toolchain
- polish the learning guide, stdlib docs, and design notes
Tests
- add accept, reject, and regression coverage across the compiler, LSP,
- runtime, icon, actors, threads, formatting, and the toolchain contracts,
plus fuzzers and property tests
Diffstat (limited to 'src/tools/genmap.c')
| -rw-r--r-- | src/tools/genmap.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/tools/genmap.c b/src/tools/genmap.c index dc1971c..8a258e1 100644 --- a/src/tools/genmap.c +++ b/src/tools/genmap.c @@ -10,7 +10,7 @@ ./genmap --preset run -o build/run ./genmap --preset default --check - ./genmap --mode compiler --heap-lo 8192 --heap 20480 --types 8192 --genome 245760 --frame 2048 --return 512 --mark 512 --data 3072 --snap-cap 1000 --quote-cap 300 -o build/small + ./genmap --mode compiler --heap-lo 8192 --heap 20480 --types 8192 --genome 393216 --frame 2048 --return 512 --mark 512 --data 3072 --snap-cap 1000 --quote-cap 300 -o build/small ./genmap --mode run --words 20480 -o build/run --preset default puts the code area, the compiler tables, the genome and @@ -194,7 +194,7 @@ static void preset_small(Spec *s) s->compiler = 1; s->heap_top = 1; s->code_end = 8192; s->total = 0x8000000; s->heap_lo = 8192; s->heap = 20480; s->types = 8192; - s->genome = 245760; s->frame = 2048; s->ret = 512; s->mark = 512; s->data = 3072; + s->genome = 393216; s->frame = 2048; s->ret = 512; s->mark = 512; s->data = 3072; tables_tight(s); s->snap_cap = 1000; s->quote_cap = 300; s->snap = 1000; s->qbuf = 900; s->type_formula = 8192; } @@ -215,7 +215,7 @@ static void preset_default(Spec *s) s->compiler = 1; s->heap_top = 1; s->code_end = 0x80000; s->types = 65536; s->heap = 0x60000; s->total = 0x8000000; - s->genome = 0x50000; s->frame = 0x40000; s->ret = 0x10000; s->mark = 0x8000; + s->genome = 0x60000; s->frame = 0x40000; s->ret = 0x10000; s->mark = 0x8000; s->data = 0x7FF0; tables_big(s); } @@ -250,7 +250,7 @@ static void mode_defaults(Spec *s, int compiler) if (compiler) { s->heap_top = 1; s->code_end = 8192; s->total = 0x8000000; s->heap_lo = 8192; s->heap = 20480; s->types = 8192; s->type_formula = 8192; - s->genome = 245760; s->frame = 2048; s->ret = 512; s->mark = 512; s->data = 3072; + s->genome = 393216; s->frame = 2048; s->ret = 512; s->mark = 512; s->data = 3072; tables_tight(s); } else { s->heap_top = 1; s->code_end = 512; s->total = 0x8000000; @@ -682,11 +682,12 @@ static void write_sources(const char *dir, const Spec *s, const Map *m) static void usage_status(int status) { - fprintf(stderr, + fprintf(status ? stderr : stdout, "usage: genmap --preset small|run|default|fixed|lsp [-o DIR] [--check]\n" " genmap --mode compiler|run [-o DIR] [--words N] [options]\n" " genmap small|run DIR\n" "options:\n" + " --help, -h show this help and exit\n" " --code N --total N --heap N --heap-lo N --types N --zfp-pad N --genome N\n" " --frame N --return N --mark N --data N\n" " --hash N --pool N --symbols N --locals N --fwd N\n" @@ -714,7 +715,7 @@ static int take(int argc, char **argv, int *i) int main(int argc, char **argv) { Spec s; Map m; - if (argc == 2 && !strcmp(argv[1], "--help")) usage_status(0); + if (argc == 2 && (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-h"))) usage_status(0); const char *outdir = 0, *preset = 0, *mode = 0; int check = 0, grow = 0, i, have = 0; int total = 0, set_total = 0, set_words = 0, set_heap = 0, set_heap_lo = 0, set_types = 0, set_zfp = 0; |
