| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gen/liturgy_ef.h was regenerated in an earlier session without refreshing
gen/verses_ef.keys.gz, which is what the Makefile actually packs the text from.
The tables indexed 3584 verses; the packed text held 3248. print_day then read
verse[i] past the end and dereferenced NULL.
Reproduced against the fully committed tree with a plain make: 1246 of 10957 EF
dates exit 139. Heavily clustered in Advent and December -- 30 of 30 years for
each of 11-30, 12-03, 12-05, 12-06, 12-09, 12-10, 12-12, 12-21 through 12-25.
OF swept clean, 0 of 10957.
Three changes:
- gen/ regenerated against lectio HEAD with keys and tables in step (3584
both), and text_ef.lz repacked from the same keys.
- clectio.c records how many verses the packed text holds and prints
"[verse text missing]" rather than reading past it. Missing text is a
visible gap now, never a crash. Proved by rebuilding against the stale
keys: 1246 crashes -> 0, placeholder shown.
- upstream, lectio's clectio-gen now writes the .gz alongside the plain
keys, so the two cannot drift again.
The regenerated tables also carry two EF calendar corrections colitur argued
from the 1962 Missal and lectio adopted: the Holy Family propers' 13-January
omission of the Baptism, and RG 96(a)/97/98 transfers, which put St Joseph back
on 2035-04-03 and 2046-04-03 (he was observed on no day of those years).
Distinct days 656 -> 642: the ferias between Epiphany and the Sunday after it
now repeat Epiphany's own Mass instead of each carrying a distinct one.
Swept after the fix: EF 0 crashes, OF 0 crashes.
Readings compared against lectio across 2030/2035/2046 (1095 days): no
divergence beyond each project's own book abbreviations.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two size wins:
- Replace the home-grown LZSS (2.0x) with DEFLATE: mktext gzips the text and
strips the gzip container to a raw DEFLATE stream; clectio decompresses it
with puff, Mark Adler's public-domain reference inflate (~200 lines, verified
byte-identical to gunzip on the OF/EF text, repetitive, random and empty
inputs). Text blob 671 KB -> 492 KB (OF), 164 KB -> 132 KB (EF), 2.7x.
- Build with -no-pie: clectio is a local CLI reading static embedded data with
no attack surface, so it needs no PIE/ASLR. The linker then bakes the string-
table pointers in at link time instead of emitting ~57 KB of runtime
relocations.
Net: OF 879 -> 662 KB, EF 266 -> 214 KB. Verified byte-identical to lectio.
The default build still needs only a compiler + libc; a CORPUS= rebuild now
also needs gzip. lz.h removed.
Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two QA-found bugs fixed:
- mktext now collapses runs of whitespace in verse text to a single space
(and trims), matching lectio's Fields-based rendering. The Vulgate source
has occasional double spaces that were leaking into the output.
- Regenerated gen/ with the hermetic, alias-fixed clectio-gen: the generator
no longer picks up the user's stale books.ini (which had silently dropped
~30 EF Ember-day lessons, e.g. St Lawrence-common Sir 45, Osee/Hosea 14,
2 Esdras/Nehemiah 8). Full range 2025-2054 now has 0 dropped readings.
Verified vs lectio: OF and EF 2026 are byte-identical (day names + verse
text, 0 mismatches); range boundaries 2025-01-01 / 2054-12-31 match; ASAN +
UBSAN clean over leap days, boundaries and edge cases; bad input never
crashes. Shipped total 1.28 MiB.
Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
|
|
|
clectio prints the Catholic liturgical day and its Mass readings for a date
with a single table lookup -- no computation, config file, network, or deps
beyond libc. The calendar, reading citations and scripture text are all
compiled in; the whole shipped package fits on a 1.44 MB floppy (~1.29 MiB)
and the binary is ~0.9 MB (OF) / ~0.3 MB (EF).
- suckless config.h: FORM_OF/FORM_EF, SIGLA_ENGLISH/SIGLA_LATIN, COLOR.
- Bring your own Bible: `make CORPUS=mybible.tsv` recompiles with any
Vulgate-numbered 6-column TSV; only the ~12k cited verses are embedded.
- The hard liturgical logic stays in lectio (Go, oracle-validated); its
clectio-gen emits the corpus-independent tables in gen/. The scripture text
is LZSS-packed (lz.h) to fit; mktext/bin2h resolve+embed it at build time.
- Verified byte-identical to lectio's readings; day names match 157/157 over
a 3-year sample. Default text: public-domain Latin Vulgate. ISC-licensed.
Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
|