-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lower compat to 1.6 #4
Conversation
And off it goes! |
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## main #4 +/- ##
==========================================
+ Coverage 60.00% 60.60% +0.60%
==========================================
Files 1 1
Lines 100 99 -1
==========================================
Hits 60 60
+ Misses 40 39 -1
☔ View full report in Codecov by Sentry. |
Oh, these failures due to |
By the looks of it the error is the same on all previous versions, and pretty fixable:
|
Well yes, but that's just hiding the true failures in the package itself, as those are from a macro expansion that just didn't exist before 1.9. You can try removing that |
Ok, cursory local testing with 1.6.7 and 1.8.5 suggests simply removing that UX convenience makes it work on 1.6! So if you add that removal to this PR (possibly behind a version check, to keep the nice printing on 1.9+?) and if CI agrees, we can do this :) Seems like the code is unexpectedly less brittle than I thought. Once it lands here, I'll make a PR to General to change the compat notice there too. |
What "UX convenience are you referring to?
Why does it require a PR to General? You're gonna tag a new version anyway, right? |
Right, that's true - then this will land with fixing #2. Seems like CI still doesn't like the change though - there are |
No rush! It's a cool package so I'm happy to lend a hand but I didn't want to pressure you in any way |
Yeah this is getting weird - I can't reproduce the failures locally at all, only in CI 🤔 Are you able to get those failures locally? |
Tests pass locally on my Mac with Julia 1.6... |
Although I don't understand why |
A non-Boolean result in The underlying issue would be the same; CI is getting a |
Ok, got a breadcrumb - I can reproduce the failure locally on 1.6.7 by doing julia> import Pkg
julia> d = Dict{Symbol, Any}(:coverage => true, :julia_args => ["--check-bounds=yes"]);
julia> Pkg.test(;d...)
Hah! Launching julia with
and running this: julia> using RequiredInterfaces
julia> const RI = RequiredInterfaces
RequiredInterfaces
julia> abstract type TestInterface end
julia> struct TestViolator <: TestInterface end
julia> @required TestInterface testfunc(::Int, ::TestInterface)
testfunc (generic function with 1 method)
julia> RI.check_interface_implemented(TestInterface, TestViolator)
true and we got a reproducer! |
Minimizing further, the
so only if we don't produce coverage at all, it works as expected. This is fixable though! |
This is why I don't play with macros 🤓 |
Alright, this is implemented on
Oh the macro had nothing to do with this - the underlying issue was that pre this PR in Julia, coverage tracking was done with a The new version is robust to that and works accross 1.6-1.9, so that's good - but it will undoubtedly break in the future again. My gut says that the only proper fix is to use an abstract interpreter for this, but that'll have to wait until the next Julia LTS including the (by then hopefully stable) API is released. |
Awesome, thanks @Seelengrab!
|
Well, I know for a fact that the current code works on 1.10, and since I usually run a close-to-nightly build anyway, I'm likely going to notice if it breaks :) Retroactively capping versions seems less hassle than testing old versions for compatibility with new julia versions. We could have it run nightly CI once per day?
Will do - I'm just waiting on the doc CI finishing up! |
Maybe a good solution |
Alright, it's released! |
You wanna see where it breaks, @Seelengrab? I'll show you where it breaks 😈