boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs | README

DateCommit messageAuthorFiles+-
2026-04-25 10:03Refactor scheme1.P1pp: use tag idioms, lexer helpers, %die, %alignupRyan Sepassi3+104-119
2026-04-25 10:03Add scheme1 phase-1 interpreter spine and test runnerRyan Sepassi7+953-34
2026-04-25 03:39Refactor M1pp.P1 boilerplate: BSS init loop, lex helper, char-class tableRyan Sepassi4+207-243
2026-04-25 01:20Move M1pp.P1's BSS-style buffers past ELF_end; bump ph_memsz to 8MBRyan Sepassi8+476-16815
2026-04-25 01:02Drop parens on zero-arg macro callsRyan Sepassi10+114-114
2026-04-25 00:52rm post, moved to siteRyan Sepassi1+0-423
2026-04-25 00:52P1.LI: take immediate as a macro argRyan Sepassi8+139-130
2026-04-25 00:32M1pp.P1 correct tokens endRyan Sepassi1+2-2
2026-04-25 00:05Pass ARCH via env, drop arg-list noise from script invocationsRyan Sepassi7+78-101
2026-04-24 23:57Push container builds onto tmpfs; restructure scripts/ around boot-* conventionRyan Sepassi15+1957-401
2026-04-24 23:04Drop "v2" from P1 naming everywhereRyan Sepassi15+80-79
2026-04-24 22:58Restructure build into scripts/, vendor seeds, unify ARCH pathsRyan Sepassi115+9829-2199
2026-04-24 22:54Add amd64 / riscv64 P1v2 generators; explicit ARCHES wiringRyan Sepassi5+1722-0
2026-04-24 22:25Add readmeRyan Sepassi1+41-0
2026-04-24 22:17rm old P1 lispRyan Sepassi1+0-7119
2026-04-24 22:03Simplify P1-amd64.M1pp helpers; drop native reg tables from P1.mdRyan Sepassi2+95-272
2026-04-24 20:33Fold LA_BR into branch/call/tail at P1.M1pp layerRyan Sepassi7+266-447
2026-04-24 19:06Add libp1pp v1 utility library (p1/p1pp.P1pp)Ryan Sepassi1+1457-0
2026-04-24 19:06Bump M1PP macro cap from 256 to 512Ryan Sepassi3+4-4
2026-04-24 18:56Add %scope / %endscope and :: label rewrite to M1PPRyan Sepassi23+845-51
2026-04-24 18:11LIBP1PP.mdRyan Sepassi1+571-0
2026-04-24 17:41Rename .M1→.P1 and .P1→.P1pp to reflect toolchain levelRyan Sepassi12+22-23
2026-04-24 17:23Port m1pp/pokem to p1_main and emit :_start from p1_gen.pyRyan Sepassi6+90-52
2026-04-24 16:51Add pokem, a P1 raw-byte file patcherRyan Sepassi1+262-0
2026-04-24 16:03Hide P1 frame header and merge LEAVE+RET into ERETRyan Sepassi12+505-303
2026-04-24 15:09Expand post with missing m1pp/P1 features and P1 source examplesRyan Sepassi1+80-0
2026-04-24 15:09Add argc_exit and double P1 test fixturesRyan Sepassi4+30-0
2026-04-24 15:09Require active frame for CALL/CALLR in P1 specRyan Sepassi1+4-5
2026-04-24 14:54Add riscv64 and amd64 P1v2 backends with multi-arch test harnessRyan Sepassi9+1672-84
2026-04-24 12:44Speed up P1 build/test loop ~30-70x via native mescc-toolsRyan Sepassi4+194-43
2026-04-24 04:25Add P1v2 program-entry model (aarch64 _start stub calling p1_main)Ryan Sepassi4+73-23
2026-04-24 04:14Update Lisp plan for P1Ryan Sepassi1+414-107
2026-04-24 03:28M1PP docRyan Sepassi1+179-0
2026-04-24 03:15rm old docsRyan Sepassi7+483-2981
2026-04-24 03:09update postRyan Sepassi1+1-1
2026-04-24 03:09shell.scmRyan Sepassi1+201-0
2026-04-24 03:08lisp docsRyan Sepassi3+765-1119
2026-04-24 01:22m1pp.M1: port %struct and %enum directivesRyan Sepassi1+527-1
2026-04-24 01:22m1pp: add %struct and %enum directivesRyan Sepassi5+314-0
2026-04-24 00:44tests/m1pp/12-braced-args: compose §1 local labels in WHILE_NEZRyan Sepassi2+4-4
2026-04-24 00:22Merge feature: braced block arguments (§2)Ryan Sepassi5+405-7
2026-04-24 00:22Merge feature: local labels :@name / &@name (§1)Ryan Sepassi4+395-2
2026-04-24 00:22Merge feature: %str stringification builtin (§7)Ryan Sepassi7+264-2
2026-04-24 00:22Merge feature: strlen expression op (§3)Ryan Sepassi5+137-4
2026-04-24 00:22Merge feature: paren-less 0-arg macro calls (§4)Ryan Sepassi6+202-24
2026-04-24 00:21m1pp.M1: port %str stringification builtinRyan Sepassi1+153-1
2026-04-24 00:20m1pp.M1: port strlen expression opRyan Sepassi1+89-3
2026-04-24 00:20m1pp.M1: port local labels (:@name, &@name)Ryan Sepassi1+259-2
2026-04-24 00:19m1pp.M1: port braced block argumentsRyan Sepassi1+213-5
2026-04-24 00:17m1pp.M1: allow paren-less invocation of 0-arg macrosRyan Sepassi1+67-13
2026-04-24 00:06m1pp: add %str stringification builtinRyan Sepassi6+111-1
2026-04-24 00:05m1pp: allow paren-less invocation of 0-arg macrosRyan Sepassi5+135-11
2026-04-24 00:05m1pp: add braced block argumentsRyan Sepassi4+192-2
2026-04-24 00:04m1pp: add strlen expression opRyan Sepassi4+48-1
2026-04-24 00:04m1pp: add local labels (:@name, &@name)Ryan Sepassi3+136-0
2026-04-23 23:58m1pp: spell XOR as ^ (was \$); drop == alias for =Ryan Sepassi4+12-29
2026-04-23 23:53m1pp extensions docRyan Sepassi1+656-0
2026-04-23 23:48m1pp/m1pp.M1: scrub evolutionary commentsRyan Sepassi1+82-102
2026-04-23 23:27tests/p1: hello.P1 + harness exercising the full P1 -> ELF pipelineRyan Sepassi3+152-0
2026-04-23 23:27m1pp: emit !@%$ hex builtins as quoted strings; bump buffers for P1Ryan Sepassi7+16635-93
2026-04-23 22:52tests/m1pp: add 7 oracle-parity fixtures + unpark full-parityRyan Sepassi16+352-0
2026-04-23 22:43Integrate fix: spell negative addi immediates as negN (lint blind spot)Ryan Sepassi1+10-10
2026-04-23 22:37Merge branch 'worktree-agent-aecb01d58b541506d' into integrate-m1ppRyan Sepassi1+418-3
2026-04-23 22:36Merge branch 'worktree-agent-a04674a83d5e97483' into integrate-m1ppRyan Sepassi1+1296-24
2026-04-23 22:36Merge branch 'worktree-agent-a63654c7cd13786ed' into integrate-m1ppRyan Sepassi1+648-10
2026-04-23 22:35Merge branch 'worktree-agent-a55e267523e077156' into integrate-m1ppRyan Sepassi1+271-6
2026-04-23 22:35Track E: builtins (! @ % $ %select)Ryan Sepassi1+421-2
2026-04-23 22:35Track D: expression evaluatorRyan Sepassi1+1280-9
2026-04-23 22:35Track C: macro expansion (parse_args, find_macro/param, expand_*)Ryan Sepassi1+648-10
2026-04-23 22:35Track B: ## token paste compactionRyan Sepassi1+271-6
2026-04-23 22:35Track A: stream stack + pool lifetime + process_tokens rewriteRyan Sepassi1+306-74
2026-04-23 22:01m1pp stubsRyan Sepassi1+442-26
2026-04-23 21:45m1pp: Phase 2 — store %macro definitions in arenasRyan Sepassi4+428-67
2026-04-23 21:32docs/M1M-IMPL.md: reconcile with post-Phase-1 stateRyan Sepassi1+21-18
2026-04-23 21:30post updatesRyan Sepassi1+8-10
2026-04-23 21:29m1pp: switch build.sh and test.sh to a distroless-busybox imageRyan Sepassi3+15-7
2026-04-23 21:28m1pp: annotate m1pp.M1 with pseudo-C inline commentsRyan Sepassi1+154-22
2026-04-23 21:00m1pp: add structural section comments in m1pp.M1Ryan Sepassi1+69-4
2026-04-23 20:55m1pp: Phase 1 — port lexer + pass-through skeleton to P1v2Ryan Sepassi7+787-2280
2026-04-23 20:25m1pp: alias container image as localhost/lispcc:aarch64; add port pointersRyan Sepassi3+135-28
2026-04-23 20:19m1pp: Phase 0 build infra; split aarch64 LI/LA literal prefixRyan Sepassi11+339-25
2026-04-23 18:55move files aroundRyan Sepassi9+0-1468
2026-04-23 18:52post updateRyan Sepassi1+142-176
2026-04-23 18:42drop i386, expand register set, add BLTURyan Sepassi5+110-51
2026-04-23 18:15post updateRyan Sepassi1+143-102
2026-04-23 18:06rename to m1ppRyan Sepassi4+0-0
2026-04-23 18:03Use !@%$ vs %le32/le64 in m1ppRyan Sepassi5+64-56
2026-04-23 15:58Regularize M1M macro oracleRyan Sepassi5+704-577
2026-04-23 15:07m1m simplify specRyan Sepassi6+451-224
2026-04-23 14:19Implement initial P1 m1m tokenizer sliceRyan Sepassi5+2399-52
2026-04-23 13:54Describe m1m bootstrap pathRyan Sepassi1+34-0
2026-04-23 13:54Document m1macro P1 port planRyan Sepassi1+194-0
2026-04-23 13:54Add P1 m1m bootstrap stubRyan Sepassi3+353-3
2026-04-23 04:19p1.m1mRyan Sepassi3+1122-6
2026-04-23 00:51p1v2Ryan Sepassi7+2464-0
2026-04-22 18:17Vendor AArch64 catm hex2 sourceRyan Sepassi3+148-12
2026-04-22 18:17build: ~30x faster + 75% smaller lisp binaryRyan Sepassi5+234-13
2026-04-22 16:16lisp.M1: move 14 primitives to Scheme prelude for reviewabilityRyan Sepassi2+289-698
2026-04-22 16:16lisp update TODORyan Sepassi1+3-3
2026-04-22 14:19P1.md: clarify leaf-function semantics (CALLable in, not out)Ryan Sepassi1+24-16
2026-04-22 14:17P1.md: document the CALL/PROLOGUE contract explicitlyRyan Sepassi1+28-3
2026-04-22 14:05lisp.M1: fix mark_push_recurse self-loop on aarch64/riscv64; add GC stress tests from LISP-GC.md step-5 setRyan Sepassi10+127-21
2026-04-22 08:33LISP-GC.md: add "Remaining work" checklistRyan Sepassi1+69-0
2026-04-22 05:23lisp.M1 step 13: wire GC into allocator + mostly-precise stack scanRyan Sepassi10+340-32
2026-04-22 03:14lisp gc spike; P1 frame pointerRyan Sepassi3+1982-563
2026-04-22 00:26lisp.M1 steps 11-12: reader shorthand + set!/let/letrec/cond/quasiquoteRyan Sepassi21+1552-123
2026-04-22 00:10lisp: concat prelude in makeRyan Sepassi2+60-8
2026-04-21 23:28lisp.M1 step 10h: enable map/filter/fold preludeRyan Sepassi4+41-28
2026-04-21 22:58lisp.M1: fix eval_if #f, prim_ashift neg; p1_gen: amd64 RRR rB-aliasRyan Sepassi2+22-6
2026-04-21 22:25amd64 sib fixRyan Sepassi1+11-9
2026-04-21 20:31update mnemonics to lower-case, remove P1_ prefixRyan Sepassi5+3992-6219
2026-04-21 20:02lisp.M1 step 10d-10g: list-core, string, vector, I/O primitivesRyan Sepassi8+1461-200
2026-04-21 19:45podman 3 arch digestsRyan Sepassi1+22-10
2026-04-21 19:05lisp.M1: collapse MOV_R3_SP + R3-base mem ops to SP-relative formsRyan Sepassi1+176-265
2026-04-21 18:32lisp.M1: fix BLTZ refactor regressions in _start and read/write_file_allRyan Sepassi1+12-20
2026-04-21 17:10lisp.M1 use %N, P1 branch zero, additional lisp testsRyan Sepassi18+2962-1563
2026-04-21 15:59rm kaemRyan Sepassi3+2-1319
2026-04-21 15:58build: pull podman image once per arch, run with --pull=neverRyan Sepassi1+26-13
2026-04-21 15:53docs: drop C1 and kaem-minimal; collapse to three contributionsRyan Sepassi4+239-680
2026-04-21 15:41lisp.M1 step 10a-10c: FFI harness, registration, 27 primitivesRyan Sepassi13+1547-143
2026-04-21 15:16build: only curdir is mounted into podmanRyan Sepassi10+1225-1357
2026-04-21 14:55reorg: docs/ arch/ src/ tests/Ryan Sepassi18+47-32
2026-04-21 14:43lisp tests: step-7 tail-call smokeRyan Sepassi2+33-0
2026-04-21 14:41lisp test harnessRyan Sepassi3+39-1
2026-04-21 14:36lisp: TAIL, argv[1] scriptsRyan Sepassi3+501-94
2026-04-21 14:13kaem-minimal: P1 port of stage0-posix line-oriented shellRyan Sepassi3+1342-25
2026-04-21 14:12LISP.md: reorder staged plan — argv/tests/primitives before extensionsRyan Sepassi1+28-12
2026-04-21 13:52P1 gen: per-arch encoder classes + Cartesian DEFINE expansionRyan Sepassi1+595-815
2026-04-21 13:14lisp.M1 steps 5-6: printer + eval (closures, define, apply)Ryan Sepassi2+1336-73
2026-04-21 12:33C1 and SEED docsRyan Sepassi2+775-0
2026-04-21 12:28Build: generate p1_<arch>.M1 on demand from p1_gen.pyRyan Sepassi5+10-723
2026-04-21 12:22lisp.M1 steps 3-4: interning + reader/display with line:col diagnosticsRyan Sepassi5+2554-173
2026-04-21 05:20P1: extract branch-scratch; 4:4 caller/callee split; stack-walking GC rootsRyan Sepassi10+456-636
2026-04-21 04:11P1: generator-driven defs, N-slot prologue, lint, no hidden clobbersRyan Sepassi8+1518-873
2026-04-21 03:31lisp.M1 step 2 (tagged values); P1 Tranche 8; add P1_TODO.mdRyan Sepassi5+509-148
2026-04-21 02:12P1 refine conventions; add lisp.M1 step 1Ryan Sepassi5+614-55
2026-04-21 00:35Add LISP.md for the P1-hosted Lisp interpreterRyan Sepassi1+492-0
2026-04-21 00:01P1 promote PROLOGUE/EPILOGUE, add TAIL stack check and neg-imm12 mem testRyan Sepassi5+101-16
2026-04-21 00:01pin alpine imageRyan Sepassi1+10-1
2026-04-20 23:36P1 prune ISA and rewrite demo with discriminating testsRyan Sepassi6+309-267
2026-04-20 22:35P1 extend demo.M1 to cover all opsRyan Sepassi4+568-55
2026-04-20 21:47Bootstrap the P1 toolchain from hex0-seed instead of gccRyan Sepassi3+119-77
2026-04-20 20:20Move P1.md into the repoRyan Sepassi7+310-6
2026-04-20 20:18Rewrite PLAN.md to layer the Lisp bootstrap on P1Ryan Sepassi1+79-13
2026-04-20 20:18Add demo.M1 exercising broader P1 op set across three archesRyan Sepassi5+156-24
2026-04-20 19:53Drop aarch64_defs.M1, update README for P1 layoutRyan Sepassi2+23-246
2026-04-20 19:52Add P1 portable pseudo-ISA, port hello.M1 to three archesRyan Sepassi7+411-48
2026-04-20 18:59Initial commit: aarch64 hello-world via M1 + hex2Ryan Sepassi8+585-0