From 1c53304d03414890af0da7432d1aea87e754a14a Mon Sep 17 00:00:00 2001 From: Moon Flower Date: Wed, 14 Oct 2026 08:29:46 +0330 Subject: 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, 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 --- src/tools/genmap.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/tools/genmap.c') 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; -- cgit v1.2.3