| 2026-05-20 21:34 | release: rev-free tarball name; mes-libc strtoll + execvp stubs | Ryan Sepassi | 6 | +53 | -24 |
| 2026-05-20 17:51 | release: per-arch tarball with input + output manifests, validated mint flow | Ryan Sepassi | 11 | +626 | -22 |
| 2026-05-20 16:33 | scheme1 explorations | Ryan Sepassi | 2 | +799 | -0 |
| 2026-05-12 01:14 | README: link to the boot2 writing series | Ryan Sepassi | 1 | +12 | -0 |
| 2026-05-07 21:38 | compare live-bootstrap doc | Ryan Sepassi | 1 | +174 | -0 |
| 2026-05-07 18:06 | Update README, add TOUR | Ryan Sepassi | 2 | +420 | -14 |
| 2026-05-07 17:43 | docs: drop references to retired CC-PUNCHLIST/CC-CONTRACTS/PLAN/TCC-ARM64-ASM | Ryan Sepassi | 40 | +81 | -101 |
| 2026-05-07 03:47 | headers: consolidate flatten-time includes under bootprep/headers | Ryan Sepassi | 25 | +177 | -265 |
| 2026-05-07 02:46 | containers: rename .scratch → .busybox; tests' .busybox → .busybox-test | Ryan Sepassi | 14 | +62 | -62 |
| 2026-05-07 01:46 | libc headers: replace mes-libc/include with hand-rolled cc/include | Ryan Sepassi | 49 | +474 | -1880 |
| 2026-05-07 00:03 | mes-libc: collapse to single-file libc.c, drop unused sources/headers | Ryan Sepassi | 203 | +982 | -9780 |
| 2026-05-06 22:31 | prep: fold musl skip filter into prep-src; calibration is manual | Ryan Sepassi | 7 | +48 | -148 |
| 2026-05-06 22:20 | reorg PR2: generate run.scm at prep, finish scripts/ → bootprep/ move | Ryan Sepassi | 18 | +559 | -516 |
| 2026-05-06 22:10 | reorg PR1: move scripts/ into boot|bootprep|tcc|tests|tools, flatten vendor/upstream | Ryan Sepassi | 229 | +3518 | -4490 |
| 2026-05-06 21:32 | B (scripts): unify bootN.sh; per-stage + cumulative timings | Ryan Sepassi | 11 | +329 | -335 |
| 2026-05-06 20:35 | cc: widen integer literals exceeding INT_MAX to i64 | Ryan Sepassi | 1 | +9 | -1 |
| 2026-05-06 20:22 | TU: tests consume bootN outputs directly | Ryan Sepassi | 11 | +202 | -368 |
| 2026-05-06 20:12 | B (README): arch×driver matrix, build entry points, tests pointer | Ryan Sepassi | 1 | +76 | -0 |
| 2026-05-06 20:12 | B (kernel.c polish): name DTB/PVH/cpio magics; document sys_unlinkat ignored args | Ryan Sepassi | 1 | +41 | -18 |
| 2026-05-06 20:03 | rm old docs | Ryan Sepassi | 4 | +0 | -1312 |
| 2026-05-06 20:02 | AX: tests own their Makefile + helpers; fixtures normalized to NNN- | Ryan Sepassi | 418 | +2151 | -1975 |
| 2026-05-06 19:55 | AT.2: native PT_NOTE for PVH boot; retire elf-pvh-note shim | Ryan Sepassi | 13 | +250 | -160 |
| 2026-05-06 19:39 | AT.1 + AT.4: inline mes-libc abtol fix; arch.h primitive set + macros | Ryan Sepassi | 8 | +111 | -127 |
| 2026-05-06 19:37 | A4: Makefile drives bootN.sh with path-based deps | Ryan Sepassi | 3 | +322 | -337 |
| 2026-05-06 19:26 | A0: bootN.sh read sources from canonical build/<arch>/src/ tree | Ryan Sepassi | 13 | +326 | -281 |
| 2026-05-06 19:07 | A0: prep-src.sh + prep-musl.sh build canonical src tree at build/<arch>/src/ | Ryan Sepassi | 2 | +256 | -0 |
| 2026-05-06 19:07 | A3: per-driver output trees at build/$ARCH/$DRIVER/bootN | Ryan Sepassi | 13 | +107 | -122 |
| 2026-05-06 18:50 | A6: hoist arch/driver boilerplate into scripts/lib-arch.sh | Ryan Sepassi | 10 | +198 | -371 |
| 2026-05-06 18:33 | seed-kernel: amd64 pool B must not overlap kernel image | Ryan Sepassi | 1 | +7 | -1 |
| 2026-05-06 18:03 | seed-kernel: riscv64 DRIVER=seed end-to-end fixes | Ryan Sepassi | 10 | +74 | -209 |
| 2026-05-06 17:53 | PLAN.md for audit and polish | Ryan Sepassi | 2 | +410 | -0 |
| 2026-05-06 16:36 | seed-kernel: amd64 boot6 + DRIVER=seed wiring; bring kernel up to scheme1+tcc3 | Ryan Sepassi | 17 | +483 | -37 |
| 2026-05-06 14:26 | seed-kernel: boot6 builds amd64 + riscv64; DRIVER=seed extended to riscv64 | Ryan Sepassi | 24 | +782 | -279 |
| 2026-05-06 06:31 | Implement amd64 and riscv64 seed kernels | Ryan Sepassi | 13 | +1205 | -50 |
| 2026-05-06 06:02 | Refactor seed-kernel arch layout | Ryan Sepassi | 10 | +446 | -279 |
| 2026-05-06 02:12 | docs: drop OS-TODO + TCC-TODO | Ryan Sepassi | 5 | +138 | -366 |
| 2026-05-06 01:55 | boot6: rename output kernel.elf -> Image | Ryan Sepassi | 13 | +37 | -40 |
| 2026-05-06 01:49 | seed-kernel: tcc3 self-hosts the link step; boot6 closes the loop | Ryan Sepassi | 18 | +330 | -85 |
| 2026-05-06 00:44 | docs/OS-TODO: trim landed tcc3-self-host items | Ryan Sepassi | 1 | +20 | -152 |
| 2026-05-06 00:42 | seed-kernel: tcc3 self-host of kernel.{S,c} now boots under qemu | Ryan Sepassi | 21 | +798 | -116 |
| 2026-05-06 00:19 | hex2pp: single-pass + fixup list; cut wasted work; wire P1 lint | Ryan Sepassi | 3 | +803 | -384 |
| 2026-05-06 00:11 | M1pp: cut wasted work in dispatch + macro-body expansion | Ryan Sepassi | 5 | +682 | -256 |
| 2026-05-05 23:50 | seed-kernel: refactor kernel.S to drop tcc-asm features; refresh OS-TODO | Ryan Sepassi | 2 | +252 | -90 |
| 2026-05-05 23:20 | cc: %cg-fn-set! mutates in place instead of alist-update rebuild | Ryan Sepassi | 1 | +10 | -1 |
| 2026-05-05 23:17 | boot{0..5}: split stage dirs into in/ + out/ | Ryan Sepassi | 8 | +262 | -204 |
| 2026-05-05 20:03 | move build/tcc/<TCC_TARGET>/ -> build/<arch>/vendor/tcc/ | Ryan Sepassi | 15 | +107 | -100 |
| 2026-05-05 19:19 | boot{3,4,5}: --no-cache podman build; drop ./ spawn prefix | Ryan Sepassi | 7 | +42 | -45 |
| 2026-05-05 19:10 | e2e blk migration, fixup script paths | Ryan Sepassi | 3 | +3 | -3 |
| 2026-05-05 19:03 | docs/OS-TODO: collapse landed items; add tcc3 self-host roadmap | Ryan Sepassi | 1 | +84 | -218 |
| 2026-05-05 19:03 | scheme1/prelude: drop redundant errno negate in sys-spawn probe | Ryan Sepassi | 1 | +4 | -5 |
| 2026-05-05 19:03 | boot{3,4,5}: unify podman+seed via lib-runscm; drop in-container shell | Ryan Sepassi | 9 | +463 | -703 |
| 2026-05-05 19:03 | seed-kernel/user: factor sysc into shared syscall6 toplevel-asm thunk | Ryan Sepassi | 3 | +73 | -58 |
| 2026-05-05 19:03 | boot{0,1,2} + seed-accept: switch seed driver to virtio-blk extract | Ryan Sepassi | 5 | +43 | -25 |
| 2026-05-05 19:03 | seed-kernel: virtio-blk in/out transport replaces UART tmpfs dump | Ryan Sepassi | 10 | +1468 | -435 |
| 2026-05-05 18:08 | boot.sh e2e kernel + podman | Ryan Sepassi | 2 | +55 | -2 |
| 2026-05-05 17:28 | seed-kernel: atomic sys_spawn replaces clone+execve; boot5 on seed | Ryan Sepassi | 13 | +691 | -240 |
| 2026-05-05 15:21 | tcc: strip /work/in[/tcc-lib]/ prefix from STT_FILE under BOOTSTRAP | Ryan Sepassi | 5 | +41 | -26 |
| 2026-05-05 14:48 | docs/OS-TODO: split landed vs open; add tcc-paths TODO | Ryan Sepassi | 1 | +38 | -11 |
| 2026-05-05 10:36 | seed-kernel: pool-swap on execve + FP enable; HVF acceleration; boot4 acceptance | Ryan Sepassi | 10 | +221 | -135 |
| 2026-05-05 08:47 | boot{3,4,5}: DRIVER=seed via lib-seed-runscm + run.scm | Ryan Sepassi | 8 | +585 | -97 |
| 2026-05-05 07:08 | boot{0,1,2}: extract lib-pipeline DSL; add seed-kernel driver + accept | Ryan Sepassi | 6 | +565 | -234 |
| 2026-05-05 03:58 | seed-kernel: close all 11 OS-TODO items + verification gates | Ryan Sepassi | 13 | +1030 | -52 |
| 2026-05-05 02:54 | seed-kernel: minimal arm64 OS satisfying docs/OS.md Tier 1 | Ryan Sepassi | 7 | +1078 | -0 |
| 2026-05-05 02:38 | boot{3,4,5}: split boot3 into tcc0 (boot3) + tcc rebuilds (boot4); musl is now boot5 | Ryan Sepassi | 12 | +778 | -651 |
| 2026-05-05 01:24 | boot{3,4}: inline tcc <stdarg.h> bridge into flat.c, drop tcc-include/mes-include staging | Ryan Sepassi | 10 | +120 | -173 |
| 2026-05-05 00:42 | boot4: vendor riscv64 musl overrides + amd64/riscv64 calibration | Ryan Sepassi | 10 | +212 | -3 |
| 2026-05-04 23:51 | boot3: fold va_list_shim.h into tcc <stdarg.h> patch | Ryan Sepassi | 8 | +59 | -49 |
| 2026-05-04 23:34 | boot{1,2,3}: move catm rebuild from boot1 to boot2 | Ryan Sepassi | 4 | +74 | -67 |
| 2026-05-04 23:24 | boot4: simplify struct timespec in alltypes.h to silence tcc warning | Ryan Sepassi | 4 | +27 | -4 |
| 2026-05-04 23:16 | boot{0..4}: kaem-friendly container scripts via materialized run.sh | Ryan Sepassi | 15 | +3845 | -376 |
| 2026-05-04 22:17 | Shrink boot.sh dep surface | Ryan Sepassi | 26 | +1904 | -135 |
| 2026-05-04 21:46 | Move boot3 runtime closure into boot3 outputs | Ryan Sepassi | 5 | +158 | -102 |
| 2026-05-04 21:12 | Fix LP64 constants for boot4 musl | Ryan Sepassi | 5 | +136 | -303 |
| 2026-05-04 20:58 | boot4: aarch64 round 2 — tcc store/load VT_CONST|VT_LVAL fix + atomic CAS | Ryan Sepassi | 9 | +378 | -519 |
| 2026-05-04 20:09 | boot4: riscv64 musl patches — 135 -> 3 skips, hello runs | Ryan Sepassi | 4 | +488 | -16 |
| 2026-05-04 19:31 | boot4: aarch64 musl patches — 153 -> 20 skips, blocked at link | Ryan Sepassi | 3 | +610 | -119 |
| 2026-05-04 18:47 | boot4: build musl with boot3 tcc, link a static hello | Ryan Sepassi | 7 | +3712 | -0 |
| 2026-05-04 18:40 | tcc 0.9.26: phase-2 aarch64 assembler | Ryan Sepassi | 3 | +1556 | -215 |
| 2026-05-04 18:07 | tcc 0.9.26: phase-1 aarch64 assembler | Ryan Sepassi | 14 | +946 | -37 |
| 2026-05-04 18:00 | OS.md update | Ryan Sepassi | 1 | +114 | -75 |
| 2026-05-04 17:30 | boot.sh | Ryan Sepassi | 1 | +10 | -0 |
| 2026-05-04 17:29 | boot3: tcc{0,1,2,3} naming, stage E fixed-point check, auto-flatten | Ryan Sepassi | 2 | +170 | -71 |
| 2026-05-04 16:34 | boot3 drop host cc for amd64/riscv64 | Ryan Sepassi | 4 | +137 | -79 |
| 2026-05-04 16:19 | catm.P1pp | Ryan Sepassi | 4 | +235 | -37 |
| 2026-05-04 15:35 | README: align pseudocode with bootN.sh stages | Ryan Sepassi | 1 | +17 | -12 |
| 2026-05-04 15:25 | add standalone bootN.sh entrypoints (scratch + busybox) | Ryan Sepassi | 8 | +652 | -56 |
| 2026-05-04 15:10 | docs: document riscv64 u32-narrowing limitation in TCC-TODO | Ryan Sepassi | 1 | +58 | -4 |
| 2026-05-04 15:08 | mes-libc: track `l` modifier in printf so plain %d/%c reads int | Ryan Sepassi | 7 | +199 | -0 |
| 2026-05-04 14:12 | tcc 3 stage harness | Ryan Sepassi | 4 | +109 | -39 |
| 2026-05-04 13:38 | riscv64 and amd64 | Ryan Sepassi | 27 | +702 | -138 |
| 2026-05-04 07:06 | tcc 0.9.26: read single-byte char constants through uint8_t | Ryan Sepassi | 4 | +27 | -12 |
| 2026-05-04 06:50 | cc: split aggregate args across two ABI slots on call + receive | Ryan Sepassi | 2 | +118 | -11 |
| 2026-05-04 06:39 | tcc-tcc: route tcc-cc / tcc-libc through the second-stage tcc | Ryan Sepassi | 9 | +217 | -27 |
| 2026-05-04 05:53 | tcc-libc: tcc-boot2 builds mes-libc, runs cc-libc fixtures | Ryan Sepassi | 6 | +257 | -5 |
| 2026-05-04 05:38 | libp1pp: promote mem* to canonical compiler-builtin runtime | Ryan Sepassi | 11 | +165 | -106 |
| 2026-05-04 04:52 | cc: deduplicate codegen and parser helpers | Ryan Sepassi | 2 | +279 | -457 |
| 2026-05-04 03:53 | libp1pp: namespace mem* / str* helpers under libp1pp__ | Ryan Sepassi | 3 | +46 | -42 |
| 2026-05-04 03:51 | docs: refresh cc.scm map + tcc tracker for current state | Ryan Sepassi | 5 | +146 | -570 |
| 2026-05-04 03:50 | cc: apply usual arith conversion to ternary common type | Ryan Sepassi | 3 | +97 | -10 |
| 2026-05-04 02:28 | hex2pp.P1: fix BSS arena overlap on >1 MiB inputs | Ryan Sepassi | 1 | +7 | -3 |
| 2026-05-04 01:24 | cc: update to m1pp+hex2pp | Ryan Sepassi | 4 | +120 | -111 |
| 2026-05-04 01:08 | Update scheme1 for M1pp hex2pp pipeline | Ryan Sepassi | 4 | +1192 | -1140 |
| 2026-05-03 23:53 | update to run hex2pp.P1, rm 00-hello which used old hex2 | Ryan Sepassi | 8 | +904 | -1386 |
| 2026-05-03 23:37 | M1pp: bring M1pp.P1 to parity with M1pp.c; build M1pp from .P1 | Ryan Sepassi | 5 | +54 | -109 |
| 2026-05-03 23:28 | build: M1pp/hex2pp from .c via alpine-gcc; pass -B 0x600000 | Ryan Sepassi | 2 | +43 | -26 |
| 2026-05-03 23:28 | backends: wide-immediate fallbacks across all three arches | Ryan Sepassi | 6 | +320 | -46 |
| 2026-05-03 23:28 | libp1pp: migrate to hex2++ .scope and scoped-loop family | Ryan Sepassi | 12 | +533 | -560 |
| 2026-05-03 23:27 | M1pp: drop %bytes builtin; bare strings emit decoded bytes | Ryan Sepassi | 25 | +208 | -258 |
| 2026-05-03 23:27 | hex2pp: single-input CLI + .ptrsize directive; P1 table prune | Ryan Sepassi | 7 | +335 | -302 |
| 2026-05-03 21:54 | M1pp test updates | Ryan Sepassi | 34 | +408 | -432 |
| 2026-05-03 21:09 | hex2pp.P1, update M1pp.P1 | Ryan Sepassi | 8 | +4242 | -539 |
| 2026-05-03 18:50 | M1pp/hex2pp: direct pipeline, drop M0-style quoting | Ryan Sepassi | 4 | +184 | -249 |
| 2026-05-03 18:18 | hex2pp | Ryan Sepassi | 2 | +920 | -0 |
| 2026-05-02 22:50 | docs: tcc-cc bug investigation report + gdb harness | Ryan Sepassi | 2 | +339 | -0 |
| 2026-05-02 22:50 | p1/aarch64: lower %li(rd, imm) as movz+3xmovk | Ryan Sepassi | 1 | +17 | -2 |
| 2026-05-02 17:28 | mk: set tcc arch from arch | Ryan Sepassi | 1 | +5 | -2 |
| 2026-05-02 16:25 | cc: clear five cc-ext singletons (138 -> 143) | Ryan Sepassi | 2 | +123 | -35 |
| 2026-05-02 15:38 | tests: add cc-ext suite via vendored c-testsuite | Ryan Sepassi | 667 | +7804 | -5 |
| 2026-05-02 15:37 | tcc-cc: ship mem* runtime so -nostdlib fixtures link | Ryan Sepassi | 4 | +81 | -30 |
| 2026-05-02 15:29 | cc/cg: struct/union `=` must memcpy whole aggregate | Ryan Sepassi | 6 | +212 | -97 |
| 2026-05-02 10:51 | tcc-patch: const-expr &&/||/?: must short-circuit (C11 §6.6¶3) | Ryan Sepassi | 6 | +118 | -50 |
| 2026-05-02 03:08 | merge: file-scope compound literals (C99 §6.5.2.5) | Ryan Sepassi | 7 | +106 | -7 |
| 2026-05-02 03:08 | cc/parse: support file-scope compound literals (C99 §6.5.2.5) | Ryan Sepassi | 7 | +106 | -7 |
| 2026-05-02 02:55 | merge: cap variadic args at 16 + boundary tests | Ryan Sepassi | 5 | +108 | -7 |
| 2026-05-02 02:55 | cc/cg: cap variadic incoming args at 16; pin save-area boundary tests | Ryan Sepassi | 5 | +108 | -7 |
| 2026-05-02 02:49 | merge: brace elision in nested aggregate initializers (rebased on current main) | Ryan Sepassi | 7 | +179 | -37 |
| 2026-05-02 02:44 | cc/parse: support brace elision in nested aggregate initializers (C99 §6.7.8 ¶22) | Ryan Sepassi | 7 | +179 | -37 |
| 2026-05-02 02:40 | merge: block-scope inferred-length arrays (rebased on current main) | Ryan Sepassi | 5 | +144 | -1 |
| 2026-05-02 02:39 | cc/parse: infer length for block-scope arrays; reserve frame slot before init | Ryan Sepassi | 5 | +144 | -1 |
| 2026-05-02 02:12 | Revert "merge: block-scope inferred-length arrays" | Ryan Sepassi | 5 | +10 | -147 |
| 2026-05-02 02:12 | Revert "cc/parse: support brace elision in nested aggregate initializers" | Ryan Sepassi | 3 | +0 | -218 |
| 2026-05-02 00:49 | cc/cg: cg-arith-conv casts to common type, not relabel-only | Ryan Sepassi | 1 | +12 | -2 |
| 2026-05-02 00:45 | cc/cg: promote narrow integers to (signed) int | Ryan Sepassi | 1 | +9 | -5 |
| 2026-05-02 01:49 | merge: codegen fixes (4 bugs: spill canon, signed shr, narrow promote, arith conv) | Ryan Sepassi | 12 | +148 | -0 |
| 2026-05-02 01:49 | tests/cc-pp: pin #if short-circuit and /0 diagnostic | Ryan Sepassi | 8 | +23 | -0 |
| 2026-05-02 01:48 | tests/cc-pp: pin arg prescan stringize and paste cases | Ryan Sepassi | 4 | +12 | -0 |
| 2026-05-02 01:48 | merge: lex/pp bug fixes (4 bugs) | Ryan Sepassi | 9 | +71 | -25 |
| 2026-05-02 00:31 | cc/parse: support brace elision in nested aggregate initializers | Ryan Sepassi | 3 | +218 | -0 |
| 2026-05-02 01:47 | merge: block-scope inferred-length arrays | Ryan Sepassi | 5 | +147 | -10 |
| 2026-05-02 00:49 | cc/cg: cg-arith-conv casts to common type, not relabel-only | Ryan Sepassi | 3 | +35 | -2 |
| 2026-05-02 00:49 | cc/parse: infer length for block-scope arrays from initializer | Ryan Sepassi | 5 | +147 | -10 |
| 2026-05-02 00:45 | cc/cg: promote narrow integers to (signed) int | Ryan Sepassi | 3 | +38 | -5 |
| 2026-05-02 00:37 | cc/pp: track #else seen on cond-stack; reject #elif/#else after #else | Ryan Sepassi | 3 | +35 | -13 |
| 2026-05-02 00:37 | cc/cg: signed shift right uses lhs signedness only | Ryan Sepassi | 3 | +48 | -4 |
| 2026-05-02 00:32 | cc/pp: builtin macros emit at original loc to avoid double #line shift | Ryan Sepassi | 3 | +22 | -11 |
| 2026-05-02 00:27 | cc/cg: canonicalize narrow-int spills in %cg-spill-reg | Ryan Sepassi | 8 | +96 | -3 |
| 2026-05-02 00:23 | cc/lex: line-leading %: digraph emits HASH for directives | Ryan Sepassi | 3 | +10 | -1 |
| 2026-05-02 00:19 | cc/pp: stringize escapes control bytes in char/string literals | Ryan Sepassi | 3 | +7 | -0 |
| 2026-05-02 00:09 | cc: fix nine bugs across lex/pp/cg/parse/types | Ryan Sepassi | 18 | +419 | -42 |
| 2026-05-01 22:20 | merge: const-expr short-circuit && and || | Ryan Sepassi | 3 | +83 | -6 |
| 2026-05-01 22:19 | merge: lexer char-literal type fix | Ryan Sepassi | 3 | +32 | -1 |
| 2026-05-01 22:18 | tests/cc: pin macro arg prescan (M(M(1))) | Ryan Sepassi | 2 | +19 | -0 |
| 2026-05-01 22:14 | cc: short-circuit && and || in constant-expression evaluator | Ryan Sepassi | 3 | +74 | -6 |
| 2026-05-01 22:10 | cc: codegen: signed >> unsigned must use arithmetic shift | Ryan Sepassi | 2 | +24 | -0 |
| 2026-05-01 22:07 | cc: const-expr: promote unsigned sub-int types to signed int | Ryan Sepassi | 3 | +85 | -18 |
| 2026-05-01 22:07 | cc: type integer character constants as int (§6.4.4.4) | Ryan Sepassi | 3 | +32 | -1 |
| 2026-05-01 21:55 | cc: add cc.scm.md code map | Ryan Sepassi | 1 | +173 | -0 |
| 2026-05-01 21:55 | cc: deduplicate and unify constant-expression evaluator | Ryan Sepassi | 1 | +82 | -221 |
| 2026-05-01 18:21 | cc: tidy | Ryan Sepassi | 1 | +32 | -56 |
| 2026-05-01 01:26 | scheme1: replace advance_walk(offset) with advance_walk(name) | Ryan Sepassi | 1 | +46 | -55 |
| 2026-05-01 00:43 | scheme1: tidy | Ryan Sepassi | 1 | +807 | -982 |
| 2026-04-30 18:01 | p1pp: extend cmpset macro set | Ryan Sepassi | 4 | +85 | -10 |
| 2026-04-30 17:52 | P1 arch files: rerun gen py | Ryan Sepassi | 3 | +0 | -66 |
| 2026-04-30 17:38 | pokem rm | Ryan Sepassi | 3 | +7 | -278 |
| 2026-04-30 17:13 | tcc-todo update | Ryan Sepassi | 1 | +35 | -12 |
| 2026-04-30 16:55 | cc: fix pp cond stack bug | Ryan Sepassi | 3 | +28 | -0 |
| 2026-04-30 16:50 | tests/cc-pp: expand to cover stdarg shape | Ryan Sepassi | 6 | +105 | -0 |
| 2026-04-30 16:30 | p1pp: expand libp1pp and use from cc.scm | Ryan Sepassi | 18 | +979 | -119 |
| 2026-04-30 15:42 | tcc-cc: rely on libc-flat as the gcc-built sanity reference | Ryan Sepassi | 2 | +18 | -50 |
| 2026-04-30 15:31 | docs: TCC-TODO update — gcc-flat 130/22, gcc-libc-flat 152/0, cc.scm-tcc 13/139 | Ryan Sepassi | 1 | +61 | -22 |
| 2026-04-30 15:25 | tcc-cc: full pass under gcc-built libc-flat tcc (152/0) | Ryan Sepassi | 24 | +303 | -59 |
| 2026-04-30 13:53 | tcc todo update | Ryan Sepassi | 1 | +181 | -343 |
| 2026-04-30 13:53 | tests/cc/: green host compiled cc suite | Ryan Sepassi | 2 | +14 | -27 |
| 2026-04-30 13:29 | Add tcc-cc test suite | Ryan Sepassi | 6 | +123 | -17 |
| 2026-04-30 07:02 | riscv64: support large ADDI immediates in p1_addi and p1_enter | Ryan Sepassi | 1 | +19 | -3 |
| 2026-04-30 06:23 | docs: tcc-boot2 now builds and runs; update TCC-TODO status | Ryan Sepassi | 1 | +34 | -18 |
| 2026-04-30 06:22 | cc: fix for-loop continue to execute the step expression | Ryan Sepassi | 3 | +60 | -30 |
| 2026-04-30 06:22 | entry-libc: save argc/argv across __libc_init | Ryan Sepassi | 1 | +7 | -3 |
| 2026-04-30 06:22 | aarch64: support large ADD/SUB immediates in p1_addi and p1_enter | Ryan Sepassi | 3 | +68 | -4 |
| 2026-04-30 03:49 | Make trace macro preserve registers | Ryan Sepassi | 3 | +103 | -46 |
| 2026-04-30 03:22 | vendor: drop ../ reaches into sibling repos | Ryan Sepassi | 9 | +77 | -24 |
| 2026-04-30 03:21 | tcc-gcc: stock-gcc sanity-check harness | Ryan Sepassi | 5 | +181 | -1 |
| 2026-04-30 03:21 | va_list: route through __builtin_va_list across cc.scm + mes-libc | Ryan Sepassi | 6 | +62 | -133 |
| 2026-04-30 03:21 | rename: lispcc → boot2 across the tree | Ryan Sepassi | 17 | +299 | -299 |
| 2026-04-30 01:46 | p1pp: tracepoint machinery | Ryan Sepassi | 5 | +396 | -51 |
| 2026-04-30 01:11 | mk: more verbose build logs | Ryan Sepassi | 4 | +88 | -25 |
| 2026-04-30 01:09 | m1-symbols.py annotate disassembly, add :_text_end to m1pp+scheme | Ryan Sepassi | 3 | +185 | -0 |
| 2026-04-30 00:55 | regularize build/ dir | Ryan Sepassi | 20 | +422 | -258 |
| 2026-04-29 23:42 | scripts/disasm-elf.sh | Ryan Sepassi | 1 | +75 | -0 |
| 2026-04-29 23:39 | P1pp: fix loop scoping tags, were global, now are local | Ryan Sepassi | 5 | +135 | -40 |
| 2026-04-29 23:31 | tests/cc: tentative bss sizing | Ryan Sepassi | 2 | +77 | -0 |
| 2026-04-29 20:05 | tests/cc-libc: cover all P1pp syscalls + complex libc layers | Ryan Sepassi | 18 | +303 | -0 |
| 2026-04-29 19:51 | cc: stdarg patch to builtins | Ryan Sepassi | 4 | +31 | -22 |
| 2026-04-29 19:39 | tests/cc: extended vararg test | Ryan Sepassi | 2 | +116 | -0 |
| 2026-04-29 19:12 | mes-libc: define __std{in,out,err} | Ryan Sepassi | 1 | +12 | -0 |
| 2026-04-29 18:30 | libc-flatten: silence host preprocessor warnings | Ryan Sepassi | 5 | +15 | -1 |
| 2026-04-29 18:25 | cc.scm: --lib mode for catm-style libc linking | Ryan Sepassi | 11 | +279 | -240 |
| 2026-04-29 18:04 | cc-cg: fix up test to use proper symbol names for extern | Ryan Sepassi | 1 | +2 | -2 |
| 2026-04-29 18:03 | P1: new syscalls lseek, brk, unlinkat | Ryan Sepassi | 7 | +191 | -0 |
| 2026-04-29 18:02 | tests/cc-libc | Ryan Sepassi | 23 | +1006 | -214 |
| 2026-04-29 18:02 | vendor/mes-libc | Ryan Sepassi | 213 | +12029 | -0 |
| 2026-04-29 16:03 | docs: libc plan — port mes libc, build libc.a + libtcc1.a with tcc-boot2 | Ryan Sepassi | 2 | +404 | -0 |
| 2026-04-29 02:08 | docs/LIBC.txt: split symbols into pure-code vs syscall-using | Ryan Sepassi | 1 | +48 | -26 |
| 2026-04-29 01:43 | tcc-boot2: trace pipeline phases and inventory unresolved symbols | Ryan Sepassi | 4 | +117 | -1 |
| 2026-04-29 01:43 | stage1-flatten: vendor local simple-patches for libc stubs | Ryan Sepassi | 21 | +213 | -0 |
| 2026-04-29 01:42 | cc: follow C linkage rules for external/internal symbols | Ryan Sepassi | 5 | +161 | -22 |
| 2026-04-29 00:51 | cc: quoted-hex data emission and signed→unsigned cast canonicalisation | Ryan Sepassi | 5 | +251 | -20 |
| 2026-04-29 00:50 | tcc-boot2: end-to-end harness from tcc.flat.c to ELF | Ryan Sepassi | 3 | +151 | -65 |
| 2026-04-29 00:36 | M1pp: bump caps, cleanup duplication | Ryan Sepassi | 2 | +171 | -177 |
| 2026-04-28 22:49 | cc: offsetof support in const exprs | Ryan Sepassi | 3 | +186 | -5 |
| 2026-04-28 22:35 | cc: stream static array initializers past asm_instrs scratch wall | Ryan Sepassi | 2 | +203 | -74 |
| 2026-04-28 21:48 | scheme1: prelude wrappers for the two heap-arena patterns | Ryan Sepassi | 5 | +259 | -100 |
| 2026-04-28 21:33 | cc: clear four tcc.flat.c blockers, hit asm_instrs scratch wall | Ryan Sepassi | 6 | +326 | -56 |
| 2026-04-28 20:25 | cc: parse-and-discard GNU __attribute__ specs | Ryan Sepassi | 2 | +104 | -73 |
| 2026-04-28 20:13 | cc: replace per-type promote walkers with deep-copy | Ryan Sepassi | 2 | +51 | -407 |
| 2026-04-28 20:06 | Document deep-copy promotion status | Ryan Sepassi | 1 | +120 | -0 |
| 2026-04-28 20:01 | Keep scheme1 global metadata on main heap | Ryan Sepassi | 5 | +125 | -10 |
| 2026-04-28 19:27 | scheme1: record introspection, deep-copy | Ryan Sepassi | 6 | +479 | -0 |
| 2026-04-28 19:27 | cloc add prelude.scm | Ryan Sepassi | 1 | +8 | -6 |
| 2026-04-28 18:42 | rm impl plan doc | Ryan Sepassi | 1 | +0 | -356 |
| 2026-04-28 18:41 | scheme1: add list traversal primitives | Ryan Sepassi | 6 | +190 | -27 |
| 2026-04-28 18:08 | cc: CC-SCRATCH Phase 3 — parse-decl-or-fn boundary | Ryan Sepassi | 2 | +402 | -72 |
| 2026-04-28 17:56 | scheme1: hex number<->string and format, rename eof-object to eof | Ryan Sepassi | 7 | +251 | -53 |
| 2026-04-28 17:47 | SCHEME1.md | Ryan Sepassi | 3 | +263 | -225 |
| 2026-04-28 16:41 | scheme1: drop unused special forms (unless, define-values, case-lambda, letrec/letrec*, quasiquote) | Ryan Sepassi | 15 | +13 | -739 |
| 2026-04-28 16:32 | scheme1: 8-aligned strings | Ryan Sepassi | 1 | +31 | -45 |
| 2026-04-28 16:25 | scheme1: CC-SCRATCH Phase 2 — two-heap primitives | Ryan Sepassi | 3 | +224 | -36 |
| 2026-04-28 15:53 | cc: CC-SCRATCH Phase 1 pre-refactors | Ryan Sepassi | 1 | +161 | -114 |
| 2026-04-28 15:00 | docs: CC-SCRATCH plan — bound parse heap via scratch arena | Ryan Sepassi | 1 | +356 | -0 |
| 2026-04-28 07:21 | cc: redecl compatibility, update cc docs | Ryan Sepassi | 13 | +284 | -775 |
| 2026-04-28 04:01 | cc streaming architecture | Ryan Sepassi | 1 | +434 | -204 |
| 2026-04-28 02:57 | docs: TCC-TODO punchlist + CC-STREAM plan | Ryan Sepassi | 2 | +433 | -0 |
| 2026-04-28 02:56 | scheme1: bump HEAP_CAP_BYTES 64 -> 256 MiB, p_memsz 128 -> 512 MB | Ryan Sepassi | 4 | +6 | -6 |
| 2026-04-28 02:56 | cc: lex per-token heap-mark/rewind + scratch buffer | Ryan Sepassi | 1 | +200 | -92 |
| 2026-04-28 01:58 | cc: float/double parse | Ryan Sepassi | 4 | +94 | -10 |
| 2026-04-28 00:14 | scheme1: quote raw-byte padding for riscv64 M0 | Ryan Sepassi | 1 | +126 | -125 |
| 2026-04-27 23:34 | scheme1: bump READBUF_CAP_BYTES 256 KiB -> 1 MiB | Ryan Sepassi | 1 | +2 | -2 |
| 2026-04-27 23:34 | cc: use scheme1 multiple-values protocol for tuple returns | Ryan Sepassi | 2 | +140 | -157 |
| 2026-04-27 21:37 | scheme1: multiple-values protocol | Ryan Sepassi | 13 | +488 | -3 |
| 2026-04-27 21:03 | docs rm old | Ryan Sepassi | 6 | +0 | -3288 |
| 2026-04-27 21:02 | scheme1: quasiquote, variadic prims | Ryan Sepassi | 8 | +461 | -56 |
| 2026-04-27 21:16 | cc: struct return — indirect-result (sret) convention (A2) | Ryan Sepassi | 4 | +197 | -124 |
| 2026-04-27 20:43 | cc: struct return — one-word and two-word direct conventions (A1) | Ryan Sepassi | 6 | +283 | -18 |
| 2026-04-27 20:39 | cc: compound literals (Stream B) | Ryan Sepassi | 1 | +67 | -9 |
| 2026-04-27 20:38 | cc: integer constant expressions (Stream C) | Ryan Sepassi | 1 | +343 | -7 |
| 2026-04-27 20:38 | cc: union field offsets + sizeof no-emit (Stream D) | Ryan Sepassi | 3 | +118 | -31 |
| 2026-04-27 20:42 | readme update | Ryan Sepassi | 1 | +5 | -5 |
| 2026-04-27 20:24 | update readme | Ryan Sepassi | 1 | +2 | -1 |
| 2026-04-27 20:23 | docs: cc parallel work plan | Ryan Sepassi | 1 | +233 | -0 |
| 2026-04-27 20:12 | scheme1: single-arm if, do, case-lambda, letrec* | Ryan Sepassi | 7 | +428 | -49 |
| 2026-04-27 19:37 | cc: combine files into 1 | Ryan Sepassi | 12 | +5257 | -5259 |
| 2026-04-27 19:28 | docs: r7rs todo | Ryan Sepassi | 1 | +124 | -0 |
| 2026-04-27 19:28 | scheme1 prelude: various extensions | Ryan Sepassi | 1 | +308 | -26 |
| 2026-04-27 19:27 | tests/scheme1: prelude tests, do/case/if tests, 3-digit prefix | Ryan Sepassi | 208 | +352 | -8 |
| 2026-04-27 19:04 | tests/cc: add compound-literal and const-expr fixtures | Ryan Sepassi | 4 | +252 | -0 |
| 2026-04-27 18:54 | cc/cg: use pmatch record patterns for opnd/sym dispatch | Ryan Sepassi | 1 | +95 | -106 |
| 2026-04-27 18:47 | cloc: add cc scm files | Ryan Sepassi | 1 | +1 | -0 |
| 2026-04-27 18:41 | cc/parse: use pmatch record patterns for token dispatch | Ryan Sepassi | 1 | +260 | -285 |
| 2026-04-27 18:41 | scheme1: pmatch record-destructuring patterns | Ryan Sepassi | 3 | +289 | -6 |
| 2026-04-27 18:34 | tests/cc/: 3-digit prefix rename | Ryan Sepassi | 238 | +0 | -0 |
| 2026-04-27 18:24 | cc: add 35 e2e tests probing parse/codegen gaps from CC.md | Ryan Sepassi | 70 | +749 | -0 |
| 2026-04-27 17:57 | scheme1: when, unless, case | Ryan Sepassi | 7 | +351 | -112 |
| 2026-04-27 17:46 | cc: merge parse+e2e tests into tests/cc/ | Ryan Sepassi | 212 | +118 | -585 |
| 2026-04-27 17:35 | cc: fix three kitchen-sink-blocking bugs; split into per-feature e2e fixtures | Ryan Sepassi | 66 | +1103 | -36 |
| 2026-04-27 17:23 | scripts: collapse test runner to one container per arch | Ryan Sepassi | 3 | +512 | -507 |
| 2026-04-27 16:47 | cc/util: round buf caps to powers of two | Ryan Sepassi | 1 | +9 | -11 |
| 2026-04-27 16:46 | scheme1: split string semantics from raw bytevectors | Ryan Sepassi | 3 | +252 | -111 |
| 2026-04-27 16:02 | m1pp: increase text cap | Ryan Sepassi | 2 | +10 | -10 |
| 2026-04-27 16:01 | cc: pre-allocate global outputs, use mark+reset per fn | Ryan Sepassi | 4 | +214 | -58 |
| 2026-04-27 15:32 | cc: use mark+reset in lex+pp | Ryan Sepassi | 2 | +318 | -251 |
| 2026-04-27 15:01 | scheme1: add (heap-mark) and (heap-rewind!) for arena-style reclamation | Ryan Sepassi | 3 | +114 | -3 |
| 2026-04-27 15:01 | cc/lex: cut heap allocations via fast-path peek + per-byte bv elision + punct buckets | Ryan Sepassi | 1 | +260 | -92 |
| 2026-04-27 11:03 | cc: add debug-log facility + per-phase heap-usage instrumentation | Ryan Sepassi | 2 | +68 | -11 |
| 2026-04-27 11:01 | scheme1: add (heap-usage) primitive returning bytes consumed | Ryan Sepassi | 1 | +15 | -0 |
| 2026-04-27 10:43 | scheme1: bump heap to 64 MiB, ELF p_memsz to 128 MiB; reorder arenas | Ryan Sepassi | 6 | +351 | -10 |
| 2026-04-27 10:10 | cc/parse: skip useless spill on void-returning calls | Ryan Sepassi | 3 | +36 | -2 |
| 2026-04-27 10:04 | cc/cg: drop vestigial cg-loop-end no-op | Ryan Sepassi | 5 | +48 | -58 |
| 2026-04-27 09:49 | cc/cg: &arr yields T(*)[N] per strict C | Ryan Sepassi | 3 | +25 | -6 |
| 2026-04-27 09:29 | cc/cg: variadic incoming-arg window covers indices 0..15 | Ryan Sepassi | 5 | +72 | -29 |
| 2026-04-27 09:17 | cc tests: lock in void* byte-arithmetic semantics | Ryan Sepassi | 2 | +18 | -0 |
| 2026-04-27 08:08 | cc/parse: lvalue-conversion runs for every cast (§L.1) | Ryan Sepassi | 4 | +44 | -10 |
| 2026-04-27 06:53 | Merge Agent 3: §E + §I + §L.3 (initializers + storage + fn-ptr table) | Ryan Sepassi | 40 | +958 | -75 |
| 2026-04-27 06:50 | Merge Agent 4: §F + §G + §J + §K.2-6 (ctrl/varargs/envelope) | Ryan Sepassi | 44 | +918 | -99 |
| 2026-04-27 06:49 | Merge Agent 2: §D + §L.2 (aggregates + array-param decay) | Ryan Sepassi | 27 | +563 | -56 |
| 2026-04-27 06:48 | Merge Agent 1: §B + §C + §H + §K.1 (lvalue/sizeof/conditionals/comma) | Ryan Sepassi | 42 | +593 | -103 |
| 2026-04-27 06:46 | docs: mark §F.1-4, §G.1-2, §J.1-3, §K.2-6 done in punchlist | Ryan Sepassi | 1 | +85 | -74 |
| 2026-04-27 06:26 | cc/parse: drop unused parse-init-list backwards-compat alias | Ryan Sepassi | 1 | +0 | -2 |
| 2026-04-27 06:16 | cc/parse: __builtin_va_{start,arg,end} + bundled stdarg.h (§G.2) | Ryan Sepassi | 4 | +113 | -8 |
| 2026-04-27 06:09 | cc/parse: §I block-static mangling stores in sym-name | Ryan Sepassi | 4 | +81 | -54 |
| 2026-04-27 06:02 | cc/cg: variadic receive — cg-fn-begin/v + cg-va-{start,arg,end} (§G.2) | Ryan Sepassi | 3 | +208 | -5 |
| 2026-04-27 05:56 | cc/cg+parse: array of fn pointers initialized with names (§L.3) | Ryan Sepassi | 4 | +66 | -0 |
| 2026-04-27 05:53 | cc/cg+parse: block-scope static lives in .data, not on the stack (§I) | Ryan Sepassi | 4 | +59 | -0 |
| 2026-04-27 05:51 | cc tests: pointer comparisons use unsigned ltu (§K.6) | Ryan Sepassi | 4 | +40 | -0 |
| 2026-04-27 05:50 | cc/parse: local struct initializer (§E.8) | Ryan Sepassi | 2 | +12 | -0 |
| 2026-04-27 05:49 | cc/parse: local array initializer (§E.7) | Ryan Sepassi | 3 | +14 | -2 |
| 2026-04-27 05:49 | cc/parse: T[] in param position decays to T* (§L.2) | Ryan Sepassi | 3 | +34 | -6 |
| 2026-04-27 05:48 | cc tests: void* <-> T* implicit conversion fixture (§K.4) | Ryan Sepassi | 2 | +11 | -0 |
| 2026-04-27 05:47 | cc/parse: struct passed by pointer to function (§D.7) | Ryan Sepassi | 3 | +24 | -3 |
| 2026-04-27 05:47 | cc tests: enum constant in expressions (§K.3) | Ryan Sepassi | 2 | +7 | -0 |
| 2026-04-27 05:46 | docs/CC-PUNCHLIST: mark §B + §C + §H + §K.1 as green | Ryan Sepassi | 1 | +78 | -70 |
| 2026-04-27 05:46 | cc/parse: compound-assign + ++/-- + sizeof + ternary + && + || + comma (§B, §C, §H, §K.1) | Ryan Sepassi | 23 | +139 | -23 |
| 2026-04-27 05:46 | cc/parse: multi-dim arrays via right-to-left suffix wrap (§D.6) | Ryan Sepassi | 4 | +32 | -5 |
| 2026-04-27 05:46 | cc tests: function-pointer call (§K.2) | Ryan Sepassi | 4 | +50 | -0 |
| 2026-04-27 05:46 | cc/cg: cg-dup, cg-postinc/postdec, ptr-aware arith-conv, cg-ifelse-merge (§B, §H) | Ryan Sepassi | 18 | +376 | -10 |
| 2026-04-27 05:45 | cc/cg+parse: struct global designated init (§E.6) | Ryan Sepassi | 6 | +59 | -15 |
| 2026-04-27 05:44 | cc tests: multi-fn TU with forward reference (§J.3) | Ryan Sepassi | 2 | +12 | -0 |
| 2026-04-27 05:43 | cc/cg+parse: int main() falling off end returns 0 (§J.2) | Ryan Sepassi | 3 | +20 | -2 |
| 2026-04-27 05:42 | cc/parse: array element access at non-zero index fixture (§D.5) | Ryan Sepassi | 3 | +22 | -7 |
| 2026-04-27 05:41 | cc/cg: array element access at non-zero index (§D.5) | Ryan Sepassi | 2 | +56 | -0 |
| 2026-04-27 05:40 | cc/cg+parse: struct global positional init (§E.5) | Ryan Sepassi | 4 | +49 | -0 |
| 2026-04-27 05:39 | cc/parse: per-arg cast-or-promote in parse-call-args (§G.1, §K.5) | Ryan Sepassi | 5 | +84 | -7 |
| 2026-04-27 05:39 | cc/parse: arrow + nested struct access fixtures (§D.3 §D.4) | Ryan Sepassi | 5 | +50 | -7 |
| 2026-04-27 05:39 | cc tests: variadic call site exercises cg-promote per arg (§G.1) | Ryan Sepassi | 2 | +58 | -0 |
| 2026-04-27 05:39 | cc/cg: lock in p->x arrow access via cg fixture (§D.3) | Ryan Sepassi | 2 | +60 | -0 |
| 2026-04-27 05:39 | cc/cg+parse: char[] from string-literal initializer (§E.4) | Ryan Sepassi | 4 | +33 | -0 |
| 2026-04-27 05:37 | cc/cg+parse: array global from element list (§E.3) | Ryan Sepassi | 5 | +52 | -2 |
| 2026-04-27 05:36 | cc/parse: lock in struct member store fixture (§D.2) | Ryan Sepassi | 3 | +22 | -4 |
| 2026-04-27 05:36 | cc/cg: lock in struct member store fixture (§D.2) | Ryan Sepassi | 2 | +57 | -0 |
| 2026-04-27 05:34 | cc/parse: dot/arrow use cg-push-field (§D.1) | Ryan Sepassi | 4 | +42 | -18 |
| 2026-04-27 05:34 | cc/cg: add cg-push-field + array decay (§D.1) | Ryan Sepassi | 3 | +159 | -1 |
| 2026-04-27 05:33 | cc/parse: real goto + labelled-stmt via cg-goto/cg-emit-label (§F.4) | Ryan Sepassi | 3 | +17 | -3 |
| 2026-04-27 05:31 | cc/cg: add cg-emit-label / cg-goto for goto+labels (§F.4) | Ryan Sepassi | 3 | +73 | -2 |
| 2026-04-27 05:30 | cc/cg+parse: address initializer for global pointer (§E.2) | Ryan Sepassi | 4 | +33 | -0 |
| 2026-04-27 05:28 | cc/parse: real init-list parser; scalar global init (§E.1) | Ryan Sepassi | 3 | +467 | -20 |
| 2026-04-27 05:26 | cc tests: switch / case / default with fall-through (§F.3) | Ryan Sepassi | 4 | +88 | -0 |
| 2026-04-27 05:25 | cc/cg: structured init for cg-emit-global; scalar global init (§E.1) | Ryan Sepassi | 4 | +63 | -6 |
| 2026-04-27 05:25 | cc tests: for (int i = 0; cond; step) fixture (§F.2) | Ryan Sepassi | 2 | +7 | -0 |
| 2026-04-27 05:24 | cc tests: do { } while (cond) fixtures (§F.1) | Ryan Sepassi | 4 | +47 | -0 |
| 2026-04-27 04:55 | cc tests: lock in integer promotion preserves sign (§A.6) | Ryan Sepassi | 5 | +48 | -6 |
| 2026-04-27 04:52 | cc tests: lock in unsigned narrowing zero-extends (§A.5) | Ryan Sepassi | 5 | +34 | -4 |
| 2026-04-27 04:50 | cc/cg: signed narrowing sign-extends on re-widen (§A.4) | Ryan Sepassi | 6 | +43 | -5 |
| 2026-04-27 04:46 | cc/cg: width-aware 32-bit load/store, generalised N-byte helpers (§A.3) | Ryan Sepassi | 6 | +125 | -47 |
| 2026-04-27 04:41 | cc/cg: width-aware 16-bit load/store via byte decomposition (§A.2) | Ryan Sepassi | 6 | +124 | -35 |
| 2026-04-27 04:37 | cc/cg: width-aware byte load/store for char lvals (§A.1) | Ryan Sepassi | 6 | +117 | -15 |
| 2026-04-27 04:12 | cc: add CC-PUNCHLIST.md — TDD checklist of red codegen capabilities | Ryan Sepassi | 2 | +398 | -0 |
| 2026-04-27 03:53 | cc tests: switch cc-cg/cc-parse to runtime-validating fixtures | Ryan Sepassi | 84 | +402 | -793 |
| 2026-04-27 02:07 | cc/pp: adjacent-string concat, more built-ins, stringize escapes, empty args | Ryan Sepassi | 16 | +127 | -9 |
| 2026-04-26 23:31 | P1pp: add %fn2 / %stl / %ldl + init_arenas; adopt in scheme1 | Ryan Sepassi | 2 | +953 | -938 |
| 2026-04-26 23:07 | M1pp: %frame %local support | Ryan Sepassi | 11 | +1102 | -34 |
| 2026-04-26 22:14 | scheme1: adopt libp1pp global/array helpers; add pair + heap field macros | Ryan Sepassi | 1 | +1231 | -1291 |
| 2026-04-26 22:14 | P1pp: add ld/st/lda_global and ld/st/lda_array helpers | Ryan Sepassi | 1 | +845 | -775 |
| 2026-04-26 22:14 | m1pp: bump MAX_MACROS 512 -> 1024 | Ryan Sepassi | 2 | +3 | -3 |
| 2026-04-26 22:14 | make: add P1pp.P1pp to cloc target | Ryan Sepassi | 1 | +1 | -0 |
| 2026-04-26 23:34 | scripts: rework tcc bootstrap into 3 stages + add live-bootstrap diag | Ryan Sepassi | 7 | +1098 | -596 |
| 2026-04-26 14:55 | docs: TCC.md — pipeline from tarball to tcc-boot0-mes + open bugs | Ryan Sepassi | 1 | +337 | -0 |
| 2026-04-26 14:46 | scripts/build-tcc-real.sh: build mes libc with tcc-host, link tcc-boot0-mes | Ryan Sepassi | 1 | +161 | -84 |
| 2026-04-26 11:11 | scripts: build-tcc-real.sh — assemble real tcc-0.9.26 from our chain | Ryan Sepassi | 1 | +111 | -0 |
| 2026-04-26 10:33 | scripts: build-tcc-source.sh — flatten tcc-0.9.26 and validate self-host | Ryan Sepassi | 1 | +214 | -0 |
| 2026-04-26 10:15 | cc: switch cc-pp + cc-parse to real pipeline; uncover & fix lex/pp bug | Ryan Sepassi | 137 | +686 | -1317 |
| 2026-04-26 09:39 | make: wire cc-* suites into run-tests.sh + add cc-e2e | Ryan Sepassi | 11 | +239 | -111 |
| 2026-04-26 09:21 | cc: phase-1 milestone — int main(int argc, char **argv) compiles e2e | Ryan Sepassi | 22 | +89 | -34 |
| 2026-04-26 09:04 | cc: resolve cg/parse contract drift; bump scheme1 readbuf to 256K | Ryan Sepassi | 10 | +145 | -75 |
| 2026-04-26 05:50 | cc: implement lex / pp / cg / parse modules | Ryan Sepassi | 159 | +5215 | -185 |
| 2026-04-26 05:15 | cc: util.scm — implement TBD helpers; add 14 test fixtures | Ryan Sepassi | 30 | +402 | -21 |
| 2026-04-26 04:58 | cc: scaffold compiler tree and test dirs | Ryan Sepassi | 19 | +661 | -0 |
| 2026-04-26 04:50 | docs: add C compiler spec — CC.md, CC-INTERNALS.md, CC-CONTRACTS.md | Ryan Sepassi | 3 | +1705 | -0 |
| 2026-04-26 00:25 | scheme1: implement pmatch special form per LISP-PMATCH.md | Ryan Sepassi | 17 | +524 | -0 |
| 2026-04-26 00:15 | make: cloc covers P1 tables + vendor seeds, ARCH= narrows scope | Ryan Sepassi | 1 | +16 | -3 |
| 2026-04-26 00:07 | make: add cloc target for core source line counts | Ryan Sepassi | 1 | +15 | -1 |
| 2026-04-26 00:04 | docs: add LISP-PMATCH spec and concrete pmatch impl sketch | Ryan Sepassi | 2 | +527 | -18 |
| 2026-04-25 23:57 | scheme1: forbid internal define; eval_body rejects with clear error | Ryan Sepassi | 5 | +40 | -5 |
| 2026-04-25 23:30 | scheme1: tighten 45-shell-spawn and 67-read-line to prelude-only | Ryan Sepassi | 2 | +7 | -18 |
| 2026-04-25 23:26 | docs: drop scheme-shell-todo audit (gaps closed) | Ryan Sepassi | 1 | +0 | -214 |
| 2026-04-25 23:26 | scheme1: rework shell + file-IO test coverage to prelude API only | Ryan Sepassi | 16 | +137 | -66 |
| 2026-04-25 23:26 | scheme1: tighten cond no-else, let* shadow, letrec recursion tests | Ryan Sepassi | 5 | +28 | -8 |
| 2026-04-25 23:26 | scheme1: 16 MB heap arena, ELF p_memsz to 32 MB | Ryan Sepassi | 4 | +10 | -8 |
| 2026-04-25 23:16 | scheme1: set!, cond => arrow, number/string radix-arg surface | Ryan Sepassi | 3 | +178 | -24 |
| 2026-04-25 23:15 | M1pp: bump TEXT_CAP 512KB -> 640KB, log text/output usage in native build | Ryan Sepassi | 2 | +8 | -7 |
| 2026-04-25 23:15 | argv test | Ryan Sepassi | 2 | +7 | -0 |
| 2026-04-25 22:58 | scheme1: tests for set! and number/string radix-arg surface | Ryan Sepassi | 3 | +62 | -0 |
| 2026-04-25 22:34 | scheme1: tests for hex string escapes, signed-int literals, and strict reader | Ryan Sepassi | 8 | +54 | -1 |
| 2026-04-25 22:31 | scheme1: add symbol?, #u8(...) literal, number?/bytevector? aliases | Ryan Sepassi | 5 | +310 | -20 |
| 2026-04-25 22:06 | scheme1: match record api to r7rs | Ryan Sepassi | 2 | +13 | -168 |
| 2026-04-25 21:51 | scheme1: fix parse_dec | Ryan Sepassi | 1 | +39 | -29 |
| 2026-04-25 21:42 | M1pp: track source line numbers and report them in error messages | Ryan Sepassi | 1 | +38 | -11 |
| 2026-04-25 21:35 | scheme1: string<->sym, bytevector-append, type preds, number<->str, quot/rem, bit-xor/not, set-car/cdr! | Ryan Sepassi | 2 | +413 | -142 |
| 2026-04-25 21:33 | scheme1: add min, max, modulo to the prelude | Ryan Sepassi | 1 | +14 | -0 |
| 2026-04-25 21:32 | scheme1: red-green tests for R7RS record API surface | Ryan Sepassi | 6 | +36 | -8 |
| 2026-04-25 21:32 | scheme1: pending tests for type predicates, quot/rem/mod, min/max/abs, bit-xor/not, num<->str | Ryan Sepassi | 10 | +140 | -0 |
| 2026-04-25 21:30 | scheme1: tests for string->symbol, symbol->string, bytevector-append | Ryan Sepassi | 6 | +75 | -16 |
| 2026-04-25 21:13 | scheme1: string? / set-car! / set-cdr! / length / list-ref primitives | Ryan Sepassi | 10 | +156 | -7 |
| 2026-04-25 20:58 | scheme1: > primitive, positive? prelude entry, comparison test coverage | Ryan Sepassi | 5 | +50 | -42 |
| 2026-04-25 20:53 | scheme1: equal?, bytevector=?; shell+fileio e2e test | Ryan Sepassi | 11 | +409 | -67 |
| 2026-04-25 20:39 | scheme1: string literal, char literal | Ryan Sepassi | 11 | +327 | -3 |
| 2026-04-25 20:38 | scheme1: display, write, format, error primitives | Ryan Sepassi | 11 | +699 | -21 |
| 2026-04-25 20:28 | scheme1: and/or special forms; drop embedded prelude | Ryan Sepassi | 6 | +130 | -145 |
| 2026-04-25 20:24 | scheme1: lift prelude to scheme1/prelude.scm, catm at run time | Ryan Sepassi | 3 | +375 | -4 |
| 2026-04-25 20:08 | scheme1: runtime errors, bytevector bounds, helper macros | Ryan Sepassi | 6 | +1039 | -749 |
| 2026-04-25 20:02 | Make M1pp directives whitespace-insensitive in M1pp.c | Ryan Sepassi | 1 | +139 | -75 |
| 2026-04-25 19:33 | M1pp whitespace tests | Ryan Sepassi | 18 | +50 | -8 |
| 2026-04-25 19:07 | rm old lisp code and script | Ryan Sepassi | 60 | +0 | -1067 |
| 2026-04-25 17:25 | Audit scheme1: document deviations and known issues | Ryan Sepassi | 1 | +324 | -12 |
| 2026-04-25 17:13 | Port shell.scm helpers into the embedded prelude | Ryan Sepassi | 5 | +85 | -0 |
| 2026-04-25 16:49 | Add scheme1 embedded prelude | Ryan Sepassi | 3 | +96 | -4 |
| 2026-04-25 16:22 | Add scheme1 syscall primitives, sys-argv, and EOF immediate | Ryan Sepassi | 9 | +404 | -7 |
| 2026-04-25 16:10 | Add scheme1 define-record-type and parameterized PRIM data slot | Ryan Sepassi | 9 | +430 | -5 |
| 2026-04-25 15:58 | Add scheme1 bytevectors with dynamic-array semantics | Ryan Sepassi | 14 | +359 | -2 |
| 2026-04-25 15:38 | Add scheme1 arith and list primitives | Ryan Sepassi | 13 | +343 | -33 |
| 2026-04-25 15:32 | Add scheme1 cond, begin, and the let family | Ryan Sepassi | 15 | +493 | -49 |
| 2026-04-25 15:17 | Add variadic .-tail to scheme1 lambda/define | Ryan Sepassi | 9 | +74 | -3 |
| 2026-04-25 15:14 | Add scheme1 top-level define and read-eval loop | Ryan Sepassi | 7 | +101 | -5 |
| 2026-04-25 14:12 | Add scheme1 reader: `;` comments, `'datum` quote, `#xNN` hex literals | Ryan Sepassi | 8 | +139 | -1 |
| 2026-04-25 13:48 | Add scheme1 lambda, closures, and alist environments | Ryan Sepassi | 7 | +173 | -2 |
| 2026-04-25 13:40 | Use %tail / %tailr at every scheme1 tail position | Ryan Sepassi | 1 | +15 | -21 |
| 2026-04-25 13:32 | Add scheme1 `if` special form and #t/#f reader literals | Ryan Sepassi | 5 | +109 | -1 |
| 2026-04-25 13:13 | Heap-allocate PRIM objects so the HEAP tag bits land correctly | Ryan Sepassi | 1 | +25 | -11 |
| 2026-04-25 10:03 | Refactor scheme1.P1pp: use tag idioms, lexer helpers, %die, %alignup | Ryan Sepassi | 3 | +104 | -119 |
| 2026-04-25 10:03 | Add scheme1 phase-1 interpreter spine and test runner | Ryan Sepassi | 7 | +953 | -34 |
| 2026-04-25 03:39 | Refactor M1pp.P1 boilerplate: BSS init loop, lex helper, char-class table | Ryan Sepassi | 4 | +207 | -243 |
| 2026-04-25 01:20 | Move M1pp.P1's BSS-style buffers past ELF_end; bump ph_memsz to 8MB | Ryan Sepassi | 8 | +476 | -16815 |
| 2026-04-25 01:02 | Drop parens on zero-arg macro calls | Ryan Sepassi | 10 | +114 | -114 |
| 2026-04-25 00:52 | rm post, moved to site | Ryan Sepassi | 1 | +0 | -423 |
| 2026-04-25 00:52 | P1.LI: take immediate as a macro arg | Ryan Sepassi | 8 | +139 | -130 |
| 2026-04-25 00:32 | M1pp.P1 correct tokens end | Ryan Sepassi | 1 | +2 | -2 |
| 2026-04-25 00:05 | Pass ARCH via env, drop arg-list noise from script invocations | Ryan Sepassi | 7 | +78 | -101 |
| 2026-04-24 23:57 | Push container builds onto tmpfs; restructure scripts/ around boot-* convention | Ryan Sepassi | 15 | +1957 | -401 |
| 2026-04-24 23:04 | Drop "v2" from P1 naming everywhere | Ryan Sepassi | 15 | +80 | -79 |
| 2026-04-24 22:58 | Restructure build into scripts/, vendor seeds, unify ARCH paths | Ryan Sepassi | 115 | +9829 | -2199 |
| 2026-04-24 22:54 | Add amd64 / riscv64 P1v2 generators; explicit ARCHES wiring | Ryan Sepassi | 5 | +1722 | -0 |
| 2026-04-24 22:25 | Add readme | Ryan Sepassi | 1 | +41 | -0 |
| 2026-04-24 22:17 | rm old P1 lisp | Ryan Sepassi | 1 | +0 | -7119 |
| 2026-04-24 22:03 | Simplify P1-amd64.M1pp helpers; drop native reg tables from P1.md | Ryan Sepassi | 2 | +95 | -272 |
| 2026-04-24 20:33 | Fold LA_BR into branch/call/tail at P1.M1pp layer | Ryan Sepassi | 7 | +266 | -447 |
| 2026-04-24 19:06 | Add libp1pp v1 utility library (p1/p1pp.P1pp) | Ryan Sepassi | 1 | +1457 | -0 |
| 2026-04-24 19:06 | Bump M1PP macro cap from 256 to 512 | Ryan Sepassi | 3 | +4 | -4 |
| 2026-04-24 18:56 | Add %scope / %endscope and :: label rewrite to M1PP | Ryan Sepassi | 23 | +845 | -51 |
| 2026-04-24 18:11 | LIBP1PP.md | Ryan Sepassi | 1 | +571 | -0 |
| 2026-04-24 17:41 | Rename .M1→.P1 and .P1→.P1pp to reflect toolchain level | Ryan Sepassi | 12 | +22 | -23 |
| 2026-04-24 17:23 | Port m1pp/pokem to p1_main and emit :_start from p1_gen.py | Ryan Sepassi | 6 | +90 | -52 |
| 2026-04-24 16:51 | Add pokem, a P1 raw-byte file patcher | Ryan Sepassi | 1 | +262 | -0 |
| 2026-04-24 16:03 | Hide P1 frame header and merge LEAVE+RET into ERET | Ryan Sepassi | 12 | +505 | -303 |
| 2026-04-24 15:09 | Expand post with missing m1pp/P1 features and P1 source examples | Ryan Sepassi | 1 | +80 | -0 |
| 2026-04-24 15:09 | Add argc_exit and double P1 test fixtures | Ryan Sepassi | 4 | +30 | -0 |
| 2026-04-24 15:09 | Require active frame for CALL/CALLR in P1 spec | Ryan Sepassi | 1 | +4 | -5 |
| 2026-04-24 14:54 | Add riscv64 and amd64 P1v2 backends with multi-arch test harness | Ryan Sepassi | 9 | +1672 | -84 |
| 2026-04-24 12:44 | Speed up P1 build/test loop ~30-70x via native mescc-tools | Ryan Sepassi | 4 | +194 | -43 |
| 2026-04-24 04:25 | Add P1v2 program-entry model (aarch64 _start stub calling p1_main) | Ryan Sepassi | 4 | +73 | -23 |
| 2026-04-24 04:14 | Update Lisp plan for P1 | Ryan Sepassi | 1 | +414 | -107 |
| 2026-04-24 03:28 | M1PP doc | Ryan Sepassi | 1 | +179 | -0 |
| 2026-04-24 03:15 | rm old docs | Ryan Sepassi | 7 | +483 | -2981 |
| 2026-04-24 03:09 | update post | Ryan Sepassi | 1 | +1 | -1 |
| 2026-04-24 03:09 | shell.scm | Ryan Sepassi | 1 | +201 | -0 |
| 2026-04-24 03:08 | lisp docs | Ryan Sepassi | 3 | +765 | -1119 |
| 2026-04-24 01:22 | m1pp.M1: port %struct and %enum directives | Ryan Sepassi | 1 | +527 | -1 |
| 2026-04-24 01:22 | m1pp: add %struct and %enum directives | Ryan Sepassi | 5 | +314 | -0 |
| 2026-04-24 00:44 | tests/m1pp/12-braced-args: compose §1 local labels in WHILE_NEZ | Ryan Sepassi | 2 | +4 | -4 |
| 2026-04-24 00:22 | Merge feature: braced block arguments (§2) | Ryan Sepassi | 5 | +405 | -7 |
| 2026-04-24 00:22 | Merge feature: local labels :@name / &@name (§1) | Ryan Sepassi | 4 | +395 | -2 |
| 2026-04-24 00:22 | Merge feature: %str stringification builtin (§7) | Ryan Sepassi | 7 | +264 | -2 |
| 2026-04-24 00:22 | Merge feature: strlen expression op (§3) | Ryan Sepassi | 5 | +137 | -4 |
| 2026-04-24 00:22 | Merge feature: paren-less 0-arg macro calls (§4) | Ryan Sepassi | 6 | +202 | -24 |
| 2026-04-24 00:21 | m1pp.M1: port %str stringification builtin | Ryan Sepassi | 1 | +153 | -1 |
| 2026-04-24 00:20 | m1pp.M1: port strlen expression op | Ryan Sepassi | 1 | +89 | -3 |
| 2026-04-24 00:20 | m1pp.M1: port local labels (:@name, &@name) | Ryan Sepassi | 1 | +259 | -2 |
| 2026-04-24 00:19 | m1pp.M1: port braced block arguments | Ryan Sepassi | 1 | +213 | -5 |
| 2026-04-24 00:17 | m1pp.M1: allow paren-less invocation of 0-arg macros | Ryan Sepassi | 1 | +67 | -13 |
| 2026-04-24 00:06 | m1pp: add %str stringification builtin | Ryan Sepassi | 6 | +111 | -1 |
| 2026-04-24 00:05 | m1pp: allow paren-less invocation of 0-arg macros | Ryan Sepassi | 5 | +135 | -11 |
| 2026-04-24 00:05 | m1pp: add braced block arguments | Ryan Sepassi | 4 | +192 | -2 |
| 2026-04-24 00:04 | m1pp: add strlen expression op | Ryan Sepassi | 4 | +48 | -1 |
| 2026-04-24 00:04 | m1pp: add local labels (:@name, &@name) | Ryan Sepassi | 3 | +136 | -0 |
| 2026-04-23 23:58 | m1pp: spell XOR as ^ (was \$); drop == alias for = | Ryan Sepassi | 4 | +12 | -29 |
| 2026-04-23 23:53 | m1pp extensions doc | Ryan Sepassi | 1 | +656 | -0 |
| 2026-04-23 23:48 | m1pp/m1pp.M1: scrub evolutionary comments | Ryan Sepassi | 1 | +82 | -102 |
| 2026-04-23 23:27 | tests/p1: hello.P1 + harness exercising the full P1 -> ELF pipeline | Ryan Sepassi | 3 | +152 | -0 |
| 2026-04-23 23:27 | m1pp: emit !@%$ hex builtins as quoted strings; bump buffers for P1 | Ryan Sepassi | 7 | +16635 | -93 |
| 2026-04-23 22:52 | tests/m1pp: add 7 oracle-parity fixtures + unpark full-parity | Ryan Sepassi | 16 | +352 | -0 |
| 2026-04-23 22:43 | Integrate fix: spell negative addi immediates as negN (lint blind spot) | Ryan Sepassi | 1 | +10 | -10 |
| 2026-04-23 22:37 | Merge branch 'worktree-agent-aecb01d58b541506d' into integrate-m1pp | Ryan Sepassi | 1 | +418 | -3 |
| 2026-04-23 22:36 | Merge branch 'worktree-agent-a04674a83d5e97483' into integrate-m1pp | Ryan Sepassi | 1 | +1296 | -24 |
| 2026-04-23 22:36 | Merge branch 'worktree-agent-a63654c7cd13786ed' into integrate-m1pp | Ryan Sepassi | 1 | +648 | -10 |
| 2026-04-23 22:35 | Merge branch 'worktree-agent-a55e267523e077156' into integrate-m1pp | Ryan Sepassi | 1 | +271 | -6 |
| 2026-04-23 22:35 | Track E: builtins (! @ % $ %select) | Ryan Sepassi | 1 | +421 | -2 |
| 2026-04-23 22:35 | Track D: expression evaluator | Ryan Sepassi | 1 | +1280 | -9 |
| 2026-04-23 22:35 | Track C: macro expansion (parse_args, find_macro/param, expand_*) | Ryan Sepassi | 1 | +648 | -10 |
| 2026-04-23 22:35 | Track B: ## token paste compaction | Ryan Sepassi | 1 | +271 | -6 |
| 2026-04-23 22:35 | Track A: stream stack + pool lifetime + process_tokens rewrite | Ryan Sepassi | 1 | +306 | -74 |
| 2026-04-23 22:01 | m1pp stubs | Ryan Sepassi | 1 | +442 | -26 |
| 2026-04-23 21:45 | m1pp: Phase 2 — store %macro definitions in arenas | Ryan Sepassi | 4 | +428 | -67 |
| 2026-04-23 21:32 | docs/M1M-IMPL.md: reconcile with post-Phase-1 state | Ryan Sepassi | 1 | +21 | -18 |
| 2026-04-23 21:30 | post updates | Ryan Sepassi | 1 | +8 | -10 |
| 2026-04-23 21:29 | m1pp: switch build.sh and test.sh to a distroless-busybox image | Ryan Sepassi | 3 | +15 | -7 |
| 2026-04-23 21:28 | m1pp: annotate m1pp.M1 with pseudo-C inline comments | Ryan Sepassi | 1 | +154 | -22 |
| 2026-04-23 21:00 | m1pp: add structural section comments in m1pp.M1 | Ryan Sepassi | 1 | +69 | -4 |
| 2026-04-23 20:55 | m1pp: Phase 1 — port lexer + pass-through skeleton to P1v2 | Ryan Sepassi | 7 | +787 | -2280 |
| 2026-04-23 20:25 | m1pp: alias container image as localhost/lispcc:aarch64; add port pointers | Ryan Sepassi | 3 | +135 | -28 |
| 2026-04-23 20:19 | m1pp: Phase 0 build infra; split aarch64 LI/LA literal prefix | Ryan Sepassi | 11 | +339 | -25 |
| 2026-04-23 18:55 | move files around | Ryan Sepassi | 9 | +0 | -1468 |
| 2026-04-23 18:52 | post update | Ryan Sepassi | 1 | +142 | -176 |
| 2026-04-23 18:42 | drop i386, expand register set, add BLTU | Ryan Sepassi | 5 | +110 | -51 |
| 2026-04-23 18:15 | post update | Ryan Sepassi | 1 | +143 | -102 |
| 2026-04-23 18:06 | rename to m1pp | Ryan Sepassi | 4 | +0 | -0 |
| 2026-04-23 18:03 | Use !@%$ vs %le32/le64 in m1pp | Ryan Sepassi | 5 | +64 | -56 |
| 2026-04-23 15:58 | Regularize M1M macro oracle | Ryan Sepassi | 5 | +704 | -577 |
| 2026-04-23 15:07 | m1m simplify spec | Ryan Sepassi | 6 | +451 | -224 |
| 2026-04-23 14:19 | Implement initial P1 m1m tokenizer slice | Ryan Sepassi | 5 | +2399 | -52 |
| 2026-04-23 13:54 | Describe m1m bootstrap path | Ryan Sepassi | 1 | +34 | -0 |
| 2026-04-23 13:54 | Document m1macro P1 port plan | Ryan Sepassi | 1 | +194 | -0 |
| 2026-04-23 13:54 | Add P1 m1m bootstrap stub | Ryan Sepassi | 3 | +353 | -3 |
| 2026-04-23 04:19 | p1.m1m | Ryan Sepassi | 3 | +1122 | -6 |
| 2026-04-23 00:51 | p1v2 | Ryan Sepassi | 7 | +2464 | -0 |
| 2026-04-22 18:17 | Vendor AArch64 catm hex2 source | Ryan Sepassi | 3 | +148 | -12 |
| 2026-04-22 18:17 | build: ~30x faster + 75% smaller lisp binary | Ryan Sepassi | 5 | +234 | -13 |
| 2026-04-22 16:16 | lisp.M1: move 14 primitives to Scheme prelude for reviewability | Ryan Sepassi | 2 | +289 | -698 |
| 2026-04-22 16:16 | lisp update TODO | Ryan Sepassi | 1 | +3 | -3 |
| 2026-04-22 14:19 | P1.md: clarify leaf-function semantics (CALLable in, not out) | Ryan Sepassi | 1 | +24 | -16 |
| 2026-04-22 14:17 | P1.md: document the CALL/PROLOGUE contract explicitly | Ryan Sepassi | 1 | +28 | -3 |
| 2026-04-22 14:05 | lisp.M1: fix mark_push_recurse self-loop on aarch64/riscv64; add GC stress tests from LISP-GC.md step-5 set | Ryan Sepassi | 10 | +127 | -21 |
| 2026-04-22 08:33 | LISP-GC.md: add "Remaining work" checklist | Ryan Sepassi | 1 | +69 | -0 |
| 2026-04-22 05:23 | lisp.M1 step 13: wire GC into allocator + mostly-precise stack scan | Ryan Sepassi | 10 | +340 | -32 |
| 2026-04-22 03:14 | lisp gc spike; P1 frame pointer | Ryan Sepassi | 3 | +1982 | -563 |
| 2026-04-22 00:26 | lisp.M1 steps 11-12: reader shorthand + set!/let/letrec/cond/quasiquote | Ryan Sepassi | 21 | +1552 | -123 |
| 2026-04-22 00:10 | lisp: concat prelude in make | Ryan Sepassi | 2 | +60 | -8 |
| 2026-04-21 23:28 | lisp.M1 step 10h: enable map/filter/fold prelude | Ryan Sepassi | 4 | +41 | -28 |
| 2026-04-21 22:58 | lisp.M1: fix eval_if #f, prim_ashift neg; p1_gen: amd64 RRR rB-alias | Ryan Sepassi | 2 | +22 | -6 |
| 2026-04-21 22:25 | amd64 sib fix | Ryan Sepassi | 1 | +11 | -9 |
| 2026-04-21 20:31 | update mnemonics to lower-case, remove P1_ prefix | Ryan Sepassi | 5 | +3992 | -6219 |
| 2026-04-21 20:02 | lisp.M1 step 10d-10g: list-core, string, vector, I/O primitives | Ryan Sepassi | 8 | +1461 | -200 |
| 2026-04-21 19:45 | podman 3 arch digests | Ryan Sepassi | 1 | +22 | -10 |
| 2026-04-21 19:05 | lisp.M1: collapse MOV_R3_SP + R3-base mem ops to SP-relative forms | Ryan Sepassi | 1 | +176 | -265 |
| 2026-04-21 18:32 | lisp.M1: fix BLTZ refactor regressions in _start and read/write_file_all | Ryan Sepassi | 1 | +12 | -20 |
| 2026-04-21 17:10 | lisp.M1 use %N, P1 branch zero, additional lisp tests | Ryan Sepassi | 18 | +2962 | -1563 |
| 2026-04-21 15:59 | rm kaem | Ryan Sepassi | 3 | +2 | -1319 |
| 2026-04-21 15:58 | build: pull podman image once per arch, run with --pull=never | Ryan Sepassi | 1 | +26 | -13 |
| 2026-04-21 15:53 | docs: drop C1 and kaem-minimal; collapse to three contributions | Ryan Sepassi | 4 | +239 | -680 |
| 2026-04-21 15:41 | lisp.M1 step 10a-10c: FFI harness, registration, 27 primitives | Ryan Sepassi | 13 | +1547 | -143 |
| 2026-04-21 15:16 | build: only curdir is mounted into podman | Ryan Sepassi | 10 | +1225 | -1357 |
| 2026-04-21 14:55 | reorg: docs/ arch/ src/ tests/ | Ryan Sepassi | 18 | +47 | -32 |
| 2026-04-21 14:43 | lisp tests: step-7 tail-call smoke | Ryan Sepassi | 2 | +33 | -0 |
| 2026-04-21 14:41 | lisp test harness | Ryan Sepassi | 3 | +39 | -1 |
| 2026-04-21 14:36 | lisp: TAIL, argv[1] scripts | Ryan Sepassi | 3 | +501 | -94 |
| 2026-04-21 14:13 | kaem-minimal: P1 port of stage0-posix line-oriented shell | Ryan Sepassi | 3 | +1342 | -25 |
| 2026-04-21 14:12 | LISP.md: reorder staged plan — argv/tests/primitives before extensions | Ryan Sepassi | 1 | +28 | -12 |
| 2026-04-21 13:52 | P1 gen: per-arch encoder classes + Cartesian DEFINE expansion | Ryan Sepassi | 1 | +595 | -815 |
| 2026-04-21 13:14 | lisp.M1 steps 5-6: printer + eval (closures, define, apply) | Ryan Sepassi | 2 | +1336 | -73 |
| 2026-04-21 12:33 | C1 and SEED docs | Ryan Sepassi | 2 | +775 | -0 |
| 2026-04-21 12:28 | Build: generate p1_<arch>.M1 on demand from p1_gen.py | Ryan Sepassi | 5 | +10 | -723 |
| 2026-04-21 12:22 | lisp.M1 steps 3-4: interning + reader/display with line:col diagnostics | Ryan Sepassi | 5 | +2554 | -173 |
| 2026-04-21 05:20 | P1: extract branch-scratch; 4:4 caller/callee split; stack-walking GC roots | Ryan Sepassi | 10 | +456 | -636 |
| 2026-04-21 04:11 | P1: generator-driven defs, N-slot prologue, lint, no hidden clobbers | Ryan Sepassi | 8 | +1518 | -873 |
| 2026-04-21 03:31 | lisp.M1 step 2 (tagged values); P1 Tranche 8; add P1_TODO.md | Ryan Sepassi | 5 | +509 | -148 |
| 2026-04-21 02:12 | P1 refine conventions; add lisp.M1 step 1 | Ryan Sepassi | 5 | +614 | -55 |
| 2026-04-21 00:35 | Add LISP.md for the P1-hosted Lisp interpreter | Ryan Sepassi | 1 | +492 | -0 |
| 2026-04-21 00:01 | P1 promote PROLOGUE/EPILOGUE, add TAIL stack check and neg-imm12 mem test | Ryan Sepassi | 5 | +101 | -16 |
| 2026-04-21 00:01 | pin alpine image | Ryan Sepassi | 1 | +10 | -1 |
| 2026-04-20 23:36 | P1 prune ISA and rewrite demo with discriminating tests | Ryan Sepassi | 6 | +309 | -267 |
| 2026-04-20 22:35 | P1 extend demo.M1 to cover all ops | Ryan Sepassi | 4 | +568 | -55 |
| 2026-04-20 21:47 | Bootstrap the P1 toolchain from hex0-seed instead of gcc | Ryan Sepassi | 3 | +119 | -77 |
| 2026-04-20 20:20 | Move P1.md into the repo | Ryan Sepassi | 7 | +310 | -6 |
| 2026-04-20 20:18 | Rewrite PLAN.md to layer the Lisp bootstrap on P1 | Ryan Sepassi | 1 | +79 | -13 |
| 2026-04-20 20:18 | Add demo.M1 exercising broader P1 op set across three arches | Ryan Sepassi | 5 | +156 | -24 |
| 2026-04-20 19:53 | Drop aarch64_defs.M1, update README for P1 layout | Ryan Sepassi | 2 | +23 | -246 |
| 2026-04-20 19:52 | Add P1 portable pseudo-ISA, port hello.M1 to three arches | Ryan Sepassi | 7 | +411 | -48 |
| 2026-04-20 18:59 | Initial commit: aarch64 hello-world via M1 + hex2 | Ryan Sepassi | 8 | +585 | -0 |
| 2026-05-04 16:34 | boot3 drop host cc for amd64/riscv64 | Ryan Sepassi | 3 | +93 | -62 |
| 2026-05-04 16:19 | catm.P1pp | Ryan Sepassi | 4 | +235 | -37 |
| 2026-05-04 15:35 | README: align pseudocode with bootN.sh stages | Ryan Sepassi | 1 | +17 | -12 |
| 2026-05-04 15:25 | add standalone bootN.sh entrypoints (scratch + busybox) | Ryan Sepassi | 8 | +652 | -56 |
| 2026-05-04 15:10 | docs: document riscv64 u32-narrowing limitation in TCC-TODO | Ryan Sepassi | 1 | +58 | -4 |
| 2026-05-04 15:08 | mes-libc: track `l` modifier in printf so plain %d/%c reads int | Ryan Sepassi | 7 | +199 | -0 |
| 2026-05-04 14:12 | tcc 3 stage harness | Ryan Sepassi | 4 | +109 | -39 |
| 2026-05-04 13:38 | riscv64 and amd64 | Ryan Sepassi | 27 | +702 | -138 |
| 2026-05-04 07:06 | tcc 0.9.26: read single-byte char constants through uint8_t | Ryan Sepassi | 4 | +27 | -12 |
| 2026-05-04 06:50 | cc: split aggregate args across two ABI slots on call + receive | Ryan Sepassi | 2 | +118 | -11 |
| 2026-05-04 06:39 | tcc-tcc: route tcc-cc / tcc-libc through the second-stage tcc | Ryan Sepassi | 9 | +217 | -27 |
| 2026-05-04 05:53 | tcc-libc: tcc-boot2 builds mes-libc, runs cc-libc fixtures | Ryan Sepassi | 6 | +257 | -5 |
| 2026-05-04 05:38 | libp1pp: promote mem* to canonical compiler-builtin runtime | Ryan Sepassi | 11 | +165 | -106 |
| 2026-05-04 04:52 | cc: deduplicate codegen and parser helpers | Ryan Sepassi | 2 | +279 | -457 |
| 2026-05-04 03:53 | libp1pp: namespace mem* / str* helpers under libp1pp__ | Ryan Sepassi | 3 | +46 | -42 |
| 2026-05-04 03:51 | docs: refresh cc.scm map + tcc tracker for current state | Ryan Sepassi | 5 | +146 | -570 |
| 2026-05-04 03:50 | cc: apply usual arith conversion to ternary common type | Ryan Sepassi | 3 | +97 | -10 |
| 2026-05-04 02:28 | hex2pp.P1: fix BSS arena overlap on >1 MiB inputs | Ryan Sepassi | 1 | +7 | -3 |
| 2026-05-04 01:24 | cc: update to m1pp+hex2pp | Ryan Sepassi | 4 | +120 | -111 |
| 2026-05-04 01:08 | Update scheme1 for M1pp hex2pp pipeline | Ryan Sepassi | 4 | +1192 | -1140 |
| 2026-05-03 23:53 | update to run hex2pp.P1, rm 00-hello which used old hex2 | Ryan Sepassi | 8 | +904 | -1386 |
| 2026-05-03 23:37 | M1pp: bring M1pp.P1 to parity with M1pp.c; build M1pp from .P1 | Ryan Sepassi | 5 | +54 | -109 |
| 2026-05-03 23:28 | build: M1pp/hex2pp from .c via alpine-gcc; pass -B 0x600000 | Ryan Sepassi | 2 | +43 | -26 |
| 2026-05-03 23:28 | backends: wide-immediate fallbacks across all three arches | Ryan Sepassi | 6 | +320 | -46 |
| 2026-05-03 23:28 | libp1pp: migrate to hex2++ .scope and scoped-loop family | Ryan Sepassi | 12 | +533 | -560 |
| 2026-05-03 23:27 | M1pp: drop %bytes builtin; bare strings emit decoded bytes | Ryan Sepassi | 25 | +208 | -258 |
| 2026-05-03 23:27 | hex2pp: single-input CLI + .ptrsize directive; P1 table prune | Ryan Sepassi | 7 | +335 | -302 |
| 2026-05-03 21:54 | M1pp test updates | Ryan Sepassi | 34 | +408 | -432 |
| 2026-05-03 21:09 | hex2pp.P1, update M1pp.P1 | Ryan Sepassi | 8 | +4242 | -539 |
| 2026-05-03 18:50 | M1pp/hex2pp: direct pipeline, drop M0-style quoting | Ryan Sepassi | 4 | +184 | -249 |
| 2026-05-03 18:18 | hex2pp | Ryan Sepassi | 2 | +920 | -0 |
| 2026-05-02 22:50 | docs: tcc-cc bug investigation report + gdb harness | Ryan Sepassi | 2 | +339 | -0 |
| 2026-05-02 22:50 | p1/aarch64: lower %li(rd, imm) as movz+3xmovk | Ryan Sepassi | 1 | +17 | -2 |
| 2026-05-02 17:28 | mk: set tcc arch from arch | Ryan Sepassi | 1 | +5 | -2 |
| 2026-05-02 16:25 | cc: clear five cc-ext singletons (138 -> 143) | Ryan Sepassi | 2 | +123 | -35 |
| 2026-05-02 15:38 | tests: add cc-ext suite via vendored c-testsuite | Ryan Sepassi | 667 | +7804 | -5 |
| 2026-05-02 15:37 | tcc-cc: ship mem* runtime so -nostdlib fixtures link | Ryan Sepassi | 4 | +81 | -30 |
| 2026-05-02 15:29 | cc/cg: struct/union `=` must memcpy whole aggregate | Ryan Sepassi | 6 | +212 | -97 |
| 2026-05-02 10:51 | tcc-patch: const-expr &&/||/?: must short-circuit (C11 §6.6¶3) | Ryan Sepassi | 6 | +118 | -50 |
| 2026-05-02 03:08 | merge: file-scope compound literals (C99 §6.5.2.5) | Ryan Sepassi | 7 | +106 | -7 |
| 2026-05-02 03:08 | cc/parse: support file-scope compound literals (C99 §6.5.2.5) | Ryan Sepassi | 7 | +106 | -7 |
| 2026-05-02 02:55 | merge: cap variadic args at 16 + boundary tests | Ryan Sepassi | 5 | +108 | -7 |
| 2026-05-02 02:55 | cc/cg: cap variadic incoming args at 16; pin save-area boundary tests | Ryan Sepassi | 5 | +108 | -7 |
| 2026-05-02 02:49 | merge: brace elision in nested aggregate initializers (rebased on current main) | Ryan Sepassi | 7 | +179 | -37 |
| 2026-05-02 02:44 | cc/parse: support brace elision in nested aggregate initializers (C99 §6.7.8 ¶22) | Ryan Sepassi | 7 | +179 | -37 |
| 2026-05-02 02:40 | merge: block-scope inferred-length arrays (rebased on current main) | Ryan Sepassi | 5 | +144 | -1 |
| 2026-05-02 02:39 | cc/parse: infer length for block-scope arrays; reserve frame slot before init | Ryan Sepassi | 5 | +144 | -1 |
| 2026-05-02 02:12 | Revert "merge: block-scope inferred-length arrays" | Ryan Sepassi | 5 | +10 | -147 |
| 2026-05-02 02:12 | Revert "cc/parse: support brace elision in nested aggregate initializers" | Ryan Sepassi | 3 | +0 | -218 |
| 2026-05-02 00:49 | cc/cg: cg-arith-conv casts to common type, not relabel-only | Ryan Sepassi | 1 | +12 | -2 |
| 2026-05-02 00:45 | cc/cg: promote narrow integers to (signed) int | Ryan Sepassi | 1 | +9 | -5 |
| 2026-05-02 01:49 | merge: codegen fixes (4 bugs: spill canon, signed shr, narrow promote, arith conv) | Ryan Sepassi | 12 | +148 | -0 |
| 2026-05-02 01:49 | tests/cc-pp: pin #if short-circuit and /0 diagnostic | Ryan Sepassi | 8 | +23 | -0 |
| 2026-05-02 01:48 | tests/cc-pp: pin arg prescan stringize and paste cases | Ryan Sepassi | 4 | +12 | -0 |
| 2026-05-02 01:48 | merge: lex/pp bug fixes (4 bugs) | Ryan Sepassi | 9 | +71 | -25 |
| 2026-05-02 00:31 | cc/parse: support brace elision in nested aggregate initializers | Ryan Sepassi | 3 | +218 | -0 |
| 2026-05-02 01:47 | merge: block-scope inferred-length arrays | Ryan Sepassi | 5 | +147 | -10 |
| 2026-05-02 00:49 | cc/cg: cg-arith-conv casts to common type, not relabel-only | Ryan Sepassi | 3 | +35 | -2 |
| 2026-05-02 00:49 | cc/parse: infer length for block-scope arrays from initializer | Ryan Sepassi | 5 | +147 | -10 |
| 2026-05-02 00:45 | cc/cg: promote narrow integers to (signed) int | Ryan Sepassi | 3 | +38 | -5 |
| 2026-05-02 00:37 | cc/pp: track #else seen on cond-stack; reject #elif/#else after #else | Ryan Sepassi | 3 | +35 | -13 |
| 2026-05-02 00:37 | cc/cg: signed shift right uses lhs signedness only | Ryan Sepassi | 3 | +48 | -4 |
| 2026-05-02 00:32 | cc/pp: builtin macros emit at original loc to avoid double #line shift | Ryan Sepassi | 3 | +22 | -11 |
| 2026-05-02 00:27 | cc/cg: canonicalize narrow-int spills in %cg-spill-reg | Ryan Sepassi | 8 | +96 | -3 |
| 2026-05-02 00:23 | cc/lex: line-leading %: digraph emits HASH for directives | Ryan Sepassi | 3 | +10 | -1 |
| 2026-05-02 00:19 | cc/pp: stringize escapes control bytes in char/string literals | Ryan Sepassi | 3 | +7 | -0 |
| 2026-05-02 00:09 | cc: fix nine bugs across lex/pp/cg/parse/types | Ryan Sepassi | 18 | +419 | -42 |
| 2026-05-01 22:20 | merge: const-expr short-circuit && and || | Ryan Sepassi | 3 | +83 | -6 |
| 2026-05-01 22:19 | merge: lexer char-literal type fix | Ryan Sepassi | 3 | +32 | -1 |
| 2026-05-01 22:18 | tests/cc: pin macro arg prescan (M(M(1))) | Ryan Sepassi | 2 | +19 | -0 |
| 2026-05-01 22:14 | cc: short-circuit && and || in constant-expression evaluator | Ryan Sepassi | 3 | +74 | -6 |
| 2026-05-01 22:10 | cc: codegen: signed >> unsigned must use arithmetic shift | Ryan Sepassi | 2 | +24 | -0 |
| 2026-05-01 22:07 | cc: const-expr: promote unsigned sub-int types to signed int | Ryan Sepassi | 3 | +85 | -18 |
| 2026-05-01 22:07 | cc: type integer character constants as int (§6.4.4.4) | Ryan Sepassi | 3 | +32 | -1 |
| 2026-05-01 21:55 | cc: add cc.scm.md code map | Ryan Sepassi | 1 | +173 | -0 |
| 2026-05-01 21:55 | cc: deduplicate and unify constant-expression evaluator | Ryan Sepassi | 1 | +82 | -221 |
| 2026-05-01 18:21 | cc: tidy | Ryan Sepassi | 1 | +32 | -56 |
| 2026-05-01 01:26 | scheme1: replace advance_walk(offset) with advance_walk(name) | Ryan Sepassi | 1 | +46 | -55 |
| 2026-05-01 00:43 | scheme1: tidy | Ryan Sepassi | 1 | +807 | -982 |
| 2026-04-30 18:01 | p1pp: extend cmpset macro set | Ryan Sepassi | 4 | +85 | -10 |
| 2026-04-30 17:52 | P1 arch files: rerun gen py | Ryan Sepassi | 3 | +0 | -66 |
| 2026-04-30 17:38 | pokem rm | Ryan Sepassi | 3 | +7 | -278 |
| 2026-04-30 17:13 | tcc-todo update | Ryan Sepassi | 1 | +35 | -12 |
| 2026-04-30 16:55 | cc: fix pp cond stack bug | Ryan Sepassi | 3 | +28 | -0 |
| 2026-04-30 16:50 | tests/cc-pp: expand to cover stdarg shape | Ryan Sepassi | 6 | +105 | -0 |
| 2026-04-30 16:30 | p1pp: expand libp1pp and use from cc.scm | Ryan Sepassi | 18 | +979 | -119 |
| 2026-04-30 15:42 | tcc-cc: rely on libc-flat as the gcc-built sanity reference | Ryan Sepassi | 2 | +18 | -50 |
| 2026-04-30 15:31 | docs: TCC-TODO update — gcc-flat 130/22, gcc-libc-flat 152/0, cc.scm-tcc 13/139 | Ryan Sepassi | 1 | +61 | -22 |
| 2026-04-30 15:25 | tcc-cc: full pass under gcc-built libc-flat tcc (152/0) | Ryan Sepassi | 24 | +303 | -59 |
| 2026-04-30 13:53 | tcc todo update | Ryan Sepassi | 1 | +181 | -343 |
| 2026-04-30 13:53 | tests/cc/: green host compiled cc suite | Ryan Sepassi | 2 | +14 | -27 |
| 2026-04-30 13:29 | Add tcc-cc test suite | Ryan Sepassi | 6 | +123 | -17 |
| 2026-04-30 07:02 | riscv64: support large ADDI immediates in p1_addi and p1_enter | Ryan Sepassi | 1 | +19 | -3 |
| 2026-04-30 06:23 | docs: tcc-boot2 now builds and runs; update TCC-TODO status | Ryan Sepassi | 1 | +34 | -18 |
| 2026-04-30 06:22 | cc: fix for-loop continue to execute the step expression | Ryan Sepassi | 3 | +60 | -30 |
| 2026-04-30 06:22 | entry-libc: save argc/argv across __libc_init | Ryan Sepassi | 1 | +7 | -3 |
| 2026-04-30 06:22 | aarch64: support large ADD/SUB immediates in p1_addi and p1_enter | Ryan Sepassi | 3 | +68 | -4 |
| 2026-04-30 03:49 | Make trace macro preserve registers | Ryan Sepassi | 3 | +103 | -46 |
| 2026-04-30 03:22 | vendor: drop ../ reaches into sibling repos | Ryan Sepassi | 9 | +77 | -24 |
| 2026-04-30 03:21 | tcc-gcc: stock-gcc sanity-check harness | Ryan Sepassi | 5 | +181 | -1 |
| 2026-04-30 03:21 | va_list: route through __builtin_va_list across cc.scm + mes-libc | Ryan Sepassi | 6 | +62 | -133 |
| 2026-04-30 03:21 | rename: lispcc → boot2 across the tree | Ryan Sepassi | 17 | +299 | -299 |
| 2026-04-30 01:46 | p1pp: tracepoint machinery | Ryan Sepassi | 5 | +396 | -51 |
| 2026-04-30 01:11 | mk: more verbose build logs | Ryan Sepassi | 4 | +88 | -25 |
| 2026-04-30 01:09 | m1-symbols.py annotate disassembly, add :_text_end to m1pp+scheme | Ryan Sepassi | 3 | +185 | -0 |
| 2026-04-30 00:55 | regularize build/ dir | Ryan Sepassi | 20 | +422 | -258 |
| 2026-04-29 23:42 | scripts/disasm-elf.sh | Ryan Sepassi | 1 | +75 | -0 |
| 2026-04-29 23:39 | P1pp: fix loop scoping tags, were global, now are local | Ryan Sepassi | 5 | +135 | -40 |
| 2026-04-29 23:31 | tests/cc: tentative bss sizing | Ryan Sepassi | 2 | +77 | -0 |
| 2026-04-29 20:05 | tests/cc-libc: cover all P1pp syscalls + complex libc layers | Ryan Sepassi | 18 | +303 | -0 |
| 2026-04-29 19:51 | cc: stdarg patch to builtins | Ryan Sepassi | 4 | +31 | -22 |
| 2026-04-29 19:39 | tests/cc: extended vararg test | Ryan Sepassi | 2 | +116 | -0 |
| 2026-04-29 19:12 | mes-libc: define __std{in,out,err} | Ryan Sepassi | 1 | +12 | -0 |
| 2026-04-29 18:30 | libc-flatten: silence host preprocessor warnings | Ryan Sepassi | 5 | +15 | -1 |
| 2026-04-29 18:25 | cc.scm: --lib mode for catm-style libc linking | Ryan Sepassi | 11 | +279 | -240 |
| 2026-04-29 18:04 | cc-cg: fix up test to use proper symbol names for extern | Ryan Sepassi | 1 | +2 | -2 |
| 2026-04-29 18:03 | P1: new syscalls lseek, brk, unlinkat | Ryan Sepassi | 7 | +191 | -0 |
| 2026-04-29 18:02 | tests/cc-libc | Ryan Sepassi | 23 | +1006 | -214 |
| 2026-04-29 18:02 | vendor/mes-libc | Ryan Sepassi | 213 | +12029 | -0 |
| 2026-04-29 16:03 | docs: libc plan — port mes libc, build libc.a + libtcc1.a with tcc-boot2 | Ryan Sepassi | 2 | +404 | -0 |
| 2026-04-29 02:08 | docs/LIBC.txt: split symbols into pure-code vs syscall-using | Ryan Sepassi | 1 | +48 | -26 |
| 2026-04-29 01:43 | tcc-boot2: trace pipeline phases and inventory unresolved symbols | Ryan Sepassi | 4 | +117 | -1 |
| 2026-04-29 01:43 | stage1-flatten: vendor local simple-patches for libc stubs | Ryan Sepassi | 21 | +213 | -0 |
| 2026-04-29 01:42 | cc: follow C linkage rules for external/internal symbols | Ryan Sepassi | 5 | +161 | -22 |
| 2026-04-29 00:51 | cc: quoted-hex data emission and signed→unsigned cast canonicalisation | Ryan Sepassi | 5 | +251 | -20 |
| 2026-04-29 00:50 | tcc-boot2: end-to-end harness from tcc.flat.c to ELF | Ryan Sepassi | 3 | +151 | -65 |
| 2026-04-29 00:36 | M1pp: bump caps, cleanup duplication | Ryan Sepassi | 2 | +171 | -177 |
| 2026-04-28 22:49 | cc: offsetof support in const exprs | Ryan Sepassi | 3 | +186 | -5 |
| 2026-04-28 22:35 | cc: stream static array initializers past asm_instrs scratch wall | Ryan Sepassi | 2 | +203 | -74 |
| 2026-04-28 21:48 | scheme1: prelude wrappers for the two heap-arena patterns | Ryan Sepassi | 5 | +259 | -100 |
| 2026-04-28 21:33 | cc: clear four tcc.flat.c blockers, hit asm_instrs scratch wall | Ryan Sepassi | 6 | +326 | -56 |
| 2026-04-28 20:25 | cc: parse-and-discard GNU __attribute__ specs | Ryan Sepassi | 2 | +104 | -73 |
| 2026-04-28 20:13 | cc: replace per-type promote walkers with deep-copy | Ryan Sepassi | 2 | +51 | -407 |
| 2026-04-28 20:06 | Document deep-copy promotion status | Ryan Sepassi | 1 | +120 | -0 |
| 2026-04-28 20:01 | Keep scheme1 global metadata on main heap | Ryan Sepassi | 5 | +125 | -10 |
| 2026-04-28 19:27 | scheme1: record introspection, deep-copy | Ryan Sepassi | 6 | +479 | -0 |
| 2026-04-28 19:27 | cloc add prelude.scm | Ryan Sepassi | 1 | +8 | -6 |
| 2026-04-28 18:42 | rm impl plan doc | Ryan Sepassi | 1 | +0 | -356 |
| 2026-04-28 18:41 | scheme1: add list traversal primitives | Ryan Sepassi | 6 | +190 | -27 |
| 2026-04-28 18:08 | cc: CC-SCRATCH Phase 3 — parse-decl-or-fn boundary | Ryan Sepassi | 2 | +402 | -72 |
| 2026-04-28 17:56 | scheme1: hex number<->string and format, rename eof-object to eof | Ryan Sepassi | 7 | +251 | -53 |
| 2026-04-28 17:47 | SCHEME1.md | Ryan Sepassi | 3 | +263 | -225 |
| 2026-04-28 16:41 | scheme1: drop unused special forms (unless, define-values, case-lambda, letrec/letrec*, quasiquote) | Ryan Sepassi | 15 | +13 | -739 |
| 2026-04-28 16:32 | scheme1: 8-aligned strings | Ryan Sepassi | 1 | +31 | -45 |
| 2026-04-28 16:25 | scheme1: CC-SCRATCH Phase 2 — two-heap primitives | Ryan Sepassi | 3 | +224 | -36 |
| 2026-04-28 15:53 | cc: CC-SCRATCH Phase 1 pre-refactors | Ryan Sepassi | 1 | +161 | -114 |
| 2026-04-28 15:00 | docs: CC-SCRATCH plan — bound parse heap via scratch arena | Ryan Sepassi | 1 | +356 | -0 |
| 2026-04-28 07:21 | cc: redecl compatibility, update cc docs | Ryan Sepassi | 13 | +284 | -775 |
| 2026-04-28 04:01 | cc streaming architecture | Ryan Sepassi | 1 | +434 | -204 |
| 2026-04-28 02:57 | docs: TCC-TODO punchlist + CC-STREAM plan | Ryan Sepassi | 2 | +433 | -0 |
| 2026-04-28 02:56 | scheme1: bump HEAP_CAP_BYTES 64 -> 256 MiB, p_memsz 128 -> 512 MB | Ryan Sepassi | 4 | +6 | -6 |
| 2026-04-28 02:56 | cc: lex per-token heap-mark/rewind + scratch buffer | Ryan Sepassi | 1 | +200 | -92 |
| 2026-04-28 01:58 | cc: float/double parse | Ryan Sepassi | 4 | +94 | -10 |
| 2026-04-28 00:14 | scheme1: quote raw-byte padding for riscv64 M0 | Ryan Sepassi | 1 | +126 | -125 |
| 2026-04-27 23:34 | scheme1: bump READBUF_CAP_BYTES 256 KiB -> 1 MiB | Ryan Sepassi | 1 | +2 | -2 |
| 2026-04-27 23:34 | cc: use scheme1 multiple-values protocol for tuple returns | Ryan Sepassi | 2 | +140 | -157 |
| 2026-04-27 21:37 | scheme1: multiple-values protocol | Ryan Sepassi | 13 | +488 | -3 |
| 2026-04-27 21:03 | docs rm old | Ryan Sepassi | 6 | +0 | -3288 |
| 2026-04-27 21:02 | scheme1: quasiquote, variadic prims | Ryan Sepassi | 8 | +461 | -56 |
| 2026-04-27 21:16 | cc: struct return — indirect-result (sret) convention (A2) | Ryan Sepassi | 4 | +197 | -124 |
| 2026-04-27 20:43 | cc: struct return — one-word and two-word direct conventions (A1) | Ryan Sepassi | 6 | +283 | -18 |
| 2026-04-27 20:39 | cc: compound literals (Stream B) | Ryan Sepassi | 1 | +67 | -9 |
| 2026-04-27 20:38 | cc: integer constant expressions (Stream C) | Ryan Sepassi | 1 | +343 | -7 |
| 2026-04-27 20:38 | cc: union field offsets + sizeof no-emit (Stream D) | Ryan Sepassi | 3 | +118 | -31 |
| 2026-04-27 20:42 | readme update | Ryan Sepassi | 1 | +5 | -5 |
| 2026-04-27 20:24 | update readme | Ryan Sepassi | 1 | +2 | -1 |
| 2026-04-27 20:23 | docs: cc parallel work plan | Ryan Sepassi | 1 | +233 | -0 |
| 2026-04-27 20:12 | scheme1: single-arm if, do, case-lambda, letrec* | Ryan Sepassi | 7 | +428 | -49 |
| 2026-04-27 19:37 | cc: combine files into 1 | Ryan Sepassi | 12 | +5257 | -5259 |
| 2026-04-27 19:28 | docs: r7rs todo | Ryan Sepassi | 1 | +124 | -0 |
| 2026-04-27 19:28 | scheme1 prelude: various extensions | Ryan Sepassi | 1 | +308 | -26 |
| 2026-04-27 19:27 | tests/scheme1: prelude tests, do/case/if tests, 3-digit prefix | Ryan Sepassi | 208 | +352 | -8 |
| 2026-04-27 19:04 | tests/cc: add compound-literal and const-expr fixtures | Ryan Sepassi | 4 | +252 | -0 |
| 2026-04-27 18:54 | cc/cg: use pmatch record patterns for opnd/sym dispatch | Ryan Sepassi | 1 | +95 | -106 |
| 2026-04-27 18:47 | cloc: add cc scm files | Ryan Sepassi | 1 | +1 | -0 |
| 2026-04-27 18:41 | cc/parse: use pmatch record patterns for token dispatch | Ryan Sepassi | 1 | +260 | -285 |
| 2026-04-27 18:41 | scheme1: pmatch record-destructuring patterns | Ryan Sepassi | 3 | +289 | -6 |
| 2026-04-27 18:34 | tests/cc/: 3-digit prefix rename | Ryan Sepassi | 238 | +0 | -0 |
| 2026-04-27 18:24 | cc: add 35 e2e tests probing parse/codegen gaps from CC.md | Ryan Sepassi | 70 | +749 | -0 |
| 2026-04-27 17:57 | scheme1: when, unless, case | Ryan Sepassi | 7 | +351 | -112 |
| 2026-04-27 17:46 | cc: merge parse+e2e tests into tests/cc/ | Ryan Sepassi | 212 | +118 | -585 |
| 2026-04-27 17:35 | cc: fix three kitchen-sink-blocking bugs; split into per-feature e2e fixtures | Ryan Sepassi | 66 | +1103 | -36 |
| 2026-04-27 17:23 | scripts: collapse test runner to one container per arch | Ryan Sepassi | 3 | +512 | -507 |
| 2026-04-27 16:47 | cc/util: round buf caps to powers of two | Ryan Sepassi | 1 | +9 | -11 |
| 2026-04-27 16:46 | scheme1: split string semantics from raw bytevectors | Ryan Sepassi | 3 | +252 | -111 |
| 2026-04-27 16:02 | m1pp: increase text cap | Ryan Sepassi | 2 | +10 | -10 |
| 2026-04-27 16:01 | cc: pre-allocate global outputs, use mark+reset per fn | Ryan Sepassi | 4 | +214 | -58 |
| 2026-04-27 15:32 | cc: use mark+reset in lex+pp | Ryan Sepassi | 2 | +318 | -251 |
| 2026-04-27 15:01 | scheme1: add (heap-mark) and (heap-rewind!) for arena-style reclamation | Ryan Sepassi | 3 | +114 | -3 |
| 2026-04-27 15:01 | cc/lex: cut heap allocations via fast-path peek + per-byte bv elision + punct buckets | Ryan Sepassi | 1 | +260 | -92 |
| 2026-04-27 11:03 | cc: add debug-log facility + per-phase heap-usage instrumentation | Ryan Sepassi | 2 | +68 | -11 |
| 2026-04-27 11:01 | scheme1: add (heap-usage) primitive returning bytes consumed | Ryan Sepassi | 1 | +15 | -0 |
| 2026-04-27 10:43 | scheme1: bump heap to 64 MiB, ELF p_memsz to 128 MiB; reorder arenas | Ryan Sepassi | 6 | +351 | -10 |
| 2026-04-27 10:10 | cc/parse: skip useless spill on void-returning calls | Ryan Sepassi | 3 | +36 | -2 |
| 2026-04-27 10:04 | cc/cg: drop vestigial cg-loop-end no-op | Ryan Sepassi | 5 | +48 | -58 |
| 2026-04-27 09:49 | cc/cg: &arr yields T(*)[N] per strict C | Ryan Sepassi | 3 | +25 | -6 |
| 2026-04-27 09:29 | cc/cg: variadic incoming-arg window covers indices 0..15 | Ryan Sepassi | 5 | +72 | -29 |
| 2026-04-27 09:17 | cc tests: lock in void* byte-arithmetic semantics | Ryan Sepassi | 2 | +18 | -0 |
| 2026-04-27 08:08 | cc/parse: lvalue-conversion runs for every cast (§L.1) | Ryan Sepassi | 4 | +44 | -10 |
| 2026-04-27 06:53 | Merge Agent 3: §E + §I + §L.3 (initializers + storage + fn-ptr table) | Ryan Sepassi | 40 | +958 | -75 |
| 2026-04-27 06:50 | Merge Agent 4: §F + §G + §J + §K.2-6 (ctrl/varargs/envelope) | Ryan Sepassi | 44 | +918 | -99 |
| 2026-04-27 06:49 | Merge Agent 2: §D + §L.2 (aggregates + array-param decay) | Ryan Sepassi | 27 | +563 | -56 |
| 2026-04-27 06:48 | Merge Agent 1: §B + §C + §H + §K.1 (lvalue/sizeof/conditionals/comma) | Ryan Sepassi | 42 | +593 | -103 |
| 2026-04-27 06:46 | docs: mark §F.1-4, §G.1-2, §J.1-3, §K.2-6 done in punchlist | Ryan Sepassi | 1 | +85 | -74 |
| 2026-04-27 06:26 | cc/parse: drop unused parse-init-list backwards-compat alias | Ryan Sepassi | 1 | +0 | -2 |
| 2026-04-27 06:16 | cc/parse: __builtin_va_{start,arg,end} + bundled stdarg.h (§G.2) | Ryan Sepassi | 4 | +113 | -8 |
| 2026-04-27 06:09 | cc/parse: §I block-static mangling stores in sym-name | Ryan Sepassi | 4 | +81 | -54 |
| 2026-04-27 06:02 | cc/cg: variadic receive — cg-fn-begin/v + cg-va-{start,arg,end} (§G.2) | Ryan Sepassi | 3 | +208 | -5 |
| 2026-04-27 05:56 | cc/cg+parse: array of fn pointers initialized with names (§L.3) | Ryan Sepassi | 4 | +66 | -0 |
| 2026-04-27 05:53 | cc/cg+parse: block-scope static lives in .data, not on the stack (§I) | Ryan Sepassi | 4 | +59 | -0 |
| 2026-04-27 05:51 | cc tests: pointer comparisons use unsigned ltu (§K.6) | Ryan Sepassi | 4 | +40 | -0 |
| 2026-04-27 05:50 | cc/parse: local struct initializer (§E.8) | Ryan Sepassi | 2 | +12 | -0 |
| 2026-04-27 05:49 | cc/parse: local array initializer (§E.7) | Ryan Sepassi | 3 | +14 | -2 |
| 2026-04-27 05:49 | cc/parse: T[] in param position decays to T* (§L.2) | Ryan Sepassi | 3 | +34 | -6 |
| 2026-04-27 05:48 | cc tests: void* <-> T* implicit conversion fixture (§K.4) | Ryan Sepassi | 2 | +11 | -0 |
| 2026-04-27 05:47 | cc/parse: struct passed by pointer to function (§D.7) | Ryan Sepassi | 3 | +24 | -3 |
| 2026-04-27 05:47 | cc tests: enum constant in expressions (§K.3) | Ryan Sepassi | 2 | +7 | -0 |
| 2026-04-27 05:46 | docs/CC-PUNCHLIST: mark §B + §C + §H + §K.1 as green | Ryan Sepassi | 1 | +78 | -70 |
| 2026-04-27 05:46 | cc/parse: compound-assign + ++/-- + sizeof + ternary + && + || + comma (§B, §C, §H, §K.1) | Ryan Sepassi | 23 | +139 | -23 |
| 2026-04-27 05:46 | cc/parse: multi-dim arrays via right-to-left suffix wrap (§D.6) | Ryan Sepassi | 4 | +32 | -5 |
| 2026-04-27 05:46 | cc tests: function-pointer call (§K.2) | Ryan Sepassi | 4 | +50 | -0 |
| 2026-04-27 05:46 | cc/cg: cg-dup, cg-postinc/postdec, ptr-aware arith-conv, cg-ifelse-merge (§B, §H) | Ryan Sepassi | 18 | +376 | -10 |
| 2026-04-27 05:45 | cc/cg+parse: struct global designated init (§E.6) | Ryan Sepassi | 6 | +59 | -15 |
| 2026-04-27 05:44 | cc tests: multi-fn TU with forward reference (§J.3) | Ryan Sepassi | 2 | +12 | -0 |
| 2026-04-27 05:43 | cc/cg+parse: int main() falling off end returns 0 (§J.2) | Ryan Sepassi | 3 | +20 | -2 |
| 2026-04-27 05:42 | cc/parse: array element access at non-zero index fixture (§D.5) | Ryan Sepassi | 3 | +22 | -7 |
| 2026-04-27 05:41 | cc/cg: array element access at non-zero index (§D.5) | Ryan Sepassi | 2 | +56 | -0 |
| 2026-04-27 05:40 | cc/cg+parse: struct global positional init (§E.5) | Ryan Sepassi | 4 | +49 | -0 |
| 2026-04-27 05:39 | cc/parse: per-arg cast-or-promote in parse-call-args (§G.1, §K.5) | Ryan Sepassi | 5 | +84 | -7 |
| 2026-04-27 05:39 | cc/parse: arrow + nested struct access fixtures (§D.3 §D.4) | Ryan Sepassi | 5 | +50 | -7 |
| 2026-04-27 05:39 | cc tests: variadic call site exercises cg-promote per arg (§G.1) | Ryan Sepassi | 2 | +58 | -0 |
| 2026-04-27 05:39 | cc/cg: lock in p->x arrow access via cg fixture (§D.3) | Ryan Sepassi | 2 | +60 | -0 |
| 2026-04-27 05:39 | cc/cg+parse: char[] from string-literal initializer (§E.4) | Ryan Sepassi | 4 | +33 | -0 |
| 2026-04-27 05:37 | cc/cg+parse: array global from element list (§E.3) | Ryan Sepassi | 5 | +52 | -2 |
| 2026-04-27 05:36 | cc/parse: lock in struct member store fixture (§D.2) | Ryan Sepassi | 3 | +22 | -4 |
| 2026-04-27 05:36 | cc/cg: lock in struct member store fixture (§D.2) | Ryan Sepassi | 2 | +57 | -0 |
| 2026-04-27 05:34 | cc/parse: dot/arrow use cg-push-field (§D.1) | Ryan Sepassi | 4 | +42 | -18 |
| 2026-04-27 05:34 | cc/cg: add cg-push-field + array decay (§D.1) | Ryan Sepassi | 3 | +159 | -1 |
| 2026-04-27 05:33 | cc/parse: real goto + labelled-stmt via cg-goto/cg-emit-label (§F.4) | Ryan Sepassi | 3 | +17 | -3 |
| 2026-04-27 05:31 | cc/cg: add cg-emit-label / cg-goto for goto+labels (§F.4) | Ryan Sepassi | 3 | +73 | -2 |
| 2026-04-27 05:30 | cc/cg+parse: address initializer for global pointer (§E.2) | Ryan Sepassi | 4 | +33 | -0 |
| 2026-04-27 05:28 | cc/parse: real init-list parser; scalar global init (§E.1) | Ryan Sepassi | 3 | +467 | -20 |
| 2026-04-27 05:26 | cc tests: switch / case / default with fall-through (§F.3) | Ryan Sepassi | 4 | +88 | -0 |
| 2026-04-27 05:25 | cc/cg: structured init for cg-emit-global; scalar global init (§E.1) | Ryan Sepassi | 4 | +63 | -6 |
| 2026-04-27 05:25 | cc tests: for (int i = 0; cond; step) fixture (§F.2) | Ryan Sepassi | 2 | +7 | -0 |
| 2026-04-27 05:24 | cc tests: do { } while (cond) fixtures (§F.1) | Ryan Sepassi | 4 | +47 | -0 |
| 2026-04-27 04:55 | cc tests: lock in integer promotion preserves sign (§A.6) | Ryan Sepassi | 5 | +48 | -6 |
| 2026-04-27 04:52 | cc tests: lock in unsigned narrowing zero-extends (§A.5) | Ryan Sepassi | 5 | +34 | -4 |
| 2026-04-27 04:50 | cc/cg: signed narrowing sign-extends on re-widen (§A.4) | Ryan Sepassi | 6 | +43 | -5 |
| 2026-04-27 04:46 | cc/cg: width-aware 32-bit load/store, generalised N-byte helpers (§A.3) | Ryan Sepassi | 6 | +125 | -47 |
| 2026-04-27 04:41 | cc/cg: width-aware 16-bit load/store via byte decomposition (§A.2) | Ryan Sepassi | 6 | +124 | -35 |
| 2026-04-27 04:37 | cc/cg: width-aware byte load/store for char lvals (§A.1) | Ryan Sepassi | 6 | +117 | -15 |
| 2026-04-27 04:12 | cc: add CC-PUNCHLIST.md — TDD checklist of red codegen capabilities | Ryan Sepassi | 2 | +398 | -0 |
| 2026-04-27 03:53 | cc tests: switch cc-cg/cc-parse to runtime-validating fixtures | Ryan Sepassi | 84 | +402 | -793 |
| 2026-04-27 02:07 | cc/pp: adjacent-string concat, more built-ins, stringize escapes, empty args | Ryan Sepassi | 16 | +127 | -9 |
| 2026-04-26 23:31 | P1pp: add %fn2 / %stl / %ldl + init_arenas; adopt in scheme1 | Ryan Sepassi | 2 | +953 | -938 |
| 2026-04-26 23:07 | M1pp: %frame %local support | Ryan Sepassi | 11 | +1102 | -34 |
| 2026-04-26 22:14 | scheme1: adopt libp1pp global/array helpers; add pair + heap field macros | Ryan Sepassi | 1 | +1231 | -1291 |
| 2026-04-26 22:14 | P1pp: add ld/st/lda_global and ld/st/lda_array helpers | Ryan Sepassi | 1 | +845 | -775 |
| 2026-04-26 22:14 | m1pp: bump MAX_MACROS 512 -> 1024 | Ryan Sepassi | 2 | +3 | -3 |
| 2026-04-26 22:14 | make: add P1pp.P1pp to cloc target | Ryan Sepassi | 1 | +1 | -0 |
| 2026-04-26 23:34 | scripts: rework tcc bootstrap into 3 stages + add live-bootstrap diag | Ryan Sepassi | 7 | +1098 | -596 |
| 2026-04-26 14:55 | docs: TCC.md — pipeline from tarball to tcc-boot0-mes + open bugs | Ryan Sepassi | 1 | +337 | -0 |
| 2026-04-26 14:46 | scripts/build-tcc-real.sh: build mes libc with tcc-host, link tcc-boot0-mes | Ryan Sepassi | 1 | +161 | -84 |
| 2026-04-26 11:11 | scripts: build-tcc-real.sh — assemble real tcc-0.9.26 from our chain | Ryan Sepassi | 1 | +111 | -0 |
| 2026-04-26 10:33 | scripts: build-tcc-source.sh — flatten tcc-0.9.26 and validate self-host | Ryan Sepassi | 1 | +214 | -0 |
| 2026-04-26 10:15 | cc: switch cc-pp + cc-parse to real pipeline; uncover & fix lex/pp bug | Ryan Sepassi | 137 | +686 | -1317 |
| 2026-04-26 09:39 | make: wire cc-* suites into run-tests.sh + add cc-e2e | Ryan Sepassi | 11 | +239 | -111 |
| 2026-04-26 09:21 | cc: phase-1 milestone — int main(int argc, char **argv) compiles e2e | Ryan Sepassi | 22 | +89 | -34 |
| 2026-04-26 09:04 | cc: resolve cg/parse contract drift; bump scheme1 readbuf to 256K | Ryan Sepassi | 10 | +145 | -75 |
| 2026-04-26 05:50 | cc: implement lex / pp / cg / parse modules | Ryan Sepassi | 159 | +5215 | -185 |
| 2026-04-26 05:15 | cc: util.scm — implement TBD helpers; add 14 test fixtures | Ryan Sepassi | 30 | +402 | -21 |
| 2026-04-26 04:58 | cc: scaffold compiler tree and test dirs | Ryan Sepassi | 19 | +661 | -0 |
| 2026-04-26 04:50 | docs: add C compiler spec — CC.md, CC-INTERNALS.md, CC-CONTRACTS.md | Ryan Sepassi | 3 | +1705 | -0 |
| 2026-04-26 00:25 | scheme1: implement pmatch special form per LISP-PMATCH.md | Ryan Sepassi | 17 | +524 | -0 |
| 2026-04-26 00:15 | make: cloc covers P1 tables + vendor seeds, ARCH= narrows scope | Ryan Sepassi | 1 | +16 | -3 |
| 2026-04-26 00:07 | make: add cloc target for core source line counts | Ryan Sepassi | 1 | +15 | -1 |
| 2026-04-26 00:04 | docs: add LISP-PMATCH spec and concrete pmatch impl sketch | Ryan Sepassi | 2 | +527 | -18 |
| 2026-04-25 23:57 | scheme1: forbid internal define; eval_body rejects with clear error | Ryan Sepassi | 5 | +40 | -5 |
| 2026-04-25 23:30 | scheme1: tighten 45-shell-spawn and 67-read-line to prelude-only | Ryan Sepassi | 2 | +7 | -18 |
| 2026-04-25 23:26 | docs: drop scheme-shell-todo audit (gaps closed) | Ryan Sepassi | 1 | +0 | -214 |
| 2026-04-25 23:26 | scheme1: rework shell + file-IO test coverage to prelude API only | Ryan Sepassi | 16 | +137 | -66 |
| 2026-04-25 23:26 | scheme1: tighten cond no-else, let* shadow, letrec recursion tests | Ryan Sepassi | 5 | +28 | -8 |
| 2026-04-25 23:26 | scheme1: 16 MB heap arena, ELF p_memsz to 32 MB | Ryan Sepassi | 4 | +10 | -8 |
| 2026-04-25 23:16 | scheme1: set!, cond => arrow, number/string radix-arg surface | Ryan Sepassi | 3 | +178 | -24 |
| 2026-04-25 23:15 | M1pp: bump TEXT_CAP 512KB -> 640KB, log text/output usage in native build | Ryan Sepassi | 2 | +8 | -7 |
| 2026-04-25 23:15 | argv test | Ryan Sepassi | 2 | +7 | -0 |
| 2026-04-25 22:58 | scheme1: tests for set! and number/string radix-arg surface | Ryan Sepassi | 3 | +62 | -0 |
| 2026-04-25 22:34 | scheme1: tests for hex string escapes, signed-int literals, and strict reader | Ryan Sepassi | 8 | +54 | -1 |
| 2026-04-25 22:31 | scheme1: add symbol?, #u8(...) literal, number?/bytevector? aliases | Ryan Sepassi | 5 | +310 | -20 |
| 2026-04-25 22:06 | scheme1: match record api to r7rs | Ryan Sepassi | 2 | +13 | -168 |
| 2026-04-25 21:51 | scheme1: fix parse_dec | Ryan Sepassi | 1 | +39 | -29 |
| 2026-04-25 21:42 | M1pp: track source line numbers and report them in error messages | Ryan Sepassi | 1 | +38 | -11 |
| 2026-04-25 21:35 | scheme1: string<->sym, bytevector-append, type preds, number<->str, quot/rem, bit-xor/not, set-car/cdr! | Ryan Sepassi | 2 | +413 | -142 |
| 2026-04-25 21:33 | scheme1: add min, max, modulo to the prelude | Ryan Sepassi | 1 | +14 | -0 |
| 2026-04-25 21:32 | scheme1: red-green tests for R7RS record API surface | Ryan Sepassi | 6 | +36 | -8 |
| 2026-04-25 21:32 | scheme1: pending tests for type predicates, quot/rem/mod, min/max/abs, bit-xor/not, num<->str | Ryan Sepassi | 10 | +140 | -0 |
| 2026-04-25 21:30 | scheme1: tests for string->symbol, symbol->string, bytevector-append | Ryan Sepassi | 6 | +75 | -16 |
| 2026-04-25 21:13 | scheme1: string? / set-car! / set-cdr! / length / list-ref primitives | Ryan Sepassi | 10 | +156 | -7 |
| 2026-04-25 20:58 | scheme1: > primitive, positive? prelude entry, comparison test coverage | Ryan Sepassi | 5 | +50 | -42 |
| 2026-04-25 20:53 | scheme1: equal?, bytevector=?; shell+fileio e2e test | Ryan Sepassi | 11 | +409 | -67 |
| 2026-04-25 20:39 | scheme1: string literal, char literal | Ryan Sepassi | 11 | +327 | -3 |
| 2026-04-25 20:38 | scheme1: display, write, format, error primitives | Ryan Sepassi | 11 | +699 | -21 |
| 2026-04-25 20:28 | scheme1: and/or special forms; drop embedded prelude | Ryan Sepassi | 6 | +130 | -145 |
| 2026-04-25 20:24 | scheme1: lift prelude to scheme1/prelude.scm, catm at run time | Ryan Sepassi | 3 | +375 | -4 |
| 2026-04-25 20:08 | scheme1: runtime errors, bytevector bounds, helper macros | Ryan Sepassi | 6 | +1039 | -749 |
| 2026-04-25 20:02 | Make M1pp directives whitespace-insensitive in M1pp.c | Ryan Sepassi | 1 | +139 | -75 |
| 2026-04-25 19:33 | M1pp whitespace tests | Ryan Sepassi | 18 | +50 | -8 |
| 2026-04-25 19:07 | rm old lisp code and script | Ryan Sepassi | 60 | +0 | -1067 |
| 2026-04-25 17:25 | Audit scheme1: document deviations and known issues | Ryan Sepassi | 1 | +324 | -12 |
| 2026-04-25 17:13 | Port shell.scm helpers into the embedded prelude | Ryan Sepassi | 5 | +85 | -0 |
| 2026-04-25 16:49 | Add scheme1 embedded prelude | Ryan Sepassi | 3 | +96 | -4 |
| 2026-04-25 16:22 | Add scheme1 syscall primitives, sys-argv, and EOF immediate | Ryan Sepassi | 9 | +404 | -7 |
| 2026-04-25 16:10 | Add scheme1 define-record-type and parameterized PRIM data slot | Ryan Sepassi | 9 | +430 | -5 |
| 2026-04-25 15:58 | Add scheme1 bytevectors with dynamic-array semantics | Ryan Sepassi | 14 | +359 | -2 |
| 2026-04-25 15:38 | Add scheme1 arith and list primitives | Ryan Sepassi | 13 | +343 | -33 |
| 2026-04-25 15:32 | Add scheme1 cond, begin, and the let family | Ryan Sepassi | 15 | +493 | -49 |
| 2026-04-25 15:17 | Add variadic .-tail to scheme1 lambda/define | Ryan Sepassi | 9 | +74 | -3 |
| 2026-04-25 15:14 | Add scheme1 top-level define and read-eval loop | Ryan Sepassi | 7 | +101 | -5 |
| 2026-04-25 14:12 | Add scheme1 reader: `;` comments, `'datum` quote, `#xNN` hex literals | Ryan Sepassi | 8 | +139 | -1 |
| 2026-04-25 13:48 | Add scheme1 lambda, closures, and alist environments | Ryan Sepassi | 7 | +173 | -2 |
| 2026-04-25 13:40 | Use %tail / %tailr at every scheme1 tail position | Ryan Sepassi | 1 | +15 | -21 |
| 2026-04-25 13:32 | Add scheme1 `if` special form and #t/#f reader literals | Ryan Sepassi | 5 | +109 | -1 |
| 2026-04-25 13:13 | Heap-allocate PRIM objects so the HEAP tag bits land correctly | Ryan Sepassi | 1 | +25 | -11 |
| 2026-04-25 10:03 | Refactor scheme1.P1pp: use tag idioms, lexer helpers, %die, %alignup | Ryan Sepassi | 3 | +104 | -119 |
| 2026-04-25 10:03 | Add scheme1 phase-1 interpreter spine and test runner | Ryan Sepassi | 7 | +953 | -34 |
| 2026-04-25 03:39 | Refactor M1pp.P1 boilerplate: BSS init loop, lex helper, char-class table | Ryan Sepassi | 4 | +207 | -243 |
| 2026-04-25 01:20 | Move M1pp.P1's BSS-style buffers past ELF_end; bump ph_memsz to 8MB | Ryan Sepassi | 8 | +476 | -16815 |
| 2026-04-25 01:02 | Drop parens on zero-arg macro calls | Ryan Sepassi | 10 | +114 | -114 |
| 2026-04-25 00:52 | rm post, moved to site | Ryan Sepassi | 1 | +0 | -423 |
| 2026-04-25 00:52 | P1.LI: take immediate as a macro arg | Ryan Sepassi | 8 | +139 | -130 |
| 2026-04-25 00:32 | M1pp.P1 correct tokens end | Ryan Sepassi | 1 | +2 | -2 |
| 2026-04-25 00:05 | Pass ARCH via env, drop arg-list noise from script invocations | Ryan Sepassi | 7 | +78 | -101 |
| 2026-04-24 23:57 | Push container builds onto tmpfs; restructure scripts/ around boot-* convention | Ryan Sepassi | 15 | +1957 | -401 |
| 2026-04-24 23:04 | Drop "v2" from P1 naming everywhere | Ryan Sepassi | 15 | +80 | -79 |
| 2026-04-24 22:58 | Restructure build into scripts/, vendor seeds, unify ARCH paths | Ryan Sepassi | 115 | +9829 | -2199 |
| 2026-04-24 22:54 | Add amd64 / riscv64 P1v2 generators; explicit ARCHES wiring | Ryan Sepassi | 5 | +1722 | -0 |
| 2026-04-24 22:25 | Add readme | Ryan Sepassi | 1 | +41 | -0 |
| 2026-04-24 22:17 | rm old P1 lisp | Ryan Sepassi | 1 | +0 | -7119 |
| 2026-04-24 22:03 | Simplify P1-amd64.M1pp helpers; drop native reg tables from P1.md | Ryan Sepassi | 2 | +95 | -272 |
| 2026-04-24 20:33 | Fold LA_BR into branch/call/tail at P1.M1pp layer | Ryan Sepassi | 7 | +266 | -447 |
| 2026-04-24 19:06 | Add libp1pp v1 utility library (p1/p1pp.P1pp) | Ryan Sepassi | 1 | +1457 | -0 |
| 2026-04-24 19:06 | Bump M1PP macro cap from 256 to 512 | Ryan Sepassi | 3 | +4 | -4 |
| 2026-04-24 18:56 | Add %scope / %endscope and :: label rewrite to M1PP | Ryan Sepassi | 23 | +845 | -51 |
| 2026-04-24 18:11 | LIBP1PP.md | Ryan Sepassi | 1 | +571 | -0 |
| 2026-04-24 17:41 | Rename .M1→.P1 and .P1→.P1pp to reflect toolchain level | Ryan Sepassi | 12 | +22 | -23 |
| 2026-04-24 17:23 | Port m1pp/pokem to p1_main and emit :_start from p1_gen.py | Ryan Sepassi | 6 | +90 | -52 |
| 2026-04-24 16:51 | Add pokem, a P1 raw-byte file patcher | Ryan Sepassi | 1 | +262 | -0 |
| 2026-04-24 16:03 | Hide P1 frame header and merge LEAVE+RET into ERET | Ryan Sepassi | 12 | +505 | -303 |
| 2026-04-24 15:09 | Expand post with missing m1pp/P1 features and P1 source examples | Ryan Sepassi | 1 | +80 | -0 |
| 2026-04-24 15:09 | Add argc_exit and double P1 test fixtures | Ryan Sepassi | 4 | +30 | -0 |
| 2026-04-24 15:09 | Require active frame for CALL/CALLR in P1 spec | Ryan Sepassi | 1 | +4 | -5 |
| 2026-04-24 14:54 | Add riscv64 and amd64 P1v2 backends with multi-arch test harness | Ryan Sepassi | 9 | +1672 | -84 |
| 2026-04-24 12:44 | Speed up P1 build/test loop ~30-70x via native mescc-tools | Ryan Sepassi | 4 | +194 | -43 |
| 2026-04-24 04:25 | Add P1v2 program-entry model (aarch64 _start stub calling p1_main) | Ryan Sepassi | 4 | +73 | -23 |
| 2026-04-24 04:14 | Update Lisp plan for P1 | Ryan Sepassi | 1 | +414 | -107 |
| 2026-04-24 03:28 | M1PP doc | Ryan Sepassi | 1 | +179 | -0 |
| 2026-04-24 03:15 | rm old docs | Ryan Sepassi | 7 | +483 | -2981 |
| 2026-04-24 03:09 | update post | Ryan Sepassi | 1 | +1 | -1 |
| 2026-04-24 03:09 | shell.scm | Ryan Sepassi | 1 | +201 | -0 |
| 2026-04-24 03:08 | lisp docs | Ryan Sepassi | 3 | +765 | -1119 |
| 2026-04-24 01:22 | m1pp.M1: port %struct and %enum directives | Ryan Sepassi | 1 | +527 | -1 |
| 2026-04-24 01:22 | m1pp: add %struct and %enum directives | Ryan Sepassi | 5 | +314 | -0 |
| 2026-04-24 00:44 | tests/m1pp/12-braced-args: compose §1 local labels in WHILE_NEZ | Ryan Sepassi | 2 | +4 | -4 |
| 2026-04-24 00:22 | Merge feature: braced block arguments (§2) | Ryan Sepassi | 5 | +405 | -7 |
| 2026-04-24 00:22 | Merge feature: local labels :@name / &@name (§1) | Ryan Sepassi | 4 | +395 | -2 |
| 2026-04-24 00:22 | Merge feature: %str stringification builtin (§7) | Ryan Sepassi | 7 | +264 | -2 |
| 2026-04-24 00:22 | Merge feature: strlen expression op (§3) | Ryan Sepassi | 5 | +137 | -4 |
| 2026-04-24 00:22 | Merge feature: paren-less 0-arg macro calls (§4) | Ryan Sepassi | 6 | +202 | -24 |
| 2026-04-24 00:21 | m1pp.M1: port %str stringification builtin | Ryan Sepassi | 1 | +153 | -1 |
| 2026-04-24 00:20 | m1pp.M1: port strlen expression op | Ryan Sepassi | 1 | +89 | -3 |
| 2026-04-24 00:20 | m1pp.M1: port local labels (:@name, &@name) | Ryan Sepassi | 1 | +259 | -2 |
| 2026-04-24 00:19 | m1pp.M1: port braced block arguments | Ryan Sepassi | 1 | +213 | -5 |
| 2026-04-24 00:17 | m1pp.M1: allow paren-less invocation of 0-arg macros | Ryan Sepassi | 1 | +67 | -13 |
| 2026-04-24 00:06 | m1pp: add %str stringification builtin | Ryan Sepassi | 6 | +111 | -1 |
| 2026-04-24 00:05 | m1pp: allow paren-less invocation of 0-arg macros | Ryan Sepassi | 5 | +135 | -11 |
| 2026-04-24 00:05 | m1pp: add braced block arguments | Ryan Sepassi | 4 | +192 | -2 |
| 2026-04-24 00:04 | m1pp: add strlen expression op | Ryan Sepassi | 4 | +48 | -1 |
| 2026-04-24 00:04 | m1pp: add local labels (:@name, &@name) | Ryan Sepassi | 3 | +136 | -0 |
| 2026-04-23 23:58 | m1pp: spell XOR as ^ (was \$); drop == alias for = | Ryan Sepassi | 4 | +12 | -29 |
| 2026-04-23 23:53 | m1pp extensions doc | Ryan Sepassi | 1 | +656 | -0 |
| 2026-04-23 23:48 | m1pp/m1pp.M1: scrub evolutionary comments | Ryan Sepassi | 1 | +82 | -102 |
| 2026-04-23 23:27 | tests/p1: hello.P1 + harness exercising the full P1 -> ELF pipeline | Ryan Sepassi | 3 | +152 | -0 |
| 2026-04-23 23:27 | m1pp: emit !@%$ hex builtins as quoted strings; bump buffers for P1 | Ryan Sepassi | 7 | +16635 | -93 |
| 2026-04-23 22:52 | tests/m1pp: add 7 oracle-parity fixtures + unpark full-parity | Ryan Sepassi | 16 | +352 | -0 |
| 2026-04-23 22:43 | Integrate fix: spell negative addi immediates as negN (lint blind spot) | Ryan Sepassi | 1 | +10 | -10 |
| 2026-04-23 22:37 | Merge branch 'worktree-agent-aecb01d58b541506d' into integrate-m1pp | Ryan Sepassi | 1 | +418 | -3 |
| 2026-04-23 22:36 | Merge branch 'worktree-agent-a04674a83d5e97483' into integrate-m1pp | Ryan Sepassi | 1 | +1296 | -24 |
| 2026-04-23 22:36 | Merge branch 'worktree-agent-a63654c7cd13786ed' into integrate-m1pp | Ryan Sepassi | 1 | +648 | -10 |
| 2026-04-23 22:35 | Merge branch 'worktree-agent-a55e267523e077156' into integrate-m1pp | Ryan Sepassi | 1 | +271 | -6 |
| 2026-04-23 22:35 | Track E: builtins (! @ % $ %select) | Ryan Sepassi | 1 | +421 | -2 |
| 2026-04-23 22:35 | Track D: expression evaluator | Ryan Sepassi | 1 | +1280 | -9 |
| 2026-04-23 22:35 | Track C: macro expansion (parse_args, find_macro/param, expand_*) | Ryan Sepassi | 1 | +648 | -10 |
| 2026-04-23 22:35 | Track B: ## token paste compaction | Ryan Sepassi | 1 | +271 | -6 |
| 2026-04-23 22:35 | Track A: stream stack + pool lifetime + process_tokens rewrite | Ryan Sepassi | 1 | +306 | -74 |
| 2026-04-23 22:01 | m1pp stubs | Ryan Sepassi | 1 | +442 | -26 |
| 2026-04-23 21:45 | m1pp: Phase 2 — store %macro definitions in arenas | Ryan Sepassi | 4 | +428 | -67 |
| 2026-04-23 21:32 | docs/M1M-IMPL.md: reconcile with post-Phase-1 state | Ryan Sepassi | 1 | +21 | -18 |
| 2026-04-23 21:30 | post updates | Ryan Sepassi | 1 | +8 | -10 |
| 2026-04-23 21:29 | m1pp: switch build.sh and test.sh to a distroless-busybox image | Ryan Sepassi | 3 | +15 | -7 |
| 2026-04-23 21:28 | m1pp: annotate m1pp.M1 with pseudo-C inline comments | Ryan Sepassi | 1 | +154 | -22 |
| 2026-04-23 21:00 | m1pp: add structural section comments in m1pp.M1 | Ryan Sepassi | 1 | +69 | -4 |
| 2026-04-23 20:55 | m1pp: Phase 1 — port lexer + pass-through skeleton to P1v2 | Ryan Sepassi | 7 | +787 | -2280 |
| 2026-04-23 20:25 | m1pp: alias container image as localhost/lispcc:aarch64; add port pointers | Ryan Sepassi | 3 | +135 | -28 |
| 2026-04-23 20:19 | m1pp: Phase 0 build infra; split aarch64 LI/LA literal prefix | Ryan Sepassi | 11 | +339 | -25 |
| 2026-04-23 18:55 | move files around | Ryan Sepassi | 9 | +0 | -1468 |
| 2026-04-23 18:52 | post update | Ryan Sepassi | 1 | +142 | -176 |
| 2026-04-23 18:42 | drop i386, expand register set, add BLTU | Ryan Sepassi | 5 | +110 | -51 |
| 2026-04-23 18:15 | post update | Ryan Sepassi | 1 | +143 | -102 |
| 2026-04-23 18:06 | rename to m1pp | Ryan Sepassi | 4 | +0 | -0 |
| 2026-04-23 18:03 | Use !@%$ vs %le32/le64 in m1pp | Ryan Sepassi | 5 | +64 | -56 |
| 2026-04-23 15:58 | Regularize M1M macro oracle | Ryan Sepassi | 5 | +704 | -577 |
| 2026-04-23 15:07 | m1m simplify spec | Ryan Sepassi | 6 | +451 | -224 |
| 2026-04-23 14:19 | Implement initial P1 m1m tokenizer slice | Ryan Sepassi | 5 | +2399 | -52 |
| 2026-04-23 13:54 | Describe m1m bootstrap path | Ryan Sepassi | 1 | +34 | -0 |
| 2026-04-23 13:54 | Document m1macro P1 port plan | Ryan Sepassi | 1 | +194 | -0 |
| 2026-04-23 13:54 | Add P1 m1m bootstrap stub | Ryan Sepassi | 3 | +353 | -3 |
| 2026-04-23 04:19 | p1.m1m | Ryan Sepassi | 3 | +1122 | -6 |
| 2026-04-23 00:51 | p1v2 | Ryan Sepassi | 7 | +2464 | -0 |
| 2026-04-22 18:17 | Vendor AArch64 catm hex2 source | Ryan Sepassi | 3 | +148 | -12 |
| 2026-04-22 18:17 | build: ~30x faster + 75% smaller lisp binary | Ryan Sepassi | 5 | +234 | -13 |
| 2026-04-22 16:16 | lisp.M1: move 14 primitives to Scheme prelude for reviewability | Ryan Sepassi | 2 | +289 | -698 |
| 2026-04-22 16:16 | lisp update TODO | Ryan Sepassi | 1 | +3 | -3 |
| 2026-04-22 14:19 | P1.md: clarify leaf-function semantics (CALLable in, not out) | Ryan Sepassi | 1 | +24 | -16 |
| 2026-04-22 14:17 | P1.md: document the CALL/PROLOGUE contract explicitly | Ryan Sepassi | 1 | +28 | -3 |
| 2026-04-22 14:05 | lisp.M1: fix mark_push_recurse self-loop on aarch64/riscv64; add GC stress tests from LISP-GC.md step-5 set | Ryan Sepassi | 10 | +127 | -21 |
| 2026-04-22 08:33 | LISP-GC.md: add "Remaining work" checklist | Ryan Sepassi | 1 | +69 | -0 |
| 2026-04-22 05:23 | lisp.M1 step 13: wire GC into allocator + mostly-precise stack scan | Ryan Sepassi | 10 | +340 | -32 |
| 2026-04-22 03:14 | lisp gc spike; P1 frame pointer | Ryan Sepassi | 3 | +1982 | -563 |
| 2026-04-22 00:26 | lisp.M1 steps 11-12: reader shorthand + set!/let/letrec/cond/quasiquote | Ryan Sepassi | 21 | +1552 | -123 |
| 2026-04-22 00:10 | lisp: concat prelude in make | Ryan Sepassi | 2 | +60 | -8 |
| 2026-04-21 23:28 | lisp.M1 step 10h: enable map/filter/fold prelude | Ryan Sepassi | 4 | +41 | -28 |
| 2026-04-21 22:58 | lisp.M1: fix eval_if #f, prim_ashift neg; p1_gen: amd64 RRR rB-alias | Ryan Sepassi | 2 | +22 | -6 |
| 2026-04-21 22:25 | amd64 sib fix | Ryan Sepassi | 1 | +11 | -9 |
| 2026-04-21 20:31 | update mnemonics to lower-case, remove P1_ prefix | Ryan Sepassi | 5 | +3992 | -6219 |
| 2026-04-21 20:02 | lisp.M1 step 10d-10g: list-core, string, vector, I/O primitives | Ryan Sepassi | 8 | +1461 | -200 |
| 2026-04-21 19:45 | podman 3 arch digests | Ryan Sepassi | 1 | +22 | -10 |
| 2026-04-21 19:05 | lisp.M1: collapse MOV_R3_SP + R3-base mem ops to SP-relative forms | Ryan Sepassi | 1 | +176 | -265 |
| 2026-04-21 18:32 | lisp.M1: fix BLTZ refactor regressions in _start and read/write_file_all | Ryan Sepassi | 1 | +12 | -20 |
| 2026-04-21 17:10 | lisp.M1 use %N, P1 branch zero, additional lisp tests | Ryan Sepassi | 18 | +2962 | -1563 |
| 2026-04-21 15:59 | rm kaem | Ryan Sepassi | 3 | +2 | -1319 |
| 2026-04-21 15:58 | build: pull podman image once per arch, run with --pull=never | Ryan Sepassi | 1 | +26 | -13 |
| 2026-04-21 15:53 | docs: drop C1 and kaem-minimal; collapse to three contributions | Ryan Sepassi | 4 | +239 | -680 |
| 2026-04-21 15:41 | lisp.M1 step 10a-10c: FFI harness, registration, 27 primitives | Ryan Sepassi | 13 | +1547 | -143 |
| 2026-04-21 15:16 | build: only curdir is mounted into podman | Ryan Sepassi | 10 | +1225 | -1357 |
| 2026-04-21 14:55 | reorg: docs/ arch/ src/ tests/ | Ryan Sepassi | 18 | +47 | -32 |
| 2026-04-21 14:43 | lisp tests: step-7 tail-call smoke | Ryan Sepassi | 2 | +33 | -0 |
| 2026-04-21 14:41 | lisp test harness | Ryan Sepassi | 3 | +39 | -1 |
| 2026-04-21 14:36 | lisp: TAIL, argv[1] scripts | Ryan Sepassi | 3 | +501 | -94 |
| 2026-04-21 14:13 | kaem-minimal: P1 port of stage0-posix line-oriented shell | Ryan Sepassi | 3 | +1342 | -25 |
| 2026-04-21 14:12 | LISP.md: reorder staged plan — argv/tests/primitives before extensions | Ryan Sepassi | 1 | +28 | -12 |
| 2026-04-21 13:52 | P1 gen: per-arch encoder classes + Cartesian DEFINE expansion | Ryan Sepassi | 1 | +595 | -815 |
| 2026-04-21 13:14 | lisp.M1 steps 5-6: printer + eval (closures, define, apply) | Ryan Sepassi | 2 | +1336 | -73 |
| 2026-04-21 12:33 | C1 and SEED docs | Ryan Sepassi | 2 | +775 | -0 |
| 2026-04-21 12:28 | Build: generate p1_<arch>.M1 on demand from p1_gen.py | Ryan Sepassi | 5 | +10 | -723 |
| 2026-04-21 12:22 | lisp.M1 steps 3-4: interning + reader/display with line:col diagnostics | Ryan Sepassi | 5 | +2554 | -173 |
| 2026-04-21 05:20 | P1: extract branch-scratch; 4:4 caller/callee split; stack-walking GC roots | Ryan Sepassi | 10 | +456 | -636 |
| 2026-04-21 04:11 | P1: generator-driven defs, N-slot prologue, lint, no hidden clobbers | Ryan Sepassi | 8 | +1518 | -873 |
| 2026-04-21 03:31 | lisp.M1 step 2 (tagged values); P1 Tranche 8; add P1_TODO.md | Ryan Sepassi | 5 | +509 | -148 |
| 2026-04-21 02:12 | P1 refine conventions; add lisp.M1 step 1 | Ryan Sepassi | 5 | +614 | -55 |
| 2026-04-21 00:35 | Add LISP.md for the P1-hosted Lisp interpreter | Ryan Sepassi | 1 | +492 | -0 |
| 2026-04-21 00:01 | P1 promote PROLOGUE/EPILOGUE, add TAIL stack check and neg-imm12 mem test | Ryan Sepassi | 5 | +101 | -16 |
| 2026-04-21 00:01 | pin alpine image | Ryan Sepassi | 1 | +10 | -1 |
| 2026-04-20 23:36 | P1 prune ISA and rewrite demo with discriminating tests | Ryan Sepassi | 6 | +309 | -267 |
| 2026-04-20 22:35 | P1 extend demo.M1 to cover all ops | Ryan Sepassi | 4 | +568 | -55 |
| 2026-04-20 21:47 | Bootstrap the P1 toolchain from hex0-seed instead of gcc | Ryan Sepassi | 3 | +119 | -77 |
| 2026-04-20 20:20 | Move P1.md into the repo | Ryan Sepassi | 7 | +310 | -6 |
| 2026-04-20 20:18 | Rewrite PLAN.md to layer the Lisp bootstrap on P1 | Ryan Sepassi | 1 | +79 | -13 |
| 2026-04-20 20:18 | Add demo.M1 exercising broader P1 op set across three arches | Ryan Sepassi | 5 | +156 | -24 |
| 2026-04-20 19:53 | Drop aarch64_defs.M1, update README for P1 layout | Ryan Sepassi | 2 | +23 | -246 |
| 2026-04-20 19:52 | Add P1 portable pseudo-ISA, port hello.M1 to three arches | Ryan Sepassi | 7 | +411 | -48 |
| 2026-04-20 18:59 | Initial commit: aarch64 hello-world via M1 + hex2 | Ryan Sepassi | 8 | +585 | -0 |