Skip to content
go-libfossil Today In History
Login

Today In History

This Day In History For 2027-07-29

1 Year Ago (more context)

2026-07-29
23:37
fix(manifest): preserve crosslink failure cause (#222) check-in: 2ed6f0207f user: [email protected] tags: trunk, v0.8.1
23:37 • Edit [2ed6f0207f]: Add tag "v0.8.1". artifact: c8ee96d98e user: [email protected]
19:19
fix(test): reap fossil servers before temp-dir cleanup; raise unit-test timeout (#220)

Three tests started a real fossil server and killed it with Process.Kill() without waiting for the exit. Kill signals but does not reap, so the server could still be writing its -wal/-shm files while t.TempDir()'s cleanup walked the directory. A file appearing mid-walk fails RemoveAll with "directory not empty", which is how TestCloneFromRealFossilUncompressedReply failed on CI while passing locally -- it needs a loaded machine to lose the race.

internal/sync/integration_test.go already did this correctly, Kill followed by Wait, with a comment naming the same failure. This applies that established pattern at the three sites that lacked it.

Separately, the unit-test step ran with -timeout=120s, a per-package budget. CI runs the package binaries concurrently, so under contention internal/manifest and internal/sync exceeded it and panicked with "test timed out" despite finishing in 19s and 34s on an unloaded runner. Raised to 300s, matching the DST step, so the margin does not depend on how busy the runner is. check-in: 2256f5d7ce user: [email protected] tags: trunk

17:56
chore: untrack generated and local-only files (#219)

go.work.sum is only consulted for workspace-mode builds. CI never uses the workspace -- every step in test.yml runs GOWORK=off -- so the file earns nothing in the repository and re-churns on any local dependency change. Go regenerates it on demand for anyone building with the workspace active, so untracking it costs nothing and removes the churn.

docs/superpowers was added to .gitignore, but four files under it were already tracked; an ignore rule does not untrack what is already in the index, so the directory kept showing up in diffs regardless. Untrack it so the rule actually takes effect.

Both files stay on disk. Also terminates .gitignore with a newline. check-in: fd413ecc56 user: [email protected] tags: trunk

02:37 • Edit [ac4c3537d1]: Add tag "v0.8.0" with note "Release v0.8.0

- Align local commits, clone crosslinking, and rebuilds on canonical Fossil derived-table semantics, including merge-parent `mlink` rows and canonical `plink`, `tagxref`, and `leaf` state. - Reduce large-repository clone cost by reusing validated receive bytes during crosslinking and avoiding redundant whole-repository and per-file lookups. On the 67.6k-blob Fossil corpus, the receive-linker change reduced measured clone wall time from 371.21s to 211.69s and peak RSS from 676.9 MiB to 586.1 MiB. - Allow `cmd/libfossil` to select the SQLite backend at build time: modernc remains the default, while `-tags test_ncruces` selects the ncruces backend for native and js/wasm builds. - Improve sync interoperability and resilience with canonical Fossil, including authenticated sync, dropped-round retries, transactional visibility updates, and deferred crosslinking for temporarily unavailable dependencies. - Correct tag propagation so changes do not cross branch boundaries.

None.

- Existing default CLI builds continue to use the modernc SQLite driver. - Build with `-tags test_ncruces` when the ncruces SQLite backend or js/wasm support is required. - No repository migration or rebuild is required.

- 61cc1dd feat(cli): select sqlite driver by tag (#218) - d291e1c perf(sync): reuse received content in crosslink (#217) - 7795639 fix(manifest): unify mlink derivation (#216) - be0a89f perf: stop clone re-seeking blob.uuid per F-card and over-allocating delta output (#187) (#212) - 8dfa1c2 fix: derive mlink, plink, tagxref and leaf the way canonical fossil does (#193) (#211) - bc3de6a perf: stop the post-sync crosslink sweep re-examining the whole repository (#202) (#210) - 6ccfbbf fix: make authenticated sync interoperate with canonical fossil (#207) - 1f7081b refactor(tag): give the three tag-apply paths one propagation helper (#209) - a5c9c36 fix: stop tag propagation from crossing branch boundaries (#198) (#206) - 5f21cad ci: gate the js/wasm build on every PR (#201) (#205) - 4f752f1 fix(sync): derive the project code, and write artifact visibility inside the storing transaction (#204) - 23c3332 fix: derive leaf by canonical's branch rule, in both the sweep and the commit path (#197) - f39c6e0 fix(sync): retry a dropped exchange round instead of aborting the clone (#185) (#196) - 4e14d63 fix: pin submodules to v0.7.0 instead of an orphaned pseudo-version (#190) (#195) - 2cd3201 fix: crosslink ticket artifacts and stop warning for ordinary file blobs (#192) - 3b8b992 test: add corpus parity gate comparing clone output against canonical fossil (#188) (#191) - 3a6790e fix: defer cascade-linked checkins referencing unavailable blobs (#180) (#183) - 6c5b68c test(content): build the chain-bound fixture in one transaction (#182) - da8ea5b docs: reconcile CHANGELOG with 15-tag release history (#181)". artifact: b8338dc43b user: [email protected]

01:46
feat(cli): select sqlite driver by tag (#218) check-in: ac4c3537d1 user: [email protected] tags: trunk, v0.8.0
01:46 • Edit [ac4c3537d1]: Add tag "v0.8.0". artifact: 50bb3a1018 user: [email protected]
00:49
perf(sync): reuse received content in crosslink (#217)

Keep validated receive bytes in a bounded session linker so clone does not expand and hash every artifact again during finalization. Preserve bounded retry, cancellation, replay, and residual-repair behavior.

Closes #214 check-in: 7b6a67fb81 user: [email protected] tags: trunk