aboutsummaryrefslogtreecommitdiff
path: root/TODO.md
Commit message (Collapse)AuthorAgeFilesLines
* xref self-test: a real write in a compiler copy, reject unknown options; ↵Gravatar zinc 13 days1-3/+4
| | | | runerr.sh runs every folder it is given
* xref: checked-in baseline, --check self-test hooked into the lsp section, todoGravatar zinc 13 days1-28/+19
|
* todo: record each agent's state at the end of the session and the merge orderGravatar zinc 13 days1-23/+170
|
* todo: test blocks, destructors and record/replay in flightGravatar zinc 13 days1-4/+7
|
* Merge the defer statement; todo: tick it, add its follow-upsGravatar zinc 13 days1-2/+2
|\
| * zc: add the defer statementGravatar zinc 13 days1-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | defer expr; and defer { ... } register code that runs when the enclosing block ends: at the end of the block, and at return, break and continue that leave it. the tokens are kept at the defer and compiled again at each exit (block_close, body, kw_return, kw_break, kw_continue), newest first, before the block's variables are released, so the analyzer sees a deferred rt.free(p) as the transfer of p where it runs. names mean what they meant at the defer; values are read when it runs. return, break and continue inside a deferred statement are errors, reported once. works in unchecked code and closures (own base per function context).
* | Merge four small fixes: std hovers, capture terminator, bare static calls, ↵Gravatar zinc 13 days1-5/+2
|\ \ | | | | | | | | | void main; todo updated
| * | fix std hover, full capture terminator, bare static calls, void main in ↵Gravatar zinc 13 days1-4/+0
| |/ | | | | | | | | | | | | | | | | | | | | | | | | run-only images - hover: a symbol from an embedded library source (tinyvm:std.zc, tinyvm:icon.zc) was looked up only in the document; look it up by its qualified name in the library source (hover_embedded_sym), and render a method found that way by its line (bs_hover). - std.capture: allocate one word more than the 256 it holds, so end() terminates inside the buffer. - a bare call to a static function of the enclosing struct resolves like a bare struct constant (mstruct is set for every non-generic struct's methods); the struct's own wins over a global. - run.zc declares main untyped (fn main();), so a run-only image accepts int, void or untyped main with both compilers.
* | todo: the spec verifier restarted from the first agent's partial workGravatar zinc 13 days1-3/+4
| |
* | Merge the x86-64 jit, phase 1; todo: tick it, add phase 2Gravatar zinc 13 days1-8/+14
|\ \
* | | todo: record the vision, priorities and settled feature decisions; add the ↵Gravatar zinc 13 days1-0/+94
| | | | | | | | | | | | items they imply
* | | todo: no zc0 structs; records become grouped, documented arrays; in-flight ↵Gravatar zinc 13 days1-10/+20
| |/ |/| | | | | list updated
* | todo: handoff section with state, conventions, in-flight work and ↵Gravatar zinc 13 days1-35/+96
| | | | | | | | architecture notes
* | todo: zc0 structs before the records refactorGravatar zinc 13 days1-1/+2
| |
* | Merge the compiler split into phase filesGravatar zinc 13 days1-2/+2
|\ \ | | | | | | | | | | | | 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 days1-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | todo: tick the spec; list the bugs its appendix b foundGravatar zinc 13 days1-1/+2
| | |
* | | todo: tick zc0 byte strings and u/m/d; note zc0's remaining gapsGravatar zinc 13 days1-1/+2
|/ / | | | | | | parity now compares 60 programs with no unexpected difference.
* | todo: tick the parity runner; zc0 follow-ups it foundGravatar zinc 13 days1-1/+3
| |
* | todo: compiler file split, cross-reference report, local records, x86-64 jitGravatar zinc 13 days1-0/+4
|/
* todo: tick typedefs and the string aliasGravatar zinc 13 days1-2/+2
|
* todo: tick struct constants and member typos; add follow-ups and the spec workGravatar zinc 13 days1-1/+7
|
* todo: tick the markdown cleanup and onboarding checkGravatar zinc 13 days1-2/+2
|
* docs: remove temporary notes and fix onboarding driftGravatar zinc 13 days1-1/+1
| | | | | | | | | | | | - delete TASKLIST.md and docs/design/handoff.md; the handoff content lives in README.md - move docs/BOOTSTRAP-OWNERSHIP.md to docs/history/ and index it in docs/history/README.md - point ONBOARD.md, docs/BORROW.md and the ticked TODO.md item at the new path - ONBOARD.md section 9 no longer mentions TASKLIST.md - ONBOARD.md section 3 and 4 markers are now `// ...` (line comments lost their colon) verified from a clean build: make clean, make (fixpoint 376903 words), the section 0-7 commands (section 4 after the marker fix), and the rejection suites. make check was started but did not complete (stopped before it finished).
* todo: record the reverted unchecked trial and what it showedGravatar zinc 13 days1-1/+1
|
* todo: one sorted list of open work; library suggestions without naming librariesGravatar zinc 13 days1-12/+36
| | | | | | | | | | | | | | TODO.md ticks the items verified done (namespaces, actor and icon libraries and their coverage, the genome embed, the bootstrap ownership limits, the docs and fixtures sweep) and lists everything still open, including the newly requested language features, sorted easiest first. the compiler no longer names actor: file libraries for suggestions come from src/lib/modules.txt, and lib.name before its include reports the missing include. icon gains fixtures for reading globals while stepping and for begin_function on a non-function, and the suite checks that nothing the compiler reads by default mentions actors. bf.zc, the web sample and std's capture example use qualified runtime names; LEARN.md uses build/bin paths.
* todo: sync docs, examples and fixtures with the include format, and test ↵Gravatar Moon Flower 13 days1-0/+2
| | | | | | | | | | | actor and icon two items. first, documentation, examples, learn entries, history notes and expected-output fixtures still carry bare runtime builtin names from before the namespace work; the suite gates the snippets it exercises but not the rest. second, actor and icon each need their own accept, reject and regression coverage once they land, including the constraint that no actor code is reachable from the compiler by default.
* docs: record the two ownership gaps that block the bootstrapGravatar Moon Flower 13 days1-0/+1
| | | | | | | | | | | | | | | | | | | `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 13 days1-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | 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 13 days1-3/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-121-0/+66