aboutsummaryrefslogtreecommitdiff
path: root/src/tools/genmap.c
diff options
context:
space:
mode:
authorGravatar Moon Flower <moonflower@elhenney.local> 2026-10-14 08:29:46 +0330
committerGravatar Moon Flower <moonflower@elhenney.local> 2026-10-14 08:29:46 +0330
commit1c53304d03414890af0da7432d1aea87e754a14a (patch)
tree97190d86cf548c9bc63f68c86a4d2a4f09809713 /src/tools/genmap.c
parenta (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.c13
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;