Repository navigation
Survive jolt #813, and declare the jolt floor glitter already had - #6
Merged
Merged
Conversation
…ady had Jolt shipped three changes worth reacting to. Only one of them actually reached this project, and it arrived through a dependency rather than through glitter's own code. jolt #813 (RFC 0014) moved the host-class provider table out of the runtime: a library now declares the JDK classes it implements in its own deps.edn, and a class nobody claims fails to resolve. Nothing claimed java.time.ZoneId until jolt-lang/time#11 landed, so on a jolt carrying #813 `jolt flights` died outright and glitter.nexus.action-log-test was silently dropped from the suite. 29 tests to 26, 78 assertions to 67, exit 0. A green `bb test` did not catch that. Only the changed count did, which is worth remembering next time the toolchain moves. Fixed by pinning time at 33c5e98, two commits past the v0.0.7 tag, because no release carries the declaration yet. A local :jolt/provides was tried first and is deliberately NOT here: upstream declares all ten classes under one umbrella `jolt.time`, jolt keys the duplicate-claim error on the install namespace rather than the declaring coordinate, and the two spellings therefore refuse to resolve together. The other two jolt changes do not reach glitter, checked rather than assumed. #802 flipped ffi/write's argument order and the fixed-array descriptor, and glitter has neither a write call site nor an [:array ...] layout anywhere in src, test or examples. It renamed nothing, so all 223 defcfn bindings, foreign-callable and the free-callable bookkeeping stand. Also declares :jolt/min-version "0.7.24" (jolt #804), the floor this project already had in prose for correct local dates. It is pinned at glitter's real floor rather than the newest version because a library's floor is enforced on its consumers, measured against a dependency declaring one. Note it cannot fire today: the runtime that reads the key first shipped in v0.8.0, well above the floor. Docs: corrects the "jolt <task> swallows the child's exit code" claim, stated flatly in the present tense across six files. Jolt fixed that in v0.7.28 and the task form now exits correctly. The recommendation stands but the reason changed, because a 0.7.24 floor leaves a live v0.7.24 to v0.7.27 window where the task form still swallows failures. Verified on jolt v0.8.0-45-g5e0e7a96: 29 tests, 78 assertions, all 27 live-GTK smokes green.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Jolt shipped three breaking-ish changes in quick succession. Only one of them actually reached glitter, and it arrived through a dependency rather than through any code in this repo.
The break that mattered: jolt #813
jolt#813 (RFC 0014) moved the host-class provider table out of the runtime. A library now declares the JDK classes it implements in its own
deps.edn, and a class nobody claims fails to resolve. Nothing claimedjava.time.ZoneIduntil jolt-lang/time#11 landed.Two symptoms, and only one of them was loud:
jolt flightsdied outright.glitter.nexus.action-log-testwas silently dropped from the suite. 29 tests to 26, 78 assertions to 67, exit 0.A green
bb testdid not catch the second one. Only the changed count did. Worth remembering the next time the toolchain moves: under a floating or fast-moving jolt, compare the test count against the last known one, because the exit code will not tell you.Fix: pin
jolt-lang/timeat33c5e98, two commits past thev0.0.7tag, because no release carries the declaration yet. Move the pin back to a tag once one ships.Why there is no local
:jolt/provideshereA local declaration was tried first and is deliberately absent. Upstream declares all ten classes under one umbrella
jolt.timenamespace, not under the three namespaces its ownstatics!calls live in. Since jolt keys the duplicate-claim error on the install namespace rather than the declaring coordinate, the two spellings claim the same classes under different names and jolt refuses to resolve at all:Measured, not predicted. If you are unblocking another repo on this, delete the local block rather than trying to reconcile it.
The other two changes do not reach glitter, checked rather than assumed
jolt#802 flipped
ffi/write's argument order (silent, since both spellings are integers) and the fixed-array descriptor to[:array element-type count]. glitter has noffi/writecall site and no[:array ...]layout anywhere insrc,testorexamples. #802 also renamed and removed nothing, so all 223defcfnbindings,foreign-callableand thefree-callableretain/release bookkeeping stand unchanged; the new arena-ownedffi/callbackis an option, not a replacement.Declares
:jolt/min-version "0.7.24"jolt#804. This is the floor glitter already had in prose, for correct local dates, and it is pinned at glitter's real floor rather than the newest version because a library's floor is enforced on its consumers. That was measured against a dependency declaring one, and the error names the dep via
:jolt/required-by.Two honest caveats, both documented next to the key:
ffi/writeas the motivating example, eight lines above the caveat that excludes it.Docs: a stale claim in six files
jolt <task>swallowing the child's exit code was stated flatly in the present tense across README, CONTRIBUTING's public invariant list, CHANGELOG, two guide pages and the agent context. Jolt fixed that in v0.7.28, measured here: a task whose command exits 7 now answers 7.The recommendation survives, for a narrower reason than the original. glitter's floor is v0.7.24 and the fix lands at v0.7.28, so there is a live v0.7.24-to-v0.7.27 window this project supports where the task form still swallows failures. The alias form is correct across the whole supported range, which is what a gate needs.
Verification
On
jolt v0.8.0-45-g5e0e7a96:bb test: 29 tests, 78 assertions, 0 failuresbb smokes: all 27 live-GTK smokes greenbb verify: passesjolt flightsruns againThe toolchain SHA is recorded alongside each result in the docs, since "v0.8.0" is now ambiguous across dozens of commits.
Not included
.github/workflows/ci.ymlinstalls jolt with an unpinned fallback tolatest, so v0.8.0 publishing overnight moved CI onto a jolt with two breaking changes on a tree nobody touched. Pinning it is worth doing and is left out of this PR deliberately, as a separate concern.