| Commit message (Collapse) | Author | Age | Files | Lines |
| |\ |
|
| | |
| |
| |
| | |
code); test in tests/test.sh
|
| | | |
|
| | |
| |
| |
| | |
(spec 1.6.3); redone from zc-spec's 2f2597b
|
| |\ \
| |/
|/| |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
specialization, ZYNOENH=1 to call xrun); enh_ops test; jit_x64_test in test.sh
|
| | |
| |
| |
| | |
int), as the jits and the microcore do
|
| |\| |
|
| | |\ |
|
| | | |
| | |
| | |
| | | |
check, docs (readme, spec 4.15 and friends, server, vscode), conformance and test.sh fixes, todo
|
| | | |
| | |
| | |
| | | |
main in o3call, o3 tests expect no check, boundsrules, bounds_fixed, bounds_heap and zc0unbounded tests
|
| | | |
| | |
| | |
| | | |
wrap modulo 2^64)
|
| | | | |
|
| | | | |
|
| | | | |
|
| |/ / |
|
| |\ \ |
|
| | |/
| |
| |
| | |
64-word scan; regression program
|
| |\ \
| |/
|/| |
|
| | |
| |
| |
| | |
when it has fields (spec 4.7.3)
|
| | |
| |
| |
| | |
the scrub program reads the freed word through asm
|
| | |
| |
| |
| | |
yields 0 (typecheck off, spec 4.8.3)
|
| | | |
|
| | |
| |
| |
| | |
(int*)s indexes words
|
| | |
| |
| |
| | |
(spec 1.6.3)
|
| | |
| |
| |
| | |
function's first statement is reported
|
| |\| |
|
| | |
| |
| |
| | |
runerr.sh runs every folder it is given
|
| | | |
|
| | | |
|
| |/
|
|
| |
x86-64 jit, docs, measurements, tests; default genome reservation 0x68000
|
| | |
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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).
|
| |\ \
| | |
| | |
| | | |
void main; todo updated
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |\ \
| |/
|/| |
|
| | | |
|
| | |
| |
| |
| | |
the region interpreter
|
| |\ \
| | |
| | |
| | |
| | | |
also: ca_owners in the language server keeps the owner order in a fixed
array instead of a heap list the analyzer rejected.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| |/ /
|/| | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| |_|/
|/| | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| |_|/
|/| | |
|
| | |/
| |
| |
| |
| |
| |
| |
| | |
typedef T name; binds name to the type record of T, at the top level or
in a function (scoped to its block). string is a built-in alias for char*.
A type name straight before , or ) in a parameter list is the parameter's
name, so fn f(string) still works. The language server shows typedef T
name; on hover and highlights typedef as a keyword.
|
| |\ \ |
|