| 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 |