boot2

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

DateCommit messageAuthorFiles+-
2026-05-20 21:34release: rev-free tarball name; mes-libc strtoll + execvp stubsRyan Sepassi6+53-24
2026-05-20 17:51release: per-arch tarball with input + output manifests, validated mint flowRyan Sepassi11+626-22
2026-05-20 16:33scheme1 explorationsRyan Sepassi2+799-0
2026-05-12 01:14README: link to the boot2 writing seriesRyan Sepassi1+12-0
2026-05-07 21:38compare live-bootstrap docRyan Sepassi1+174-0
2026-05-07 18:06Update README, add TOURRyan Sepassi2+420-14
2026-05-07 17:43docs: drop references to retired CC-PUNCHLIST/CC-CONTRACTS/PLAN/TCC-ARM64-ASMRyan Sepassi40+81-101
2026-05-07 03:47headers: consolidate flatten-time includes under bootprep/headersRyan Sepassi25+177-265
2026-05-07 02:46containers: rename .scratch → .busybox; tests' .busybox → .busybox-testRyan Sepassi14+62-62
2026-05-07 01:46libc headers: replace mes-libc/include with hand-rolled cc/includeRyan Sepassi49+474-1880
2026-05-07 00:03mes-libc: collapse to single-file libc.c, drop unused sources/headersRyan Sepassi203+982-9780
2026-05-06 22:31prep: fold musl skip filter into prep-src; calibration is manualRyan Sepassi7+48-148
2026-05-06 22:20reorg PR2: generate run.scm at prep, finish scripts/ → bootprep/ moveRyan Sepassi18+559-516
2026-05-06 22:10reorg PR1: move scripts/ into boot|bootprep|tcc|tests|tools, flatten vendor/upstreamRyan Sepassi229+3518-4490
2026-05-06 21:32B (scripts): unify bootN.sh; per-stage + cumulative timingsRyan Sepassi11+329-335
2026-05-06 20:35cc: widen integer literals exceeding INT_MAX to i64Ryan Sepassi1+9-1
2026-05-06 20:22TU: tests consume bootN outputs directlyRyan Sepassi11+202-368
2026-05-06 20:12B (README): arch×driver matrix, build entry points, tests pointerRyan Sepassi1+76-0
2026-05-06 20:12B (kernel.c polish): name DTB/PVH/cpio magics; document sys_unlinkat ignored argsRyan Sepassi1+41-18
2026-05-06 20:03rm old docsRyan Sepassi4+0-1312
2026-05-06 20:02AX: tests own their Makefile + helpers; fixtures normalized to NNN-Ryan Sepassi418+2151-1975
2026-05-06 19:55AT.2: native PT_NOTE for PVH boot; retire elf-pvh-note shimRyan Sepassi13+250-160
2026-05-06 19:39AT.1 + AT.4: inline mes-libc abtol fix; arch.h primitive set + macrosRyan Sepassi8+111-127
2026-05-06 19:37A4: Makefile drives bootN.sh with path-based depsRyan Sepassi3+322-337
2026-05-06 19:26A0: bootN.sh read sources from canonical build/<arch>/src/ treeRyan Sepassi13+326-281
2026-05-06 19:07A0: prep-src.sh + prep-musl.sh build canonical src tree at build/<arch>/src/Ryan Sepassi2+256-0
2026-05-06 19:07A3: per-driver output trees at build/$ARCH/$DRIVER/bootNRyan Sepassi13+107-122
2026-05-06 18:50A6: hoist arch/driver boilerplate into scripts/lib-arch.shRyan Sepassi10+198-371
2026-05-06 18:33seed-kernel: amd64 pool B must not overlap kernel imageRyan Sepassi1+7-1
2026-05-06 18:03seed-kernel: riscv64 DRIVER=seed end-to-end fixesRyan Sepassi10+74-209
2026-05-06 17:53PLAN.md for audit and polishRyan Sepassi2+410-0
2026-05-06 16:36seed-kernel: amd64 boot6 + DRIVER=seed wiring; bring kernel up to scheme1+tcc3Ryan Sepassi17+483-37
2026-05-06 14:26seed-kernel: boot6 builds amd64 + riscv64; DRIVER=seed extended to riscv64Ryan Sepassi24+782-279
2026-05-06 06:31Implement amd64 and riscv64 seed kernelsRyan Sepassi13+1205-50
2026-05-06 06:02Refactor seed-kernel arch layoutRyan Sepassi10+446-279
2026-05-06 02:12docs: drop OS-TODO + TCC-TODORyan Sepassi5+138-366
2026-05-06 01:55boot6: rename output kernel.elf -> ImageRyan Sepassi13+37-40
2026-05-06 01:49seed-kernel: tcc3 self-hosts the link step; boot6 closes the loopRyan Sepassi18+330-85
2026-05-06 00:44docs/OS-TODO: trim landed tcc3-self-host itemsRyan Sepassi1+20-152
2026-05-06 00:42seed-kernel: tcc3 self-host of kernel.{S,c} now boots under qemuRyan Sepassi21+798-116
2026-05-06 00:19hex2pp: single-pass + fixup list; cut wasted work; wire P1 lintRyan Sepassi3+803-384
2026-05-06 00:11M1pp: cut wasted work in dispatch + macro-body expansionRyan Sepassi5+682-256
2026-05-05 23:50seed-kernel: refactor kernel.S to drop tcc-asm features; refresh OS-TODORyan Sepassi2+252-90
2026-05-05 23:20cc: %cg-fn-set! mutates in place instead of alist-update rebuildRyan Sepassi1+10-1
2026-05-05 23:17boot{0..5}: split stage dirs into in/ + out/Ryan Sepassi8+262-204
2026-05-05 20:03move build/tcc/<TCC_TARGET>/ -> build/<arch>/vendor/tcc/Ryan Sepassi15+107-100
2026-05-05 19:19boot{3,4,5}: --no-cache podman build; drop ./ spawn prefixRyan Sepassi7+42-45
2026-05-05 19:10e2e blk migration, fixup script pathsRyan Sepassi3+3-3
2026-05-05 19:03docs/OS-TODO: collapse landed items; add tcc3 self-host roadmapRyan Sepassi1+84-218
2026-05-05 19:03scheme1/prelude: drop redundant errno negate in sys-spawn probeRyan Sepassi1+4-5
2026-05-05 19:03boot{3,4,5}: unify podman+seed via lib-runscm; drop in-container shellRyan Sepassi9+463-703
2026-05-05 19:03seed-kernel/user: factor sysc into shared syscall6 toplevel-asm thunkRyan Sepassi3+73-58
2026-05-05 19:03boot{0,1,2} + seed-accept: switch seed driver to virtio-blk extractRyan Sepassi5+43-25
2026-05-05 19:03seed-kernel: virtio-blk in/out transport replaces UART tmpfs dumpRyan Sepassi10+1468-435
2026-05-05 18:08boot.sh e2e kernel + podmanRyan Sepassi2+55-2
2026-05-05 17:28seed-kernel: atomic sys_spawn replaces clone+execve; boot5 on seedRyan Sepassi13+691-240
2026-05-05 15:21tcc: strip /work/in[/tcc-lib]/ prefix from STT_FILE under BOOTSTRAPRyan Sepassi5+41-26
2026-05-05 14:48docs/OS-TODO: split landed vs open; add tcc-paths TODORyan Sepassi1+38-11
2026-05-05 10:36seed-kernel: pool-swap on execve + FP enable; HVF acceleration; boot4 acceptanceRyan Sepassi10+221-135
2026-05-05 08:47boot{3,4,5}: DRIVER=seed via lib-seed-runscm + run.scmRyan Sepassi8+585-97
2026-05-05 07:08boot{0,1,2}: extract lib-pipeline DSL; add seed-kernel driver + acceptRyan Sepassi6+565-234
2026-05-05 03:58seed-kernel: close all 11 OS-TODO items + verification gatesRyan Sepassi13+1030-52
2026-05-05 02:54seed-kernel: minimal arm64 OS satisfying docs/OS.md Tier 1Ryan Sepassi7+1078-0
2026-05-05 02:38boot{3,4,5}: split boot3 into tcc0 (boot3) + tcc rebuilds (boot4); musl is now boot5Ryan Sepassi12+778-651
2026-05-05 01:24boot{3,4}: inline tcc <stdarg.h> bridge into flat.c, drop tcc-include/mes-include stagingRyan Sepassi10+120-173
2026-05-05 00:42boot4: vendor riscv64 musl overrides + amd64/riscv64 calibrationRyan Sepassi10+212-3
2026-05-04 23:51boot3: fold va_list_shim.h into tcc <stdarg.h> patchRyan Sepassi8+59-49
2026-05-04 23:34boot{1,2,3}: move catm rebuild from boot1 to boot2Ryan Sepassi4+74-67
2026-05-04 23:24boot4: simplify struct timespec in alltypes.h to silence tcc warningRyan Sepassi4+27-4
2026-05-04 23:16boot{0..4}: kaem-friendly container scripts via materialized run.shRyan Sepassi15+3845-376
2026-05-04 22:17Shrink boot.sh dep surfaceRyan Sepassi26+1904-135
2026-05-04 21:46Move boot3 runtime closure into boot3 outputsRyan Sepassi5+158-102
2026-05-04 21:12Fix LP64 constants for boot4 muslRyan Sepassi5+136-303
2026-05-04 20:58boot4: aarch64 round 2 — tcc store/load VT_CONST|VT_LVAL fix + atomic CASRyan Sepassi9+378-519
2026-05-04 20:09boot4: riscv64 musl patches — 135 -> 3 skips, hello runsRyan Sepassi4+488-16
2026-05-04 19:31boot4: aarch64 musl patches — 153 -> 20 skips, blocked at linkRyan Sepassi3+610-119
2026-05-04 18:47boot4: build musl with boot3 tcc, link a static helloRyan Sepassi7+3712-0
2026-05-04 18:40tcc 0.9.26: phase-2 aarch64 assemblerRyan Sepassi3+1556-215
2026-05-04 18:07tcc 0.9.26: phase-1 aarch64 assemblerRyan Sepassi14+946-37
2026-05-04 18:00OS.md updateRyan Sepassi1+114-75
2026-05-04 17:30boot.shRyan Sepassi1+10-0
2026-05-04 17:29boot3: tcc{0,1,2,3} naming, stage E fixed-point check, auto-flattenRyan Sepassi2+170-71
2026-05-04 16:34boot3 drop host cc for amd64/riscv64Ryan Sepassi4+137-79
2026-05-04 16:19catm.P1ppRyan Sepassi4+235-37
2026-05-04 15:35README: align pseudocode with bootN.sh stagesRyan Sepassi1+17-12
2026-05-04 15:25add standalone bootN.sh entrypoints (scratch + busybox)Ryan Sepassi8+652-56
2026-05-04 15:10docs: document riscv64 u32-narrowing limitation in TCC-TODORyan Sepassi1+58-4
2026-05-04 15:08mes-libc: track `l` modifier in printf so plain %d/%c reads intRyan Sepassi7+199-0
2026-05-04 14:12tcc 3 stage harnessRyan Sepassi4+109-39
2026-05-04 13:38riscv64 and amd64Ryan Sepassi27+702-138
2026-05-04 07:06tcc 0.9.26: read single-byte char constants through uint8_tRyan Sepassi4+27-12
2026-05-04 06:50cc: split aggregate args across two ABI slots on call + receiveRyan Sepassi2+118-11
2026-05-04 06:39tcc-tcc: route tcc-cc / tcc-libc through the second-stage tccRyan Sepassi9+217-27
2026-05-04 05:53tcc-libc: tcc-boot2 builds mes-libc, runs cc-libc fixturesRyan Sepassi6+257-5
2026-05-04 05:38libp1pp: promote mem* to canonical compiler-builtin runtimeRyan Sepassi11+165-106
2026-05-04 04:52cc: deduplicate codegen and parser helpersRyan Sepassi2+279-457
2026-05-04 03:53libp1pp: namespace mem* / str* helpers under libp1pp__Ryan Sepassi3+46-42
2026-05-04 03:51docs: refresh cc.scm map + tcc tracker for current stateRyan Sepassi5+146-570
2026-05-04 03:50cc: apply usual arith conversion to ternary common typeRyan Sepassi3+97-10
2026-05-04 02:28hex2pp.P1: fix BSS arena overlap on >1 MiB inputsRyan Sepassi1+7-3
2026-05-04 01:24cc: update to m1pp+hex2ppRyan Sepassi4+120-111
2026-05-04 01:08Update scheme1 for M1pp hex2pp pipelineRyan Sepassi4+1192-1140
2026-05-03 23:53update to run hex2pp.P1, rm 00-hello which used old hex2Ryan Sepassi8+904-1386
2026-05-03 23:37M1pp: bring M1pp.P1 to parity with M1pp.c; build M1pp from .P1Ryan Sepassi5+54-109
2026-05-03 23:28build: M1pp/hex2pp from .c via alpine-gcc; pass -B 0x600000Ryan Sepassi2+43-26
2026-05-03 23:28backends: wide-immediate fallbacks across all three archesRyan Sepassi6+320-46
2026-05-03 23:28libp1pp: migrate to hex2++ .scope and scoped-loop familyRyan Sepassi12+533-560
2026-05-03 23:27M1pp: drop %bytes builtin; bare strings emit decoded bytesRyan Sepassi25+208-258
2026-05-03 23:27hex2pp: single-input CLI + .ptrsize directive; P1 table pruneRyan Sepassi7+335-302
2026-05-03 21:54M1pp test updatesRyan Sepassi34+408-432
2026-05-03 21:09hex2pp.P1, update M1pp.P1Ryan Sepassi8+4242-539
2026-05-03 18:50M1pp/hex2pp: direct pipeline, drop M0-style quotingRyan Sepassi4+184-249
2026-05-03 18:18hex2ppRyan Sepassi2+920-0
2026-05-02 22:50docs: tcc-cc bug investigation report + gdb harnessRyan Sepassi2+339-0
2026-05-02 22:50p1/aarch64: lower %li(rd, imm) as movz+3xmovkRyan Sepassi1+17-2
2026-05-02 17:28mk: set tcc arch from archRyan Sepassi1+5-2
2026-05-02 16:25cc: clear five cc-ext singletons (138 -> 143)Ryan Sepassi2+123-35
2026-05-02 15:38tests: add cc-ext suite via vendored c-testsuiteRyan Sepassi667+7804-5
2026-05-02 15:37tcc-cc: ship mem* runtime so -nostdlib fixtures linkRyan Sepassi4+81-30
2026-05-02 15:29cc/cg: struct/union `=` must memcpy whole aggregateRyan Sepassi6+212-97
2026-05-02 10:51tcc-patch: const-expr &&/||/?: must short-circuit (C11 §6.6¶3)Ryan Sepassi6+118-50
2026-05-02 03:08merge: file-scope compound literals (C99 §6.5.2.5)Ryan Sepassi7+106-7
2026-05-02 03:08cc/parse: support file-scope compound literals (C99 §6.5.2.5)Ryan Sepassi7+106-7
2026-05-02 02:55merge: cap variadic args at 16 + boundary testsRyan Sepassi5+108-7
2026-05-02 02:55cc/cg: cap variadic incoming args at 16; pin save-area boundary testsRyan Sepassi5+108-7
2026-05-02 02:49merge: brace elision in nested aggregate initializers (rebased on current main)Ryan Sepassi7+179-37
2026-05-02 02:44cc/parse: support brace elision in nested aggregate initializers (C99 §6.7.8 ¶22)Ryan Sepassi7+179-37
2026-05-02 02:40merge: block-scope inferred-length arrays (rebased on current main)Ryan Sepassi5+144-1
2026-05-02 02:39cc/parse: infer length for block-scope arrays; reserve frame slot before initRyan Sepassi5+144-1
2026-05-02 02:12Revert "merge: block-scope inferred-length arrays"Ryan Sepassi5+10-147
2026-05-02 02:12Revert "cc/parse: support brace elision in nested aggregate initializers"Ryan Sepassi3+0-218
2026-05-02 00:49cc/cg: cg-arith-conv casts to common type, not relabel-onlyRyan Sepassi1+12-2
2026-05-02 00:45cc/cg: promote narrow integers to (signed) intRyan Sepassi1+9-5
2026-05-02 01:49merge: codegen fixes (4 bugs: spill canon, signed shr, narrow promote, arith conv)Ryan Sepassi12+148-0
2026-05-02 01:49tests/cc-pp: pin #if short-circuit and /0 diagnosticRyan Sepassi8+23-0
2026-05-02 01:48tests/cc-pp: pin arg prescan stringize and paste casesRyan Sepassi4+12-0
2026-05-02 01:48merge: lex/pp bug fixes (4 bugs)Ryan Sepassi9+71-25
2026-05-02 00:31cc/parse: support brace elision in nested aggregate initializersRyan Sepassi3+218-0
2026-05-02 01:47merge: block-scope inferred-length arraysRyan Sepassi5+147-10
2026-05-02 00:49cc/cg: cg-arith-conv casts to common type, not relabel-onlyRyan Sepassi3+35-2
2026-05-02 00:49cc/parse: infer length for block-scope arrays from initializerRyan Sepassi5+147-10
2026-05-02 00:45cc/cg: promote narrow integers to (signed) intRyan Sepassi3+38-5
2026-05-02 00:37cc/pp: track #else seen on cond-stack; reject #elif/#else after #elseRyan Sepassi3+35-13
2026-05-02 00:37cc/cg: signed shift right uses lhs signedness onlyRyan Sepassi3+48-4
2026-05-02 00:32cc/pp: builtin macros emit at original loc to avoid double #line shiftRyan Sepassi3+22-11
2026-05-02 00:27cc/cg: canonicalize narrow-int spills in %cg-spill-regRyan Sepassi8+96-3
2026-05-02 00:23cc/lex: line-leading %: digraph emits HASH for directivesRyan Sepassi3+10-1
2026-05-02 00:19cc/pp: stringize escapes control bytes in char/string literalsRyan Sepassi3+7-0
2026-05-02 00:09cc: fix nine bugs across lex/pp/cg/parse/typesRyan Sepassi18+419-42
2026-05-01 22:20merge: const-expr short-circuit && and ||Ryan Sepassi3+83-6
2026-05-01 22:19merge: lexer char-literal type fixRyan Sepassi3+32-1
2026-05-01 22:18tests/cc: pin macro arg prescan (M(M(1)))Ryan Sepassi2+19-0
2026-05-01 22:14cc: short-circuit && and || in constant-expression evaluatorRyan Sepassi3+74-6
2026-05-01 22:10cc: codegen: signed >> unsigned must use arithmetic shiftRyan Sepassi2+24-0
2026-05-01 22:07cc: const-expr: promote unsigned sub-int types to signed intRyan Sepassi3+85-18
2026-05-01 22:07cc: type integer character constants as int (§6.4.4.4)Ryan Sepassi3+32-1
2026-05-01 21:55cc: add cc.scm.md code mapRyan Sepassi1+173-0
2026-05-01 21:55cc: deduplicate and unify constant-expression evaluatorRyan Sepassi1+82-221
2026-05-01 18:21cc: tidyRyan Sepassi1+32-56
2026-05-01 01:26scheme1: replace advance_walk(offset) with advance_walk(name)Ryan Sepassi1+46-55
2026-05-01 00:43scheme1: tidyRyan Sepassi1+807-982
2026-04-30 18:01p1pp: extend cmpset macro setRyan Sepassi4+85-10
2026-04-30 17:52P1 arch files: rerun gen pyRyan Sepassi3+0-66
2026-04-30 17:38pokem rmRyan Sepassi3+7-278
2026-04-30 17:13tcc-todo updateRyan Sepassi1+35-12
2026-04-30 16:55cc: fix pp cond stack bugRyan Sepassi3+28-0
2026-04-30 16:50tests/cc-pp: expand to cover stdarg shapeRyan Sepassi6+105-0
2026-04-30 16:30p1pp: expand libp1pp and use from cc.scmRyan Sepassi18+979-119
2026-04-30 15:42tcc-cc: rely on libc-flat as the gcc-built sanity referenceRyan Sepassi2+18-50
2026-04-30 15:31docs: TCC-TODO update — gcc-flat 130/22, gcc-libc-flat 152/0, cc.scm-tcc 13/139Ryan Sepassi1+61-22
2026-04-30 15:25tcc-cc: full pass under gcc-built libc-flat tcc (152/0)Ryan Sepassi24+303-59
2026-04-30 13:53tcc todo updateRyan Sepassi1+181-343
2026-04-30 13:53tests/cc/: green host compiled cc suiteRyan Sepassi2+14-27
2026-04-30 13:29Add tcc-cc test suiteRyan Sepassi6+123-17
2026-04-30 07:02riscv64: support large ADDI immediates in p1_addi and p1_enterRyan Sepassi1+19-3
2026-04-30 06:23docs: tcc-boot2 now builds and runs; update TCC-TODO statusRyan Sepassi1+34-18
2026-04-30 06:22cc: fix for-loop continue to execute the step expressionRyan Sepassi3+60-30
2026-04-30 06:22entry-libc: save argc/argv across __libc_initRyan Sepassi1+7-3
2026-04-30 06:22aarch64: support large ADD/SUB immediates in p1_addi and p1_enterRyan Sepassi3+68-4
2026-04-30 03:49Make trace macro preserve registersRyan Sepassi3+103-46
2026-04-30 03:22vendor: drop ../ reaches into sibling reposRyan Sepassi9+77-24
2026-04-30 03:21tcc-gcc: stock-gcc sanity-check harnessRyan Sepassi5+181-1
2026-04-30 03:21va_list: route through __builtin_va_list across cc.scm + mes-libcRyan Sepassi6+62-133
2026-04-30 03:21rename: lispcc → boot2 across the treeRyan Sepassi17+299-299
2026-04-30 01:46p1pp: tracepoint machineryRyan Sepassi5+396-51
2026-04-30 01:11mk: more verbose build logsRyan Sepassi4+88-25
2026-04-30 01:09m1-symbols.py annotate disassembly, add :_text_end to m1pp+schemeRyan Sepassi3+185-0
2026-04-30 00:55regularize build/ dirRyan Sepassi20+422-258
2026-04-29 23:42scripts/disasm-elf.shRyan Sepassi1+75-0
2026-04-29 23:39P1pp: fix loop scoping tags, were global, now are localRyan Sepassi5+135-40
2026-04-29 23:31tests/cc: tentative bss sizingRyan Sepassi2+77-0
2026-04-29 20:05tests/cc-libc: cover all P1pp syscalls + complex libc layersRyan Sepassi18+303-0
2026-04-29 19:51cc: stdarg patch to builtinsRyan Sepassi4+31-22
2026-04-29 19:39tests/cc: extended vararg testRyan Sepassi2+116-0
2026-04-29 19:12mes-libc: define __std{in,out,err}Ryan Sepassi1+12-0
2026-04-29 18:30libc-flatten: silence host preprocessor warningsRyan Sepassi5+15-1
2026-04-29 18:25cc.scm: --lib mode for catm-style libc linkingRyan Sepassi11+279-240
2026-04-29 18:04cc-cg: fix up test to use proper symbol names for externRyan Sepassi1+2-2
2026-04-29 18:03P1: new syscalls lseek, brk, unlinkatRyan Sepassi7+191-0
2026-04-29 18:02tests/cc-libcRyan Sepassi23+1006-214
2026-04-29 18:02vendor/mes-libcRyan Sepassi213+12029-0
2026-04-29 16:03docs: libc plan — port mes libc, build libc.a + libtcc1.a with tcc-boot2Ryan Sepassi2+404-0
2026-04-29 02:08docs/LIBC.txt: split symbols into pure-code vs syscall-usingRyan Sepassi1+48-26
2026-04-29 01:43tcc-boot2: trace pipeline phases and inventory unresolved symbolsRyan Sepassi4+117-1
2026-04-29 01:43stage1-flatten: vendor local simple-patches for libc stubsRyan Sepassi21+213-0
2026-04-29 01:42cc: follow C linkage rules for external/internal symbolsRyan Sepassi5+161-22
2026-04-29 00:51cc: quoted-hex data emission and signed→unsigned cast canonicalisationRyan Sepassi5+251-20
2026-04-29 00:50tcc-boot2: end-to-end harness from tcc.flat.c to ELFRyan Sepassi3+151-65
2026-04-29 00:36M1pp: bump caps, cleanup duplicationRyan Sepassi2+171-177
2026-04-28 22:49cc: offsetof support in const exprsRyan Sepassi3+186-5
2026-04-28 22:35cc: stream static array initializers past asm_instrs scratch wallRyan Sepassi2+203-74
2026-04-28 21:48scheme1: prelude wrappers for the two heap-arena patternsRyan Sepassi5+259-100
2026-04-28 21:33cc: clear four tcc.flat.c blockers, hit asm_instrs scratch wallRyan Sepassi6+326-56
2026-04-28 20:25cc: parse-and-discard GNU __attribute__ specsRyan Sepassi2+104-73
2026-04-28 20:13cc: replace per-type promote walkers with deep-copyRyan Sepassi2+51-407
2026-04-28 20:06Document deep-copy promotion statusRyan Sepassi1+120-0
2026-04-28 20:01Keep scheme1 global metadata on main heapRyan Sepassi5+125-10
2026-04-28 19:27scheme1: record introspection, deep-copyRyan Sepassi6+479-0
2026-04-28 19:27cloc add prelude.scmRyan Sepassi1+8-6
2026-04-28 18:42rm impl plan docRyan Sepassi1+0-356
2026-04-28 18:41scheme1: add list traversal primitivesRyan Sepassi6+190-27
2026-04-28 18:08cc: CC-SCRATCH Phase 3 — parse-decl-or-fn boundaryRyan Sepassi2+402-72
2026-04-28 17:56scheme1: hex number<->string and format, rename eof-object to eofRyan Sepassi7+251-53
2026-04-28 17:47SCHEME1.mdRyan Sepassi3+263-225
2026-04-28 16:41scheme1: drop unused special forms (unless, define-values, case-lambda, letrec/letrec*, quasiquote)Ryan Sepassi15+13-739
2026-04-28 16:32scheme1: 8-aligned stringsRyan Sepassi1+31-45
2026-04-28 16:25scheme1: CC-SCRATCH Phase 2 — two-heap primitivesRyan Sepassi3+224-36
2026-04-28 15:53cc: CC-SCRATCH Phase 1 pre-refactorsRyan Sepassi1+161-114
2026-04-28 15:00docs: CC-SCRATCH plan — bound parse heap via scratch arenaRyan Sepassi1+356-0
2026-04-28 07:21cc: redecl compatibility, update cc docsRyan Sepassi13+284-775
2026-04-28 04:01cc streaming architectureRyan Sepassi1+434-204
2026-04-28 02:57docs: TCC-TODO punchlist + CC-STREAM planRyan Sepassi2+433-0
2026-04-28 02:56scheme1: bump HEAP_CAP_BYTES 64 -> 256 MiB, p_memsz 128 -> 512 MBRyan Sepassi4+6-6
2026-04-28 02:56cc: lex per-token heap-mark/rewind + scratch bufferRyan Sepassi1+200-92
2026-04-28 01:58cc: float/double parseRyan Sepassi4+94-10
2026-04-28 00:14scheme1: quote raw-byte padding for riscv64 M0Ryan Sepassi1+126-125
2026-04-27 23:34scheme1: bump READBUF_CAP_BYTES 256 KiB -> 1 MiBRyan Sepassi1+2-2
2026-04-27 23:34cc: use scheme1 multiple-values protocol for tuple returnsRyan Sepassi2+140-157
2026-04-27 21:37scheme1: multiple-values protocolRyan Sepassi13+488-3
2026-04-27 21:03docs rm oldRyan Sepassi6+0-3288
2026-04-27 21:02scheme1: quasiquote, variadic primsRyan Sepassi8+461-56
2026-04-27 21:16cc: struct return — indirect-result (sret) convention (A2)Ryan Sepassi4+197-124
2026-04-27 20:43cc: struct return — one-word and two-word direct conventions (A1)Ryan Sepassi6+283-18
2026-04-27 20:39cc: compound literals (Stream B)Ryan Sepassi1+67-9
2026-04-27 20:38cc: integer constant expressions (Stream C)Ryan Sepassi1+343-7
2026-04-27 20:38cc: union field offsets + sizeof no-emit (Stream D)Ryan Sepassi3+118-31
2026-04-27 20:42readme updateRyan Sepassi1+5-5
2026-04-27 20:24update readmeRyan Sepassi1+2-1
2026-04-27 20:23docs: cc parallel work planRyan Sepassi1+233-0
2026-04-27 20:12scheme1: single-arm if, do, case-lambda, letrec*Ryan Sepassi7+428-49
2026-04-27 19:37cc: combine files into 1Ryan Sepassi12+5257-5259
2026-04-27 19:28docs: r7rs todoRyan Sepassi1+124-0
2026-04-27 19:28scheme1 prelude: various extensionsRyan Sepassi1+308-26
2026-04-27 19:27tests/scheme1: prelude tests, do/case/if tests, 3-digit prefixRyan Sepassi208+352-8
2026-04-27 19:04tests/cc: add compound-literal and const-expr fixturesRyan Sepassi4+252-0
2026-04-27 18:54cc/cg: use pmatch record patterns for opnd/sym dispatchRyan Sepassi1+95-106
2026-04-27 18:47cloc: add cc scm filesRyan Sepassi1+1-0
2026-04-27 18:41cc/parse: use pmatch record patterns for token dispatchRyan Sepassi1+260-285
2026-04-27 18:41scheme1: pmatch record-destructuring patternsRyan Sepassi3+289-6
2026-04-27 18:34tests/cc/: 3-digit prefix renameRyan Sepassi238+0-0
2026-04-27 18:24cc: add 35 e2e tests probing parse/codegen gaps from CC.mdRyan Sepassi70+749-0
2026-04-27 17:57scheme1: when, unless, caseRyan Sepassi7+351-112
2026-04-27 17:46cc: merge parse+e2e tests into tests/cc/Ryan Sepassi212+118-585
2026-04-27 17:35cc: fix three kitchen-sink-blocking bugs; split into per-feature e2e fixturesRyan Sepassi66+1103-36
2026-04-27 17:23scripts: collapse test runner to one container per archRyan Sepassi3+512-507
2026-04-27 16:47cc/util: round buf caps to powers of twoRyan Sepassi1+9-11
2026-04-27 16:46scheme1: split string semantics from raw bytevectorsRyan Sepassi3+252-111
2026-04-27 16:02m1pp: increase text capRyan Sepassi2+10-10
2026-04-27 16:01cc: pre-allocate global outputs, use mark+reset per fnRyan Sepassi4+214-58
2026-04-27 15:32cc: use mark+reset in lex+ppRyan Sepassi2+318-251
2026-04-27 15:01scheme1: add (heap-mark) and (heap-rewind!) for arena-style reclamationRyan Sepassi3+114-3
2026-04-27 15:01cc/lex: cut heap allocations via fast-path peek + per-byte bv elision + punct bucketsRyan Sepassi1+260-92
2026-04-27 11:03cc: add debug-log facility + per-phase heap-usage instrumentationRyan Sepassi2+68-11
2026-04-27 11:01scheme1: add (heap-usage) primitive returning bytes consumedRyan Sepassi1+15-0
2026-04-27 10:43scheme1: bump heap to 64 MiB, ELF p_memsz to 128 MiB; reorder arenasRyan Sepassi6+351-10
2026-04-27 10:10cc/parse: skip useless spill on void-returning callsRyan Sepassi3+36-2
2026-04-27 10:04cc/cg: drop vestigial cg-loop-end no-opRyan Sepassi5+48-58
2026-04-27 09:49cc/cg: &arr yields T(*)[N] per strict CRyan Sepassi3+25-6
2026-04-27 09:29cc/cg: variadic incoming-arg window covers indices 0..15Ryan Sepassi5+72-29
2026-04-27 09:17cc tests: lock in void* byte-arithmetic semanticsRyan Sepassi2+18-0
2026-04-27 08:08cc/parse: lvalue-conversion runs for every cast (§L.1)Ryan Sepassi4+44-10
2026-04-27 06:53Merge Agent 3: §E + §I + §L.3 (initializers + storage + fn-ptr table)Ryan Sepassi40+958-75
2026-04-27 06:50Merge Agent 4: §F + §G + §J + §K.2-6 (ctrl/varargs/envelope)Ryan Sepassi44+918-99
2026-04-27 06:49Merge Agent 2: §D + §L.2 (aggregates + array-param decay)Ryan Sepassi27+563-56
2026-04-27 06:48Merge Agent 1: §B + §C + §H + §K.1 (lvalue/sizeof/conditionals/comma)Ryan Sepassi42+593-103
2026-04-27 06:46docs: mark §F.1-4, §G.1-2, §J.1-3, §K.2-6 done in punchlistRyan Sepassi1+85-74
2026-04-27 06:26cc/parse: drop unused parse-init-list backwards-compat aliasRyan Sepassi1+0-2
2026-04-27 06:16cc/parse: __builtin_va_{start,arg,end} + bundled stdarg.h (§G.2)Ryan Sepassi4+113-8
2026-04-27 06:09cc/parse: §I block-static mangling stores in sym-nameRyan Sepassi4+81-54
2026-04-27 06:02cc/cg: variadic receive — cg-fn-begin/v + cg-va-{start,arg,end} (§G.2)Ryan Sepassi3+208-5
2026-04-27 05:56cc/cg+parse: array of fn pointers initialized with names (§L.3)Ryan Sepassi4+66-0
2026-04-27 05:53cc/cg+parse: block-scope static lives in .data, not on the stack (§I)Ryan Sepassi4+59-0
2026-04-27 05:51cc tests: pointer comparisons use unsigned ltu (§K.6)Ryan Sepassi4+40-0
2026-04-27 05:50cc/parse: local struct initializer (§E.8)Ryan Sepassi2+12-0
2026-04-27 05:49cc/parse: local array initializer (§E.7)Ryan Sepassi3+14-2
2026-04-27 05:49cc/parse: T[] in param position decays to T* (§L.2)Ryan Sepassi3+34-6
2026-04-27 05:48cc tests: void* <-> T* implicit conversion fixture (§K.4)Ryan Sepassi2+11-0
2026-04-27 05:47cc/parse: struct passed by pointer to function (§D.7)Ryan Sepassi3+24-3
2026-04-27 05:47cc tests: enum constant in expressions (§K.3)Ryan Sepassi2+7-0
2026-04-27 05:46docs/CC-PUNCHLIST: mark §B + §C + §H + §K.1 as greenRyan Sepassi1+78-70
2026-04-27 05:46cc/parse: compound-assign + ++/-- + sizeof + ternary + && + || + comma (§B, §C, §H, §K.1)Ryan Sepassi23+139-23
2026-04-27 05:46cc/parse: multi-dim arrays via right-to-left suffix wrap (§D.6)Ryan Sepassi4+32-5
2026-04-27 05:46cc tests: function-pointer call (§K.2)Ryan Sepassi4+50-0
2026-04-27 05:46cc/cg: cg-dup, cg-postinc/postdec, ptr-aware arith-conv, cg-ifelse-merge (§B, §H)Ryan Sepassi18+376-10
2026-04-27 05:45cc/cg+parse: struct global designated init (§E.6)Ryan Sepassi6+59-15
2026-04-27 05:44cc tests: multi-fn TU with forward reference (§J.3)Ryan Sepassi2+12-0
2026-04-27 05:43cc/cg+parse: int main() falling off end returns 0 (§J.2)Ryan Sepassi3+20-2
2026-04-27 05:42cc/parse: array element access at non-zero index fixture (§D.5)Ryan Sepassi3+22-7
2026-04-27 05:41cc/cg: array element access at non-zero index (§D.5)Ryan Sepassi2+56-0
2026-04-27 05:40cc/cg+parse: struct global positional init (§E.5)Ryan Sepassi4+49-0
2026-04-27 05:39cc/parse: per-arg cast-or-promote in parse-call-args (§G.1, §K.5)Ryan Sepassi5+84-7
2026-04-27 05:39cc/parse: arrow + nested struct access fixtures (§D.3 §D.4)Ryan Sepassi5+50-7
2026-04-27 05:39cc tests: variadic call site exercises cg-promote per arg (§G.1)Ryan Sepassi2+58-0
2026-04-27 05:39cc/cg: lock in p->x arrow access via cg fixture (§D.3)Ryan Sepassi2+60-0
2026-04-27 05:39cc/cg+parse: char[] from string-literal initializer (§E.4)Ryan Sepassi4+33-0
2026-04-27 05:37cc/cg+parse: array global from element list (§E.3)Ryan Sepassi5+52-2
2026-04-27 05:36cc/parse: lock in struct member store fixture (§D.2)Ryan Sepassi3+22-4
2026-04-27 05:36cc/cg: lock in struct member store fixture (§D.2)Ryan Sepassi2+57-0
2026-04-27 05:34cc/parse: dot/arrow use cg-push-field (§D.1)Ryan Sepassi4+42-18
2026-04-27 05:34cc/cg: add cg-push-field + array decay (§D.1)Ryan Sepassi3+159-1
2026-04-27 05:33cc/parse: real goto + labelled-stmt via cg-goto/cg-emit-label (§F.4)Ryan Sepassi3+17-3
2026-04-27 05:31cc/cg: add cg-emit-label / cg-goto for goto+labels (§F.4)Ryan Sepassi3+73-2
2026-04-27 05:30cc/cg+parse: address initializer for global pointer (§E.2)Ryan Sepassi4+33-0
2026-04-27 05:28cc/parse: real init-list parser; scalar global init (§E.1)Ryan Sepassi3+467-20
2026-04-27 05:26cc tests: switch / case / default with fall-through (§F.3)Ryan Sepassi4+88-0
2026-04-27 05:25cc/cg: structured init for cg-emit-global; scalar global init (§E.1)Ryan Sepassi4+63-6
2026-04-27 05:25cc tests: for (int i = 0; cond; step) fixture (§F.2)Ryan Sepassi2+7-0
2026-04-27 05:24cc tests: do { } while (cond) fixtures (§F.1)Ryan Sepassi4+47-0
2026-04-27 04:55cc tests: lock in integer promotion preserves sign (§A.6)Ryan Sepassi5+48-6
2026-04-27 04:52cc tests: lock in unsigned narrowing zero-extends (§A.5)Ryan Sepassi5+34-4
2026-04-27 04:50cc/cg: signed narrowing sign-extends on re-widen (§A.4)Ryan Sepassi6+43-5
2026-04-27 04:46cc/cg: width-aware 32-bit load/store, generalised N-byte helpers (§A.3)Ryan Sepassi6+125-47
2026-04-27 04:41cc/cg: width-aware 16-bit load/store via byte decomposition (§A.2)Ryan Sepassi6+124-35
2026-04-27 04:37cc/cg: width-aware byte load/store for char lvals (§A.1)Ryan Sepassi6+117-15
2026-04-27 04:12cc: add CC-PUNCHLIST.md — TDD checklist of red codegen capabilitiesRyan Sepassi2+398-0
2026-04-27 03:53cc tests: switch cc-cg/cc-parse to runtime-validating fixturesRyan Sepassi84+402-793
2026-04-27 02:07cc/pp: adjacent-string concat, more built-ins, stringize escapes, empty argsRyan Sepassi16+127-9
2026-04-26 23:31P1pp: add %fn2 / %stl / %ldl + init_arenas; adopt in scheme1Ryan Sepassi2+953-938
2026-04-26 23:07M1pp: %frame %local supportRyan Sepassi11+1102-34
2026-04-26 22:14scheme1: adopt libp1pp global/array helpers; add pair + heap field macrosRyan Sepassi1+1231-1291
2026-04-26 22:14P1pp: add ld/st/lda_global and ld/st/lda_array helpersRyan Sepassi1+845-775
2026-04-26 22:14m1pp: bump MAX_MACROS 512 -> 1024Ryan Sepassi2+3-3
2026-04-26 22:14make: add P1pp.P1pp to cloc targetRyan Sepassi1+1-0
2026-04-26 23:34scripts: rework tcc bootstrap into 3 stages + add live-bootstrap diagRyan Sepassi7+1098-596
2026-04-26 14:55docs: TCC.md — pipeline from tarball to tcc-boot0-mes + open bugsRyan Sepassi1+337-0
2026-04-26 14:46scripts/build-tcc-real.sh: build mes libc with tcc-host, link tcc-boot0-mesRyan Sepassi1+161-84
2026-04-26 11:11scripts: build-tcc-real.sh — assemble real tcc-0.9.26 from our chainRyan Sepassi1+111-0
2026-04-26 10:33scripts: build-tcc-source.sh — flatten tcc-0.9.26 and validate self-hostRyan Sepassi1+214-0
2026-04-26 10:15cc: switch cc-pp + cc-parse to real pipeline; uncover & fix lex/pp bugRyan Sepassi137+686-1317
2026-04-26 09:39make: wire cc-* suites into run-tests.sh + add cc-e2eRyan Sepassi11+239-111
2026-04-26 09:21cc: phase-1 milestone — int main(int argc, char **argv) compiles e2eRyan Sepassi22+89-34
2026-04-26 09:04cc: resolve cg/parse contract drift; bump scheme1 readbuf to 256KRyan Sepassi10+145-75
2026-04-26 05:50cc: implement lex / pp / cg / parse modulesRyan Sepassi159+5215-185
2026-04-26 05:15cc: util.scm — implement TBD helpers; add 14 test fixturesRyan Sepassi30+402-21
2026-04-26 04:58cc: scaffold compiler tree and test dirsRyan Sepassi19+661-0
2026-04-26 04:50docs: add C compiler spec — CC.md, CC-INTERNALS.md, CC-CONTRACTS.mdRyan Sepassi3+1705-0
2026-04-26 00:25scheme1: implement pmatch special form per LISP-PMATCH.mdRyan Sepassi17+524-0
2026-04-26 00:15make: cloc covers P1 tables + vendor seeds, ARCH= narrows scopeRyan Sepassi1+16-3
2026-04-26 00:07make: add cloc target for core source line countsRyan Sepassi1+15-1
2026-04-26 00:04docs: add LISP-PMATCH spec and concrete pmatch impl sketchRyan Sepassi2+527-18
2026-04-25 23:57scheme1: forbid internal define; eval_body rejects with clear errorRyan Sepassi5+40-5
2026-04-25 23:30scheme1: tighten 45-shell-spawn and 67-read-line to prelude-onlyRyan Sepassi2+7-18
2026-04-25 23:26docs: drop scheme-shell-todo audit (gaps closed)Ryan Sepassi1+0-214
2026-04-25 23:26scheme1: rework shell + file-IO test coverage to prelude API onlyRyan Sepassi16+137-66
2026-04-25 23:26scheme1: tighten cond no-else, let* shadow, letrec recursion testsRyan Sepassi5+28-8
2026-04-25 23:26scheme1: 16 MB heap arena, ELF p_memsz to 32 MBRyan Sepassi4+10-8
2026-04-25 23:16scheme1: set!, cond => arrow, number/string radix-arg surfaceRyan Sepassi3+178-24
2026-04-25 23:15M1pp: bump TEXT_CAP 512KB -> 640KB, log text/output usage in native buildRyan Sepassi2+8-7
2026-04-25 23:15argv testRyan Sepassi2+7-0
2026-04-25 22:58scheme1: tests for set! and number/string radix-arg surfaceRyan Sepassi3+62-0
2026-04-25 22:34scheme1: tests for hex string escapes, signed-int literals, and strict readerRyan Sepassi8+54-1
2026-04-25 22:31scheme1: add symbol?, #u8(...) literal, number?/bytevector? aliasesRyan Sepassi5+310-20
2026-04-25 22:06scheme1: match record api to r7rsRyan Sepassi2+13-168
2026-04-25 21:51scheme1: fix parse_decRyan Sepassi1+39-29
2026-04-25 21:42M1pp: track source line numbers and report them in error messagesRyan Sepassi1+38-11
2026-04-25 21:35scheme1: string<->sym, bytevector-append, type preds, number<->str, quot/rem, bit-xor/not, set-car/cdr!Ryan Sepassi2+413-142
2026-04-25 21:33scheme1: add min, max, modulo to the preludeRyan Sepassi1+14-0
2026-04-25 21:32scheme1: red-green tests for R7RS record API surfaceRyan Sepassi6+36-8
2026-04-25 21:32scheme1: pending tests for type predicates, quot/rem/mod, min/max/abs, bit-xor/not, num<->strRyan Sepassi10+140-0
2026-04-25 21:30scheme1: tests for string->symbol, symbol->string, bytevector-appendRyan Sepassi6+75-16
2026-04-25 21:13scheme1: string? / set-car! / set-cdr! / length / list-ref primitivesRyan Sepassi10+156-7
2026-04-25 20:58scheme1: > primitive, positive? prelude entry, comparison test coverageRyan Sepassi5+50-42
2026-04-25 20:53scheme1: equal?, bytevector=?; shell+fileio e2e testRyan Sepassi11+409-67
2026-04-25 20:39scheme1: string literal, char literalRyan Sepassi11+327-3
2026-04-25 20:38scheme1: display, write, format, error primitivesRyan Sepassi11+699-21
2026-04-25 20:28scheme1: and/or special forms; drop embedded preludeRyan Sepassi6+130-145
2026-04-25 20:24scheme1: lift prelude to scheme1/prelude.scm, catm at run timeRyan Sepassi3+375-4
2026-04-25 20:08scheme1: runtime errors, bytevector bounds, helper macrosRyan Sepassi6+1039-749
2026-04-25 20:02Make M1pp directives whitespace-insensitive in M1pp.cRyan Sepassi1+139-75
2026-04-25 19:33M1pp whitespace testsRyan Sepassi18+50-8
2026-04-25 19:07rm old lisp code and scriptRyan Sepassi60+0-1067
2026-04-25 17:25Audit scheme1: document deviations and known issuesRyan Sepassi1+324-12
2026-04-25 17:13Port shell.scm helpers into the embedded preludeRyan Sepassi5+85-0
2026-04-25 16:49Add scheme1 embedded preludeRyan Sepassi3+96-4
2026-04-25 16:22Add scheme1 syscall primitives, sys-argv, and EOF immediateRyan Sepassi9+404-7
2026-04-25 16:10Add scheme1 define-record-type and parameterized PRIM data slotRyan Sepassi9+430-5
2026-04-25 15:58Add scheme1 bytevectors with dynamic-array semanticsRyan Sepassi14+359-2
2026-04-25 15:38Add scheme1 arith and list primitivesRyan Sepassi13+343-33
2026-04-25 15:32Add scheme1 cond, begin, and the let familyRyan Sepassi15+493-49
2026-04-25 15:17Add variadic .-tail to scheme1 lambda/defineRyan Sepassi9+74-3
2026-04-25 15:14Add scheme1 top-level define and read-eval loopRyan Sepassi7+101-5
2026-04-25 14:12Add scheme1 reader: `;` comments, `'datum` quote, `#xNN` hex literalsRyan Sepassi8+139-1
2026-04-25 13:48Add scheme1 lambda, closures, and alist environmentsRyan Sepassi7+173-2
2026-04-25 13:40Use %tail / %tailr at every scheme1 tail positionRyan Sepassi1+15-21
2026-04-25 13:32Add scheme1 `if` special form and #t/#f reader literalsRyan Sepassi5+109-1
2026-04-25 13:13Heap-allocate PRIM objects so the HEAP tag bits land correctlyRyan Sepassi1+25-11
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
2026-05-04 16:34boot3 drop host cc for amd64/riscv64Ryan Sepassi3+93-62
2026-05-04 16:19catm.P1ppRyan Sepassi4+235-37
2026-05-04 15:35README: align pseudocode with bootN.sh stagesRyan Sepassi1+17-12
2026-05-04 15:25add standalone bootN.sh entrypoints (scratch + busybox)Ryan Sepassi8+652-56
2026-05-04 15:10docs: document riscv64 u32-narrowing limitation in TCC-TODORyan Sepassi1+58-4
2026-05-04 15:08mes-libc: track `l` modifier in printf so plain %d/%c reads intRyan Sepassi7+199-0
2026-05-04 14:12tcc 3 stage harnessRyan Sepassi4+109-39
2026-05-04 13:38riscv64 and amd64Ryan Sepassi27+702-138
2026-05-04 07:06tcc 0.9.26: read single-byte char constants through uint8_tRyan Sepassi4+27-12
2026-05-04 06:50cc: split aggregate args across two ABI slots on call + receiveRyan Sepassi2+118-11
2026-05-04 06:39tcc-tcc: route tcc-cc / tcc-libc through the second-stage tccRyan Sepassi9+217-27
2026-05-04 05:53tcc-libc: tcc-boot2 builds mes-libc, runs cc-libc fixturesRyan Sepassi6+257-5
2026-05-04 05:38libp1pp: promote mem* to canonical compiler-builtin runtimeRyan Sepassi11+165-106
2026-05-04 04:52cc: deduplicate codegen and parser helpersRyan Sepassi2+279-457
2026-05-04 03:53libp1pp: namespace mem* / str* helpers under libp1pp__Ryan Sepassi3+46-42
2026-05-04 03:51docs: refresh cc.scm map + tcc tracker for current stateRyan Sepassi5+146-570
2026-05-04 03:50cc: apply usual arith conversion to ternary common typeRyan Sepassi3+97-10
2026-05-04 02:28hex2pp.P1: fix BSS arena overlap on >1 MiB inputsRyan Sepassi1+7-3
2026-05-04 01:24cc: update to m1pp+hex2ppRyan Sepassi4+120-111
2026-05-04 01:08Update scheme1 for M1pp hex2pp pipelineRyan Sepassi4+1192-1140
2026-05-03 23:53update to run hex2pp.P1, rm 00-hello which used old hex2Ryan Sepassi8+904-1386
2026-05-03 23:37M1pp: bring M1pp.P1 to parity with M1pp.c; build M1pp from .P1Ryan Sepassi5+54-109
2026-05-03 23:28build: M1pp/hex2pp from .c via alpine-gcc; pass -B 0x600000Ryan Sepassi2+43-26
2026-05-03 23:28backends: wide-immediate fallbacks across all three archesRyan Sepassi6+320-46
2026-05-03 23:28libp1pp: migrate to hex2++ .scope and scoped-loop familyRyan Sepassi12+533-560
2026-05-03 23:27M1pp: drop %bytes builtin; bare strings emit decoded bytesRyan Sepassi25+208-258
2026-05-03 23:27hex2pp: single-input CLI + .ptrsize directive; P1 table pruneRyan Sepassi7+335-302
2026-05-03 21:54M1pp test updatesRyan Sepassi34+408-432
2026-05-03 21:09hex2pp.P1, update M1pp.P1Ryan Sepassi8+4242-539
2026-05-03 18:50M1pp/hex2pp: direct pipeline, drop M0-style quotingRyan Sepassi4+184-249
2026-05-03 18:18hex2ppRyan Sepassi2+920-0
2026-05-02 22:50docs: tcc-cc bug investigation report + gdb harnessRyan Sepassi2+339-0
2026-05-02 22:50p1/aarch64: lower %li(rd, imm) as movz+3xmovkRyan Sepassi1+17-2
2026-05-02 17:28mk: set tcc arch from archRyan Sepassi1+5-2
2026-05-02 16:25cc: clear five cc-ext singletons (138 -> 143)Ryan Sepassi2+123-35
2026-05-02 15:38tests: add cc-ext suite via vendored c-testsuiteRyan Sepassi667+7804-5
2026-05-02 15:37tcc-cc: ship mem* runtime so -nostdlib fixtures linkRyan Sepassi4+81-30
2026-05-02 15:29cc/cg: struct/union `=` must memcpy whole aggregateRyan Sepassi6+212-97
2026-05-02 10:51tcc-patch: const-expr &&/||/?: must short-circuit (C11 §6.6¶3)Ryan Sepassi6+118-50
2026-05-02 03:08merge: file-scope compound literals (C99 §6.5.2.5)Ryan Sepassi7+106-7
2026-05-02 03:08cc/parse: support file-scope compound literals (C99 §6.5.2.5)Ryan Sepassi7+106-7
2026-05-02 02:55merge: cap variadic args at 16 + boundary testsRyan Sepassi5+108-7
2026-05-02 02:55cc/cg: cap variadic incoming args at 16; pin save-area boundary testsRyan Sepassi5+108-7
2026-05-02 02:49merge: brace elision in nested aggregate initializers (rebased on current main)Ryan Sepassi7+179-37
2026-05-02 02:44cc/parse: support brace elision in nested aggregate initializers (C99 §6.7.8 ¶22)Ryan Sepassi7+179-37
2026-05-02 02:40merge: block-scope inferred-length arrays (rebased on current main)Ryan Sepassi5+144-1
2026-05-02 02:39cc/parse: infer length for block-scope arrays; reserve frame slot before initRyan Sepassi5+144-1
2026-05-02 02:12Revert "merge: block-scope inferred-length arrays"Ryan Sepassi5+10-147
2026-05-02 02:12Revert "cc/parse: support brace elision in nested aggregate initializers"Ryan Sepassi3+0-218
2026-05-02 00:49cc/cg: cg-arith-conv casts to common type, not relabel-onlyRyan Sepassi1+12-2
2026-05-02 00:45cc/cg: promote narrow integers to (signed) intRyan Sepassi1+9-5
2026-05-02 01:49merge: codegen fixes (4 bugs: spill canon, signed shr, narrow promote, arith conv)Ryan Sepassi12+148-0
2026-05-02 01:49tests/cc-pp: pin #if short-circuit and /0 diagnosticRyan Sepassi8+23-0
2026-05-02 01:48tests/cc-pp: pin arg prescan stringize and paste casesRyan Sepassi4+12-0
2026-05-02 01:48merge: lex/pp bug fixes (4 bugs)Ryan Sepassi9+71-25
2026-05-02 00:31cc/parse: support brace elision in nested aggregate initializersRyan Sepassi3+218-0
2026-05-02 01:47merge: block-scope inferred-length arraysRyan Sepassi5+147-10
2026-05-02 00:49cc/cg: cg-arith-conv casts to common type, not relabel-onlyRyan Sepassi3+35-2
2026-05-02 00:49cc/parse: infer length for block-scope arrays from initializerRyan Sepassi5+147-10
2026-05-02 00:45cc/cg: promote narrow integers to (signed) intRyan Sepassi3+38-5
2026-05-02 00:37cc/pp: track #else seen on cond-stack; reject #elif/#else after #elseRyan Sepassi3+35-13
2026-05-02 00:37cc/cg: signed shift right uses lhs signedness onlyRyan Sepassi3+48-4
2026-05-02 00:32cc/pp: builtin macros emit at original loc to avoid double #line shiftRyan Sepassi3+22-11
2026-05-02 00:27cc/cg: canonicalize narrow-int spills in %cg-spill-regRyan Sepassi8+96-3
2026-05-02 00:23cc/lex: line-leading %: digraph emits HASH for directivesRyan Sepassi3+10-1
2026-05-02 00:19cc/pp: stringize escapes control bytes in char/string literalsRyan Sepassi3+7-0
2026-05-02 00:09cc: fix nine bugs across lex/pp/cg/parse/typesRyan Sepassi18+419-42
2026-05-01 22:20merge: const-expr short-circuit && and ||Ryan Sepassi3+83-6
2026-05-01 22:19merge: lexer char-literal type fixRyan Sepassi3+32-1
2026-05-01 22:18tests/cc: pin macro arg prescan (M(M(1)))Ryan Sepassi2+19-0
2026-05-01 22:14cc: short-circuit && and || in constant-expression evaluatorRyan Sepassi3+74-6
2026-05-01 22:10cc: codegen: signed >> unsigned must use arithmetic shiftRyan Sepassi2+24-0
2026-05-01 22:07cc: const-expr: promote unsigned sub-int types to signed intRyan Sepassi3+85-18
2026-05-01 22:07cc: type integer character constants as int (§6.4.4.4)Ryan Sepassi3+32-1
2026-05-01 21:55cc: add cc.scm.md code mapRyan Sepassi1+173-0
2026-05-01 21:55cc: deduplicate and unify constant-expression evaluatorRyan Sepassi1+82-221
2026-05-01 18:21cc: tidyRyan Sepassi1+32-56
2026-05-01 01:26scheme1: replace advance_walk(offset) with advance_walk(name)Ryan Sepassi1+46-55
2026-05-01 00:43scheme1: tidyRyan Sepassi1+807-982
2026-04-30 18:01p1pp: extend cmpset macro setRyan Sepassi4+85-10
2026-04-30 17:52P1 arch files: rerun gen pyRyan Sepassi3+0-66
2026-04-30 17:38pokem rmRyan Sepassi3+7-278
2026-04-30 17:13tcc-todo updateRyan Sepassi1+35-12
2026-04-30 16:55cc: fix pp cond stack bugRyan Sepassi3+28-0
2026-04-30 16:50tests/cc-pp: expand to cover stdarg shapeRyan Sepassi6+105-0
2026-04-30 16:30p1pp: expand libp1pp and use from cc.scmRyan Sepassi18+979-119
2026-04-30 15:42tcc-cc: rely on libc-flat as the gcc-built sanity referenceRyan Sepassi2+18-50
2026-04-30 15:31docs: TCC-TODO update — gcc-flat 130/22, gcc-libc-flat 152/0, cc.scm-tcc 13/139Ryan Sepassi1+61-22
2026-04-30 15:25tcc-cc: full pass under gcc-built libc-flat tcc (152/0)Ryan Sepassi24+303-59
2026-04-30 13:53tcc todo updateRyan Sepassi1+181-343
2026-04-30 13:53tests/cc/: green host compiled cc suiteRyan Sepassi2+14-27
2026-04-30 13:29Add tcc-cc test suiteRyan Sepassi6+123-17
2026-04-30 07:02riscv64: support large ADDI immediates in p1_addi and p1_enterRyan Sepassi1+19-3
2026-04-30 06:23docs: tcc-boot2 now builds and runs; update TCC-TODO statusRyan Sepassi1+34-18
2026-04-30 06:22cc: fix for-loop continue to execute the step expressionRyan Sepassi3+60-30
2026-04-30 06:22entry-libc: save argc/argv across __libc_initRyan Sepassi1+7-3
2026-04-30 06:22aarch64: support large ADD/SUB immediates in p1_addi and p1_enterRyan Sepassi3+68-4
2026-04-30 03:49Make trace macro preserve registersRyan Sepassi3+103-46
2026-04-30 03:22vendor: drop ../ reaches into sibling reposRyan Sepassi9+77-24
2026-04-30 03:21tcc-gcc: stock-gcc sanity-check harnessRyan Sepassi5+181-1
2026-04-30 03:21va_list: route through __builtin_va_list across cc.scm + mes-libcRyan Sepassi6+62-133
2026-04-30 03:21rename: lispcc → boot2 across the treeRyan Sepassi17+299-299
2026-04-30 01:46p1pp: tracepoint machineryRyan Sepassi5+396-51
2026-04-30 01:11mk: more verbose build logsRyan Sepassi4+88-25
2026-04-30 01:09m1-symbols.py annotate disassembly, add :_text_end to m1pp+schemeRyan Sepassi3+185-0
2026-04-30 00:55regularize build/ dirRyan Sepassi20+422-258
2026-04-29 23:42scripts/disasm-elf.shRyan Sepassi1+75-0
2026-04-29 23:39P1pp: fix loop scoping tags, were global, now are localRyan Sepassi5+135-40
2026-04-29 23:31tests/cc: tentative bss sizingRyan Sepassi2+77-0
2026-04-29 20:05tests/cc-libc: cover all P1pp syscalls + complex libc layersRyan Sepassi18+303-0
2026-04-29 19:51cc: stdarg patch to builtinsRyan Sepassi4+31-22
2026-04-29 19:39tests/cc: extended vararg testRyan Sepassi2+116-0
2026-04-29 19:12mes-libc: define __std{in,out,err}Ryan Sepassi1+12-0
2026-04-29 18:30libc-flatten: silence host preprocessor warningsRyan Sepassi5+15-1
2026-04-29 18:25cc.scm: --lib mode for catm-style libc linkingRyan Sepassi11+279-240
2026-04-29 18:04cc-cg: fix up test to use proper symbol names for externRyan Sepassi1+2-2
2026-04-29 18:03P1: new syscalls lseek, brk, unlinkatRyan Sepassi7+191-0
2026-04-29 18:02tests/cc-libcRyan Sepassi23+1006-214
2026-04-29 18:02vendor/mes-libcRyan Sepassi213+12029-0
2026-04-29 16:03docs: libc plan — port mes libc, build libc.a + libtcc1.a with tcc-boot2Ryan Sepassi2+404-0
2026-04-29 02:08docs/LIBC.txt: split symbols into pure-code vs syscall-usingRyan Sepassi1+48-26
2026-04-29 01:43tcc-boot2: trace pipeline phases and inventory unresolved symbolsRyan Sepassi4+117-1
2026-04-29 01:43stage1-flatten: vendor local simple-patches for libc stubsRyan Sepassi21+213-0
2026-04-29 01:42cc: follow C linkage rules for external/internal symbolsRyan Sepassi5+161-22
2026-04-29 00:51cc: quoted-hex data emission and signed→unsigned cast canonicalisationRyan Sepassi5+251-20
2026-04-29 00:50tcc-boot2: end-to-end harness from tcc.flat.c to ELFRyan Sepassi3+151-65
2026-04-29 00:36M1pp: bump caps, cleanup duplicationRyan Sepassi2+171-177
2026-04-28 22:49cc: offsetof support in const exprsRyan Sepassi3+186-5
2026-04-28 22:35cc: stream static array initializers past asm_instrs scratch wallRyan Sepassi2+203-74
2026-04-28 21:48scheme1: prelude wrappers for the two heap-arena patternsRyan Sepassi5+259-100
2026-04-28 21:33cc: clear four tcc.flat.c blockers, hit asm_instrs scratch wallRyan Sepassi6+326-56
2026-04-28 20:25cc: parse-and-discard GNU __attribute__ specsRyan Sepassi2+104-73
2026-04-28 20:13cc: replace per-type promote walkers with deep-copyRyan Sepassi2+51-407
2026-04-28 20:06Document deep-copy promotion statusRyan Sepassi1+120-0
2026-04-28 20:01Keep scheme1 global metadata on main heapRyan Sepassi5+125-10
2026-04-28 19:27scheme1: record introspection, deep-copyRyan Sepassi6+479-0
2026-04-28 19:27cloc add prelude.scmRyan Sepassi1+8-6
2026-04-28 18:42rm impl plan docRyan Sepassi1+0-356
2026-04-28 18:41scheme1: add list traversal primitivesRyan Sepassi6+190-27
2026-04-28 18:08cc: CC-SCRATCH Phase 3 — parse-decl-or-fn boundaryRyan Sepassi2+402-72
2026-04-28 17:56scheme1: hex number<->string and format, rename eof-object to eofRyan Sepassi7+251-53
2026-04-28 17:47SCHEME1.mdRyan Sepassi3+263-225
2026-04-28 16:41scheme1: drop unused special forms (unless, define-values, case-lambda, letrec/letrec*, quasiquote)Ryan Sepassi15+13-739
2026-04-28 16:32scheme1: 8-aligned stringsRyan Sepassi1+31-45
2026-04-28 16:25scheme1: CC-SCRATCH Phase 2 — two-heap primitivesRyan Sepassi3+224-36
2026-04-28 15:53cc: CC-SCRATCH Phase 1 pre-refactorsRyan Sepassi1+161-114
2026-04-28 15:00docs: CC-SCRATCH plan — bound parse heap via scratch arenaRyan Sepassi1+356-0
2026-04-28 07:21cc: redecl compatibility, update cc docsRyan Sepassi13+284-775
2026-04-28 04:01cc streaming architectureRyan Sepassi1+434-204
2026-04-28 02:57docs: TCC-TODO punchlist + CC-STREAM planRyan Sepassi2+433-0
2026-04-28 02:56scheme1: bump HEAP_CAP_BYTES 64 -> 256 MiB, p_memsz 128 -> 512 MBRyan Sepassi4+6-6
2026-04-28 02:56cc: lex per-token heap-mark/rewind + scratch bufferRyan Sepassi1+200-92
2026-04-28 01:58cc: float/double parseRyan Sepassi4+94-10
2026-04-28 00:14scheme1: quote raw-byte padding for riscv64 M0Ryan Sepassi1+126-125
2026-04-27 23:34scheme1: bump READBUF_CAP_BYTES 256 KiB -> 1 MiBRyan Sepassi1+2-2
2026-04-27 23:34cc: use scheme1 multiple-values protocol for tuple returnsRyan Sepassi2+140-157
2026-04-27 21:37scheme1: multiple-values protocolRyan Sepassi13+488-3
2026-04-27 21:03docs rm oldRyan Sepassi6+0-3288
2026-04-27 21:02scheme1: quasiquote, variadic primsRyan Sepassi8+461-56
2026-04-27 21:16cc: struct return — indirect-result (sret) convention (A2)Ryan Sepassi4+197-124
2026-04-27 20:43cc: struct return — one-word and two-word direct conventions (A1)Ryan Sepassi6+283-18
2026-04-27 20:39cc: compound literals (Stream B)Ryan Sepassi1+67-9
2026-04-27 20:38cc: integer constant expressions (Stream C)Ryan Sepassi1+343-7
2026-04-27 20:38cc: union field offsets + sizeof no-emit (Stream D)Ryan Sepassi3+118-31
2026-04-27 20:42readme updateRyan Sepassi1+5-5
2026-04-27 20:24update readmeRyan Sepassi1+2-1
2026-04-27 20:23docs: cc parallel work planRyan Sepassi1+233-0
2026-04-27 20:12scheme1: single-arm if, do, case-lambda, letrec*Ryan Sepassi7+428-49
2026-04-27 19:37cc: combine files into 1Ryan Sepassi12+5257-5259
2026-04-27 19:28docs: r7rs todoRyan Sepassi1+124-0
2026-04-27 19:28scheme1 prelude: various extensionsRyan Sepassi1+308-26
2026-04-27 19:27tests/scheme1: prelude tests, do/case/if tests, 3-digit prefixRyan Sepassi208+352-8
2026-04-27 19:04tests/cc: add compound-literal and const-expr fixturesRyan Sepassi4+252-0
2026-04-27 18:54cc/cg: use pmatch record patterns for opnd/sym dispatchRyan Sepassi1+95-106
2026-04-27 18:47cloc: add cc scm filesRyan Sepassi1+1-0
2026-04-27 18:41cc/parse: use pmatch record patterns for token dispatchRyan Sepassi1+260-285
2026-04-27 18:41scheme1: pmatch record-destructuring patternsRyan Sepassi3+289-6
2026-04-27 18:34tests/cc/: 3-digit prefix renameRyan Sepassi238+0-0
2026-04-27 18:24cc: add 35 e2e tests probing parse/codegen gaps from CC.mdRyan Sepassi70+749-0
2026-04-27 17:57scheme1: when, unless, caseRyan Sepassi7+351-112
2026-04-27 17:46cc: merge parse+e2e tests into tests/cc/Ryan Sepassi212+118-585
2026-04-27 17:35cc: fix three kitchen-sink-blocking bugs; split into per-feature e2e fixturesRyan Sepassi66+1103-36
2026-04-27 17:23scripts: collapse test runner to one container per archRyan Sepassi3+512-507
2026-04-27 16:47cc/util: round buf caps to powers of twoRyan Sepassi1+9-11
2026-04-27 16:46scheme1: split string semantics from raw bytevectorsRyan Sepassi3+252-111
2026-04-27 16:02m1pp: increase text capRyan Sepassi2+10-10
2026-04-27 16:01cc: pre-allocate global outputs, use mark+reset per fnRyan Sepassi4+214-58
2026-04-27 15:32cc: use mark+reset in lex+ppRyan Sepassi2+318-251
2026-04-27 15:01scheme1: add (heap-mark) and (heap-rewind!) for arena-style reclamationRyan Sepassi3+114-3
2026-04-27 15:01cc/lex: cut heap allocations via fast-path peek + per-byte bv elision + punct bucketsRyan Sepassi1+260-92
2026-04-27 11:03cc: add debug-log facility + per-phase heap-usage instrumentationRyan Sepassi2+68-11
2026-04-27 11:01scheme1: add (heap-usage) primitive returning bytes consumedRyan Sepassi1+15-0
2026-04-27 10:43scheme1: bump heap to 64 MiB, ELF p_memsz to 128 MiB; reorder arenasRyan Sepassi6+351-10
2026-04-27 10:10cc/parse: skip useless spill on void-returning callsRyan Sepassi3+36-2
2026-04-27 10:04cc/cg: drop vestigial cg-loop-end no-opRyan Sepassi5+48-58
2026-04-27 09:49cc/cg: &arr yields T(*)[N] per strict CRyan Sepassi3+25-6
2026-04-27 09:29cc/cg: variadic incoming-arg window covers indices 0..15Ryan Sepassi5+72-29
2026-04-27 09:17cc tests: lock in void* byte-arithmetic semanticsRyan Sepassi2+18-0
2026-04-27 08:08cc/parse: lvalue-conversion runs for every cast (§L.1)Ryan Sepassi4+44-10
2026-04-27 06:53Merge Agent 3: §E + §I + §L.3 (initializers + storage + fn-ptr table)Ryan Sepassi40+958-75
2026-04-27 06:50Merge Agent 4: §F + §G + §J + §K.2-6 (ctrl/varargs/envelope)Ryan Sepassi44+918-99
2026-04-27 06:49Merge Agent 2: §D + §L.2 (aggregates + array-param decay)Ryan Sepassi27+563-56
2026-04-27 06:48Merge Agent 1: §B + §C + §H + §K.1 (lvalue/sizeof/conditionals/comma)Ryan Sepassi42+593-103
2026-04-27 06:46docs: mark §F.1-4, §G.1-2, §J.1-3, §K.2-6 done in punchlistRyan Sepassi1+85-74
2026-04-27 06:26cc/parse: drop unused parse-init-list backwards-compat aliasRyan Sepassi1+0-2
2026-04-27 06:16cc/parse: __builtin_va_{start,arg,end} + bundled stdarg.h (§G.2)Ryan Sepassi4+113-8
2026-04-27 06:09cc/parse: §I block-static mangling stores in sym-nameRyan Sepassi4+81-54
2026-04-27 06:02cc/cg: variadic receive — cg-fn-begin/v + cg-va-{start,arg,end} (§G.2)Ryan Sepassi3+208-5
2026-04-27 05:56cc/cg+parse: array of fn pointers initialized with names (§L.3)Ryan Sepassi4+66-0
2026-04-27 05:53cc/cg+parse: block-scope static lives in .data, not on the stack (§I)Ryan Sepassi4+59-0
2026-04-27 05:51cc tests: pointer comparisons use unsigned ltu (§K.6)Ryan Sepassi4+40-0
2026-04-27 05:50cc/parse: local struct initializer (§E.8)Ryan Sepassi2+12-0
2026-04-27 05:49cc/parse: local array initializer (§E.7)Ryan Sepassi3+14-2
2026-04-27 05:49cc/parse: T[] in param position decays to T* (§L.2)Ryan Sepassi3+34-6
2026-04-27 05:48cc tests: void* <-> T* implicit conversion fixture (§K.4)Ryan Sepassi2+11-0
2026-04-27 05:47cc/parse: struct passed by pointer to function (§D.7)Ryan Sepassi3+24-3
2026-04-27 05:47cc tests: enum constant in expressions (§K.3)Ryan Sepassi2+7-0
2026-04-27 05:46docs/CC-PUNCHLIST: mark §B + §C + §H + §K.1 as greenRyan Sepassi1+78-70
2026-04-27 05:46cc/parse: compound-assign + ++/-- + sizeof + ternary + && + || + comma (§B, §C, §H, §K.1)Ryan Sepassi23+139-23
2026-04-27 05:46cc/parse: multi-dim arrays via right-to-left suffix wrap (§D.6)Ryan Sepassi4+32-5
2026-04-27 05:46cc tests: function-pointer call (§K.2)Ryan Sepassi4+50-0
2026-04-27 05:46cc/cg: cg-dup, cg-postinc/postdec, ptr-aware arith-conv, cg-ifelse-merge (§B, §H)Ryan Sepassi18+376-10
2026-04-27 05:45cc/cg+parse: struct global designated init (§E.6)Ryan Sepassi6+59-15
2026-04-27 05:44cc tests: multi-fn TU with forward reference (§J.3)Ryan Sepassi2+12-0
2026-04-27 05:43cc/cg+parse: int main() falling off end returns 0 (§J.2)Ryan Sepassi3+20-2
2026-04-27 05:42cc/parse: array element access at non-zero index fixture (§D.5)Ryan Sepassi3+22-7
2026-04-27 05:41cc/cg: array element access at non-zero index (§D.5)Ryan Sepassi2+56-0
2026-04-27 05:40cc/cg+parse: struct global positional init (§E.5)Ryan Sepassi4+49-0
2026-04-27 05:39cc/parse: per-arg cast-or-promote in parse-call-args (§G.1, §K.5)Ryan Sepassi5+84-7
2026-04-27 05:39cc/parse: arrow + nested struct access fixtures (§D.3 §D.4)Ryan Sepassi5+50-7
2026-04-27 05:39cc tests: variadic call site exercises cg-promote per arg (§G.1)Ryan Sepassi2+58-0
2026-04-27 05:39cc/cg: lock in p->x arrow access via cg fixture (§D.3)Ryan Sepassi2+60-0
2026-04-27 05:39cc/cg+parse: char[] from string-literal initializer (§E.4)Ryan Sepassi4+33-0
2026-04-27 05:37cc/cg+parse: array global from element list (§E.3)Ryan Sepassi5+52-2
2026-04-27 05:36cc/parse: lock in struct member store fixture (§D.2)Ryan Sepassi3+22-4
2026-04-27 05:36cc/cg: lock in struct member store fixture (§D.2)Ryan Sepassi2+57-0
2026-04-27 05:34cc/parse: dot/arrow use cg-push-field (§D.1)Ryan Sepassi4+42-18
2026-04-27 05:34cc/cg: add cg-push-field + array decay (§D.1)Ryan Sepassi3+159-1
2026-04-27 05:33cc/parse: real goto + labelled-stmt via cg-goto/cg-emit-label (§F.4)Ryan Sepassi3+17-3
2026-04-27 05:31cc/cg: add cg-emit-label / cg-goto for goto+labels (§F.4)Ryan Sepassi3+73-2
2026-04-27 05:30cc/cg+parse: address initializer for global pointer (§E.2)Ryan Sepassi4+33-0
2026-04-27 05:28cc/parse: real init-list parser; scalar global init (§E.1)Ryan Sepassi3+467-20
2026-04-27 05:26cc tests: switch / case / default with fall-through (§F.3)Ryan Sepassi4+88-0
2026-04-27 05:25cc/cg: structured init for cg-emit-global; scalar global init (§E.1)Ryan Sepassi4+63-6
2026-04-27 05:25cc tests: for (int i = 0; cond; step) fixture (§F.2)Ryan Sepassi2+7-0
2026-04-27 05:24cc tests: do { } while (cond) fixtures (§F.1)Ryan Sepassi4+47-0
2026-04-27 04:55cc tests: lock in integer promotion preserves sign (§A.6)Ryan Sepassi5+48-6
2026-04-27 04:52cc tests: lock in unsigned narrowing zero-extends (§A.5)Ryan Sepassi5+34-4
2026-04-27 04:50cc/cg: signed narrowing sign-extends on re-widen (§A.4)Ryan Sepassi6+43-5
2026-04-27 04:46cc/cg: width-aware 32-bit load/store, generalised N-byte helpers (§A.3)Ryan Sepassi6+125-47
2026-04-27 04:41cc/cg: width-aware 16-bit load/store via byte decomposition (§A.2)Ryan Sepassi6+124-35
2026-04-27 04:37cc/cg: width-aware byte load/store for char lvals (§A.1)Ryan Sepassi6+117-15
2026-04-27 04:12cc: add CC-PUNCHLIST.md — TDD checklist of red codegen capabilitiesRyan Sepassi2+398-0
2026-04-27 03:53cc tests: switch cc-cg/cc-parse to runtime-validating fixturesRyan Sepassi84+402-793
2026-04-27 02:07cc/pp: adjacent-string concat, more built-ins, stringize escapes, empty argsRyan Sepassi16+127-9
2026-04-26 23:31P1pp: add %fn2 / %stl / %ldl + init_arenas; adopt in scheme1Ryan Sepassi2+953-938
2026-04-26 23:07M1pp: %frame %local supportRyan Sepassi11+1102-34
2026-04-26 22:14scheme1: adopt libp1pp global/array helpers; add pair + heap field macrosRyan Sepassi1+1231-1291
2026-04-26 22:14P1pp: add ld/st/lda_global and ld/st/lda_array helpersRyan Sepassi1+845-775
2026-04-26 22:14m1pp: bump MAX_MACROS 512 -> 1024Ryan Sepassi2+3-3
2026-04-26 22:14make: add P1pp.P1pp to cloc targetRyan Sepassi1+1-0
2026-04-26 23:34scripts: rework tcc bootstrap into 3 stages + add live-bootstrap diagRyan Sepassi7+1098-596
2026-04-26 14:55docs: TCC.md — pipeline from tarball to tcc-boot0-mes + open bugsRyan Sepassi1+337-0
2026-04-26 14:46scripts/build-tcc-real.sh: build mes libc with tcc-host, link tcc-boot0-mesRyan Sepassi1+161-84
2026-04-26 11:11scripts: build-tcc-real.sh — assemble real tcc-0.9.26 from our chainRyan Sepassi1+111-0
2026-04-26 10:33scripts: build-tcc-source.sh — flatten tcc-0.9.26 and validate self-hostRyan Sepassi1+214-0
2026-04-26 10:15cc: switch cc-pp + cc-parse to real pipeline; uncover & fix lex/pp bugRyan Sepassi137+686-1317
2026-04-26 09:39make: wire cc-* suites into run-tests.sh + add cc-e2eRyan Sepassi11+239-111
2026-04-26 09:21cc: phase-1 milestone — int main(int argc, char **argv) compiles e2eRyan Sepassi22+89-34
2026-04-26 09:04cc: resolve cg/parse contract drift; bump scheme1 readbuf to 256KRyan Sepassi10+145-75
2026-04-26 05:50cc: implement lex / pp / cg / parse modulesRyan Sepassi159+5215-185
2026-04-26 05:15cc: util.scm — implement TBD helpers; add 14 test fixturesRyan Sepassi30+402-21
2026-04-26 04:58cc: scaffold compiler tree and test dirsRyan Sepassi19+661-0
2026-04-26 04:50docs: add C compiler spec — CC.md, CC-INTERNALS.md, CC-CONTRACTS.mdRyan Sepassi3+1705-0
2026-04-26 00:25scheme1: implement pmatch special form per LISP-PMATCH.mdRyan Sepassi17+524-0
2026-04-26 00:15make: cloc covers P1 tables + vendor seeds, ARCH= narrows scopeRyan Sepassi1+16-3
2026-04-26 00:07make: add cloc target for core source line countsRyan Sepassi1+15-1
2026-04-26 00:04docs: add LISP-PMATCH spec and concrete pmatch impl sketchRyan Sepassi2+527-18
2026-04-25 23:57scheme1: forbid internal define; eval_body rejects with clear errorRyan Sepassi5+40-5
2026-04-25 23:30scheme1: tighten 45-shell-spawn and 67-read-line to prelude-onlyRyan Sepassi2+7-18
2026-04-25 23:26docs: drop scheme-shell-todo audit (gaps closed)Ryan Sepassi1+0-214
2026-04-25 23:26scheme1: rework shell + file-IO test coverage to prelude API onlyRyan Sepassi16+137-66
2026-04-25 23:26scheme1: tighten cond no-else, let* shadow, letrec recursion testsRyan Sepassi5+28-8
2026-04-25 23:26scheme1: 16 MB heap arena, ELF p_memsz to 32 MBRyan Sepassi4+10-8
2026-04-25 23:16scheme1: set!, cond => arrow, number/string radix-arg surfaceRyan Sepassi3+178-24
2026-04-25 23:15M1pp: bump TEXT_CAP 512KB -> 640KB, log text/output usage in native buildRyan Sepassi2+8-7
2026-04-25 23:15argv testRyan Sepassi2+7-0
2026-04-25 22:58scheme1: tests for set! and number/string radix-arg surfaceRyan Sepassi3+62-0
2026-04-25 22:34scheme1: tests for hex string escapes, signed-int literals, and strict readerRyan Sepassi8+54-1
2026-04-25 22:31scheme1: add symbol?, #u8(...) literal, number?/bytevector? aliasesRyan Sepassi5+310-20
2026-04-25 22:06scheme1: match record api to r7rsRyan Sepassi2+13-168
2026-04-25 21:51scheme1: fix parse_decRyan Sepassi1+39-29
2026-04-25 21:42M1pp: track source line numbers and report them in error messagesRyan Sepassi1+38-11
2026-04-25 21:35scheme1: string<->sym, bytevector-append, type preds, number<->str, quot/rem, bit-xor/not, set-car/cdr!Ryan Sepassi2+413-142
2026-04-25 21:33scheme1: add min, max, modulo to the preludeRyan Sepassi1+14-0
2026-04-25 21:32scheme1: red-green tests for R7RS record API surfaceRyan Sepassi6+36-8
2026-04-25 21:32scheme1: pending tests for type predicates, quot/rem/mod, min/max/abs, bit-xor/not, num<->strRyan Sepassi10+140-0
2026-04-25 21:30scheme1: tests for string->symbol, symbol->string, bytevector-appendRyan Sepassi6+75-16
2026-04-25 21:13scheme1: string? / set-car! / set-cdr! / length / list-ref primitivesRyan Sepassi10+156-7
2026-04-25 20:58scheme1: > primitive, positive? prelude entry, comparison test coverageRyan Sepassi5+50-42
2026-04-25 20:53scheme1: equal?, bytevector=?; shell+fileio e2e testRyan Sepassi11+409-67
2026-04-25 20:39scheme1: string literal, char literalRyan Sepassi11+327-3
2026-04-25 20:38scheme1: display, write, format, error primitivesRyan Sepassi11+699-21
2026-04-25 20:28scheme1: and/or special forms; drop embedded preludeRyan Sepassi6+130-145
2026-04-25 20:24scheme1: lift prelude to scheme1/prelude.scm, catm at run timeRyan Sepassi3+375-4
2026-04-25 20:08scheme1: runtime errors, bytevector bounds, helper macrosRyan Sepassi6+1039-749
2026-04-25 20:02Make M1pp directives whitespace-insensitive in M1pp.cRyan Sepassi1+139-75
2026-04-25 19:33M1pp whitespace testsRyan Sepassi18+50-8
2026-04-25 19:07rm old lisp code and scriptRyan Sepassi60+0-1067
2026-04-25 17:25Audit scheme1: document deviations and known issuesRyan Sepassi1+324-12
2026-04-25 17:13Port shell.scm helpers into the embedded preludeRyan Sepassi5+85-0
2026-04-25 16:49Add scheme1 embedded preludeRyan Sepassi3+96-4
2026-04-25 16:22Add scheme1 syscall primitives, sys-argv, and EOF immediateRyan Sepassi9+404-7
2026-04-25 16:10Add scheme1 define-record-type and parameterized PRIM data slotRyan Sepassi9+430-5
2026-04-25 15:58Add scheme1 bytevectors with dynamic-array semanticsRyan Sepassi14+359-2
2026-04-25 15:38Add scheme1 arith and list primitivesRyan Sepassi13+343-33
2026-04-25 15:32Add scheme1 cond, begin, and the let familyRyan Sepassi15+493-49
2026-04-25 15:17Add variadic .-tail to scheme1 lambda/defineRyan Sepassi9+74-3
2026-04-25 15:14Add scheme1 top-level define and read-eval loopRyan Sepassi7+101-5
2026-04-25 14:12Add scheme1 reader: `;` comments, `'datum` quote, `#xNN` hex literalsRyan Sepassi8+139-1
2026-04-25 13:48Add scheme1 lambda, closures, and alist environmentsRyan Sepassi7+173-2
2026-04-25 13:40Use %tail / %tailr at every scheme1 tail positionRyan Sepassi1+15-21
2026-04-25 13:32Add scheme1 `if` special form and #t/#f reader literalsRyan Sepassi5+109-1
2026-04-25 13:13Heap-allocate PRIM objects so the HEAP tag bits land correctlyRyan Sepassi1+25-11
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