Nanosoldier.jl icon indicating copy to clipboard operation
Nanosoldier.jl copied to clipboard

@nanosoldier bisect

Open LilithHafner opened this issue 2 years ago • 3 comments
trafficstars

It would be lovely to trigger nanosoldier to bisect a MWE. For example

@nanosoldier bisect

using Test

a = 0:1/24:365 - 1/48 - 0.001
b = 0:1/24:365 - 1/48
typeof(a) # StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}

@test a==b  # true
@test collect(a)==collect(b) # false!!!

Could run that snippet on various Julia versions and search for when #50039 was introduced, reporting the relevant PR or commit in a comment as well as a link to the full logs which would include the error messages and/or debug output produced form running it on each tested version. It would be helpful performance-wise to cache pre-built versions of Julia on the nanosoldier machines and do bisection in a cache-aware manner. Start and endpoints for the bisection could be optionally provided and default to 1.0.0 and the lastest master.

LilithHafner avatar Aug 08 '23 21:08 LilithHafner

That's going to require some significant rework of Nanosoldier.jl, which really isn't built for that. I personally don't think it's that useful, with existing tools like git bisect and manyjulias to cache Julia builds. If anything, I think a simple non-Nanosoldier.jl based bot on top of git bisect and manyjulias is much easier, if anybody would want to build that.

maleadt avatar Aug 09 '23 06:08 maleadt

Update: I've made a bot that does this for all Julia packages hosted on github. Simply comment @LilithHafnerBot bisect() on an issue or PR anywhere on github. See https://github.com/LilithHafner/Bisect.jl for docs.

Unfortunately it does not bisect the JuliaLang/julia repo because the free github actions minutes/storage are not enough to store many Julia builds or build repeatedly from source.

LilithHafner avatar Feb 02 '24 00:02 LilithHafner

⚠️ Parse Error

I found @LilithHafnerBot bisect(<args>) but need a code block to proceed. Provide one like this

```julia
@assert true
```

LilithHafnerBot avatar Feb 02 '24 00:02 LilithHafnerBot