Repository navigation
Declare the stubs of src/methods.jl public and require Julia 1.11 - #33
Merged
Merged
Conversation
Every function stub of src/methods.jl that is not exported, and initialtime and finaltime, is named in one public statement. reset! and value stay out of it: src/data/state_variables.jl exports them, and Julia refuses a public declaration for an exported name. test/public.jl reads the stubs from src/methods.jl and asserts that each one is public, so a stub added without a public entry fails. The public keyword needs Julia 1.11: the julia bound is 1.11 and the version is 0.15.0. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The stub regular expression now accepts leading whitespace and anything after the closing end, so that a stub line with a trailing comment or an indent is checked too. KNOWN_ISSUES.md records K6: the test does not fail for a public name with no stub. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The stub pattern no longer captures a name with an argument list, so an empty method such as function f(x) end is not read as a stub. K6 goes: Aqua's undefined_exports check, which runs in core, already fails for a public name with no definition, because names(m) lists the public names from Julia 1.11. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The declarations, compatibility metadata, documentation, and regression coverage are consistent and complete.
Review effort: Balanced
Findings: None
What changed in this PR
Declares GeometricBase extension stubs public and raises the minimum Julia version to 1.11.
Changes:
- Adds public API declarations for 42 names.
- Adds regression coverage for stub visibility.
- Bumps the package to 0.15.0 and documents the breaking compatibility change.
| File | Description |
|---|---|
src/methods.jl |
Declares non-exported extension points public. |
test/public.jl |
Verifies every stub is public. |
test/runtests.jl |
Adds public-name tests to the core suite. |
Project.toml |
Requires Julia 1.11 and sets version 0.15.0. |
CHANGELOG.md |
Documents the public API and compatibility changes. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #33 +/- ##
==========================================
- Coverage 78.61% 77.40% -1.22%
==========================================
Files 20 18 -2
Lines 449 447 -2
==========================================
- Hits 353 346 -7
- Misses 96 101 +5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
Part B of the plan "Make the GeometricBase stubs public", for GeometricBase.
Summary
src/methods.jlhas onepublicstatement after itsexportline. It names every function stub of the file that noexportline ofsrc/names, andinitialtimeandfinaltime: 42 names. The six exported stubs stay exported:datatype,timetype,arrtypeandequtypefromsrc/methods.jl, andreset!andvaluefromsrc/data/state_variables.jl. Julia refuses apublicdeclaration for an exported name.exportline changes.test/public.jl, in thecoregroup. It readssrc/methods.jl, finds everyfunction <name> endline, and assertsBase.ispublic(GeometricBase, name)for each, and forinitialtimeandfinaltime. A stub added later without apublicentry fails it.Project.toml:julia = "1.11"(thepublickeyword needs 1.11) andversion = "0.15.0".test/Project.tomlanddocs/Project.tomlhave nojuliabound and get none. The stdlib boundUnicode = "1.10"does not change.CHANGELOG.md: a### Breaking Changesentry under[Unreleased], because Julia 1.10 cannot load 0.15. Julia 1.10 users keep 0.14.12.Test runs
minjob is the check for the floor.docs/src/index.mduses@autodocs.test/public.jl: 5 CAUGHT, 0 SURVIVED (one name deleted frompublic; a new stub with no entry; a new stub with a trailing comment; a new indented stub; thepublicstatement moved into a comment).Advisor decisions
Decided (advisor, 2026-10-01, high): Clause 1 names every stub of
src/methods.jlthat noexportline ofsrc/names, plusinitialtimeandfinaltime: 42 names. Six stubs are exportedand so stay out of
public(Julia refuses a name that is both):datatype,timetype,arrtypeand
equtypefromsrc/methods.jl, andreset!andvalue, whichsrc/data/state_variables.jl:8exports. The test of clause 3 still covers all six.
Critic
Round 1: Critic 1a PASS, Critic 1b PASS. Both judged origin/main...HEAD at abf6350.
publicstatement afterexportfunction newstub endpublicAfter the PASS, one test-only fix, which the dispatcher authorised: the stub regular expression of
test/public.jlnow accepts an indented stub line and a trailing comment (the critics' mutant D4 survived the first form). The fix commit is c6c51c6. With it, D4 and an indented-stub mutant are CAUGHT, and the affected tests pass.Critic 1a also noted that
test/public.jldoes not fail for apublicname with no stub. Aqua'sundefined_exportscheck, which runs incore, catches that case: a probe module withpublic notdefined_stubgivesAqua.undefined_exports(K6Probe) == [Symbol("Main.K6Probe.notdefined_stub")]on Julia 1.13.1 with Aqua 0.8.18. So no known issue is recorded for it.Known issues added
None.
Pre-PR verification
Verdict: clear to open — 0 unresolved
Fixed
test/public.jl:9: the stub pattern(\S+)also matched an empty method with arguments (function f(x) endcapturedf(x)). It is now([^\s(]+). The file still finds all 46 stubs. Probes still match an indented stub and a stub with a trailing comment, and they skip a commented-out stub andfunction f(x) end.KNOWN_ISSUES.md: the K6 entry from this branch is removed. Aqua'sundefined_exportsalready fails for apublicname with no definition. It runs incorethroughAqua.test_all, andnames(m)listspublicnames on Julia 1.11.9 and 1.13.1.Unresolved: none.
Pre-existing: none found.
Checked and clean
initialtime,finaltime. No name is undefined. The source loads in a fresh Julia 1.11.9 process with 42 public, non-exported names. The CIminjob reads the new floor from[compat].Aqua.test_piraciesandAqua.test_all(with the known broken ambiguity check, issue Method ambiguity between range for StateWithError and Base.range #22) pass.fatou lintis clean on the changed.jlfiles.[Unreleased]entry under### Breaking Changesis present and matches the code.test-layout.jl --checkpass.test/public.jlpasses on its own.Not checked
minCI job covers it; the local run failed on an SSL error during an artifact download.docs/or docstring change.🤖 Generated with Claude Code