Skip to content

Julia 1.10 floor and dependency removal (breaking: Julia floor) - #137

Open
alecloudenback wants to merge 6 commits into
refactor/01-hygienefrom
refactor/02-deps
Open

alecloudenback wants to merge 6 commits into
refactor/01-hygienefrom
refactor/02-deps

Conversation

@alecloudenback

Copy link
Copy Markdown
Member

Raises the minimum Julia to 1.10 (current LTS) and removes five dependencies. Six commits, one per item.

Changes

  • julia = "1.10" in Project.toml; CI matrix is 1.10 and 1.
  • Pkg replaced by the Artifacts stdlib (it was a hard runtime dependency used only for artifact"...").
  • UnPack replaced by native (; a, b) = m destructuring at all 30 sites. Laws with a field named m now call their model argument model so the field does not shadow it.
  • Requires replaced by a package extension: the CSV loader lives in ext/MortalityTablesCSVExt.jl and is activated by using CSV.
  • Memoize replaced by an explicit Dict cache guarded by a ReentrantLock in readXTbML.
  • Parsers dropped in favor of Base.parse, which tolerates the surrounding whitespace in the SOA files.

Testing

  • Full suite green on Julia 1.12 and 1.10.
  • New regression test that readXTbML returns the identical object for repeated reads.
  • The full SOA table test set passes unchanged after the Parsers removal.

Stacked on #136 (base branch refactor/01-hygiene). Merge the stack in order; once the base PR is merged and its branch deleted, GitHub retargets this PR to master.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JFnc6pvofuNXTW2xdCcewT

alecloudenback and others added 6 commits September 11, 2026 17:48
1.10 is the current LTS. The CI matrix now tests 1.10 and the latest
release.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFnc6pvofuNXTW2xdCcewT
Pkg was a hard runtime dependency used only for the artifact string
macro, which the Artifacts stdlib provides directly.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFnc6pvofuNXTW2xdCcewT
All 30 sites were in the parametric law catalogue. The laws whose
parameters include a field named m now call their model argument
model so the field does not shadow it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFnc6pvofuNXTW2xdCcewT
The CSV loader now lives in ext/MortalityTablesCSVExt.jl and is
activated by `using CSV`. The __init__ hook and the Requires
dependency are gone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFnc6pvofuNXTW2xdCcewT
Parsed tables are cached by path in a Dict guarded by a ReentrantLock.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFnc6pvofuNXTW2xdCcewT
Base.parse tolerates the surrounding whitespace found in the SOA XML
and CSV files, and the full SOA test set passes unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFnc6pvofuNXTW2xdCcewT

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant