aboutsummaryrefslogtreecommitdiff
path: root/src/tools
Commit message (Collapse)AuthorAgeFilesLines
* genmap: default genome reservation 0x70000 words (the genome had 197 words ↵Gravatar zinc 13 days1-1/+1
| | | | left); the map constants in rt.zc and the README table move by 0x8000; gc.zc's reclaim bound is 900 (937 with the heap higher, 952 before) and the run-only section rewrites whatever its number
* conformance and parity: a known entry that passes again is stale and fails ↵Gravatar zinc 13 days1-5/+8
| | | | the run
* zc0: a store into a local embed array is an error (its elements are in the ↵Gravatar zinc 13 days1-8/+17
| | | | code); test in tests/test.sh
* zc0: free the saved token when the local-embed lookahead returns earlyGravatar zinc 13 days1-1/+1
|
* zc0: u*x, m*x, d*x are products when u, m or d is a visible local or global ↵Gravatar zinc 13 days1-5/+8
| | | | (spec 1.6.3); redone from zc-spec's 2f2597b
* Merge branch 'main' into work/xrefGravatar zinc 13 days2-2/+6
|\
| * bounds checking: port agent/bounds-checking onto main 0879d0a; unbounded ↵Gravatar zinc 13 days2-2/+6
| | | | | | | | main in o3call, o3 tests expect no check, boundsrules, bounds_fixed, bounds_heap and zc0unbounded tests
* | zc0: integer literals as the compiler reads them (010 is 10, 0x is 0, values ↵Gravatar zinc 13 days1-2/+20
| | | | | | | | wrap modulo 2^64)
* | zc0: embed of an array type inside a functionGravatar zinc 13 days1-2/+4
| |
* | zc0: x as T reads a whole type (x as int*, x as char**)Gravatar zinc 13 days1-1/+1
| |
* | zc0: reject .u on a typed parameter with the compiler's messageGravatar zinc 13 days1-1/+4
| |
* | zc0: string literals have no length limit (the token text grows)Gravatar zinc 13 days1-11/+22
|/
* merge main into work/line-tablesGravatar zinc 13 days3-0/+498
|\
| * xref self-test: a real write in a compiler copy, reject unknown options; ↵Gravatar zinc 13 days1-4/+18
| | | | | | | | runerr.sh runs every folder it is given
| * xref: checked-in baseline, --check self-test hooked into the lsp section, todoGravatar zinc 13 days1-0/+21
| |
| * agent/xref-report: unmerged work from previous sessionGravatar zinc 13 days2-0/+463
| |
* | line tables and backtraces: port agent/line-tables onto main, op 56 on the ↵Gravatar zinc 13 days5-6/+82
|/ | | | x86-64 jit, docs, measurements, tests; default genome reservation 0x68000
* parity: clear links from earlier runs so a program's writes never reach the treeGravatar zinc 13 days1-0/+3
|
* Merge the compiler split into phase filesGravatar zinc 13 days4-10/+37
|\ | | | | | | | | also: ca_owners in the language server keeps the owner order in a fixed array instead of a heap list the analyzer rejected.
| * split compiler.zc into files by phaseGravatar zinc 13 days4-10/+37
| | | | | | | | | | | | | | | | | | | | | | | | src/compiler/compiler.zc is now twelve files under src/compiler/, listed in order in src/compiler/parts. cat of the parts in order is byte-identical to the old file, so every compiler and image except the language server's is unchanged. no function was edited. consumers read the list: the makefile, bootstrap-check, genmap (which still writes one compiler.zc into a generated map directory), tinyvm.bat, test.sh, test_win.ps1 and the lsp drivers. the language server embeds each part and serves them joined as the one document tinyvm:/compiler.zc.
* | Merge branch 'worktree-agent-a0734822346ae18db' into ccr-0054c02e-dfdvndGravatar zinc 13 days1-50/+125
|\ \ | |/ |/|
| * zc0: byte string types, u/m/d as names, enhancements in asmGravatar zinc 13 days1-50/+125
| | | | | | | | | | | | | | | | | | bstr locals, globals, parameters and returns are byte strings for + , the comparisons, indexing, slicing, len and put_s; b"..." globals; embed inside a function. u, m and d are ordinary names: a recast is the letter with the star touching it (u*x), tags .u .m .d are accepted on types and bare. an enhancement named inside asm { } emits its opcode. zc0's image of the genome and language server sources is unchanged.
* | parity: compare what zc0 and the self-hosted compiler printGravatar zinc 13 days1-0/+160
|/ | | | | | | | | | | src/tools/parity.sh compiles each program of tests/programs, examples and examples/learn with zc0 (runtime, program, mkgenome, a microcore with the image embedded, kept under build/parity/) and runs it beside build/bin/zy < prog.zc, then compares stdout. what zc0 rejects is skipped and counted. tests/parity.known lists the differences that are by design (zc0 has no ownership analysis or memdebug checks). make parity runs it. tests/programs/parity_ops.zc pins operator precedence and associativity across every binary operator, unary operators, assignment and short-circuit order; its output matches a c compiler's.
* embed: tests, editor support and docs; js vm file access; test fixesGravatar zinc 14 days1-11/+16
| | | | | | | | | | | | | | | | | | | | embed declarations get accept and reject fixtures, a run-only image check through zc0, an lsp keyword hover and the grammar keyword. errors point at the declaration and still declare the name, so its uses are not reported again. zc0 tracks byte-string globals and lays embedded arrays out one word per element, the way its own indexing reads them. the command-line javascript vm reaches node's file system for the file syscalls, so include and embed work there; other embedders opt in. the web build is self-contained in build/web with its examples. README, BORROW and BOOTSTRAP-OWNERSHIP describe the new build and ownership rules, and ONBOARD.md is a reading and verification order for the code. the suite passes the map header to mklayout, the wasm fuzz program uses the include format, and lsp drivers scale their deadlines on hosts without the arm64 jit (ZC_TEST_TIMEOUT_SCALE). LLVM_CONFIG selects an llvm with headers for the llvm section.
* build: embed images with #embed, keep everything generated in build/Gravatar zinc 14 days11-185/+232
| | | | | | | | | | | | | | | | | | | | | | | | | | the cores take their genome in with c23 #embed through src/core/genome.h, so images are plain little-endian word files (genome.bin) instead of generated c headers. zc0 writes that format, mkgenome checks an image against its map and shows a compiler's diagnostics when it gets them, and the javascript vm and the editor's vm host read the same files. src/tools/findcc.sh picks a compiler with #embed (clang 19 or gcc 15). zc gets an embed declaration, embed "file" as [type] name, for globals and locals: a byte string by default, char*, numbers read little-endian, and arrays of numbers. the compiler and language server carry their library and source texts through it, so embed.sh and the text it spliced into compiler.zc are gone. make writes executables to build/bin, the default map to build/core/map, the web page to build/web and the extension staging to build/vsix, and the genome now rebuilds when its sources change. the test suite lays out its own map and bootstrap and reads nothing from build/. also: rt.put_s of a byte string in zc0 images, retained function sources no longer count as live objects, a missing include no longer cascades into undefined-name errors, consecutive comment lines join into one hover paragraph, and stale test fixtures follow the include format.
* docs: record the two ownership gaps that block the bootstrapGravatar Moon Flower 14 days1-0/+20
| | | | | | | | | | | | | | | | | | | `make genome` cannot complete: the second bootstrap stage runs the lifetime checker over the compiler's own source, which reports 8 errors, and mkgenome then reads the diagnostics as an image. the two limits are that an owned value held in a local has no move into another local — every accepted move originates at a call, so the free-then-replace rule only applies when the replacement comes from a call result — and that a local cannot be lent to a global, so redirecting the output stream at a scratch buffer needs a module-level variable. neither limit accepts an unsafe program; both refuse correct ones, so this is a completeness gap rather than a soundness failure. document the affected code, the diagnostics, what was tried and how each attempt failed, and a proposal. add src/tools/bootstrap-check.sh, which rebuilds both bootstrap stages and prints the compiler's diagnostics on its own source instead of the word dump.
* build: generate everything into build/, keep src/ free of generated filesGravatar Moon Flower 14 days2-13/+30
| | | | | | | | | | | | | | | | | | | | | | | | | src/ carried 8.4 MB of build output: the genome header, the javascript vm and its layout, and the language-server image, plus a second copy of the extension server under editors/vscode/server/. none of it is source. - move the genome from src/core/genome.h to build/core/genome.h and compile with -Ibuild/core; `make all` bootstraps one when it is missing - write genome.json, layout.ts, layout.js and lsp.json to build/js/ - compile tinyvm.ts to build/js/, typed by a tracked src/js/layout.d.ts so the vm needs no generated file beside its source - build the wasm server into build/editors/vscode/server/ and stage the whole server into editors/vscode/server/ only while mkvsix.sh packages it - redirect the test suite, image_run.js, tinyvm.sh, tinyvm.bat, test_win.ps1 and the baremetal build at the new paths, and add make lspimage and make vsix - stop tracking every generated file also fix a build blocker: lookup_raw compared skind against K_VAR, which was never declared, so `make genome` could not run at all. the guard is about emitted program globals, which are K_GVAR and K_GARR. tests/test.sh -q reports 159 passed and 21 failed both before and after this change; every failure is pre-existing and comes from the checked-in genome being stale relative to src/, plus the bootstrap above.
* feat: grow memory limits, add icon/actor libraries, overhaul LSP diagnosticsGravatar Moon Flower 14 days10-35/+230
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* aGravatar Moon Flower 2026-10-129-0/+1964