aboutsummaryrefslogtreecommitdiff
path: root/text_ef.lz
Commit message (Collapse)AuthorAgeFilesLines
* fix: EF crashed on 1246 of the 10957 dates in rangeHEADmainLukasz Kasprzak2026-08-181-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* perf: DEFLATE (puff) + -no-pie -> OF binary 879 KB -> 662 KB (-25%)Lukasz Kasprzak2026-07-291-0/+0
| | | | | | | | | | | | | | | | | | | | | 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
* fix: recover dropped readings + collapse whitespace; regenerate dataLukasz Kasprzak2026-07-281-0/+0
| | | | | | | | | | | | | | | | | | | | 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: tiny suckless C daily readings, all readings compiled inlectio2026-07-281-0/+0
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