diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 64a9596..492e8db 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -11,7 +11,9 @@ jobs: fail-fast: false matrix: version: - - '*' # Latest Release + - '1.9' + - release + - rc os: - ubuntu-latest - windows-latest @@ -20,11 +22,10 @@ jobs: - x64 steps: - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v2 + - uses: julia-actions/install-juliaup@v2 with: - version: ${{ matrix.version }} - arch: ${{ matrix.arch }} - - uses: julia-actions/cache@v1 + channel: ${{ matrix.version }} + - uses: julia-actions/cache@v2 - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 - uses: julia-actions/julia-uploadcoveralls@v1 @@ -36,13 +37,12 @@ jobs: name: Test Min Compat Bounds runs-on: ubuntu-latest steps: - - uses: julia-actions/julia-downgrade-compat@v1 - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v2 + - uses: julia-actions/install-juliaup@v2 with: - version: 1.9 - - uses: julia-actions/cache@v1 + channel: "1.9" + - uses: julia-actions/cache@v2 + - uses: julia-actions/julia-downgrade-compat@v1 - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 @@ -51,8 +51,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v1 - - uses: julia-actions/cache@v1 + - uses: julia-actions/install-juliaup@v2 + with: + channel: release + - uses: julia-actions/cache@v2 - uses: "./" with: prefix: "cd test/Example.jl &&" @@ -62,8 +64,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: julia-actions/cache@v1 - - uses: julia-actions/setup-julia@v1 + - uses: julia-actions/install-juliaup@v2 + with: + channel: "1.10" + - uses: julia-actions/cache@v2 - run: julia --project=docs docs/make.jl env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Project.toml b/Project.toml index fd2a84a..90a60f3 100644 --- a/Project.toml +++ b/Project.toml @@ -7,6 +7,7 @@ version = "0.6.0" BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" CodecZlib = "944b1d66-785c-5afd-91f1-9de20f533193" +Compat = "34da2185-b29b-5c13-b0c7-acf172513d20" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" LibGit2 = "76f85450-5226-5b5a-8eaa-529ad045b433" @@ -28,17 +29,18 @@ BSON = "0.3" BenchmarkTools = "1.5" CUDA = "5" CodecZlib = "0.7" -Dates = "1.9" +Compat = "4.11, 4" +Dates = "1.9, 1.10" JSON = "0.21" -LibGit2 = "1.9" +LibGit2 = "1.9, 1.10" +NVTX = "0.3.2" +Pkg = "1.9, 1.10" +Profile = "1.9, 1.10" Revise = "3" -NVTX = "0.3" -Pkg = "1.9" -Profile = "1.9" -Statistics = "1.9" -Test = "1.9" -UUIDs = "1.9" -julia = "1.9" +Statistics = "1.9, 1.10" +Test = "1.9, 1.10" +UUIDs = "1.9, 1.10" +julia = "1.9, 1.10" [extras] CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" diff --git a/src/PkgJogger.jl b/src/PkgJogger.jl index 132fe6c..c8560c0 100644 --- a/src/PkgJogger.jl +++ b/src/PkgJogger.jl @@ -11,10 +11,11 @@ using LibGit2 using Statistics using Test using Profile +using Compat: @compat export @jog, @test_benchmarks +@compat public judge, ci, load_benchmarks, save_benchmarks, locate_benchmarks, tune!, getsuite, profile -import Base: PkgId """ Packages that are required by modules created with [`@jog`](@ref) @@ -22,8 +23,9 @@ Generated modules will access these via `Base.loaded_modules` """ const JOGGER_PKGS = [ Base.identify_package(@__MODULE__, string(@__MODULE__)), - PkgId(UUID("6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"), "BenchmarkTools"), - PkgId(UUID("cf7118a7-6976-5b1a-9a39-7adc72f591a4"), "UUIDs"), + Base.PkgId(UUID("6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"), "BenchmarkTools"), + Base.PkgId(UUID("cf7118a7-6976-5b1a-9a39-7adc72f591a4"), "UUIDs"), + Base.PkgId(UUID("34da2185-b29b-5c13-b0c7-acf172513d20"), "Compat"), ] const PKG_JOGGER_VER = VersionNumber( diff --git a/src/ci.jl b/src/ci.jl index 43ce966..ca8a8d0 100644 --- a/src/ci.jl +++ b/src/ci.jl @@ -50,11 +50,9 @@ function sandbox(f, pkg) current_load_path = Base.LOAD_PATH # Construct PackageSpec for self - self = PackageSpec( - name = JOGGER_PKGS[1].name, - uuid = JOGGER_PKGS[1].uuid, - path = Base.pkgdir(PkgJogger), - ) + self_pkgid = Base.identify_package(@__MODULE__, string(@__MODULE__)) + self = PackageSpec(; name = self_pkgid.name, uuid = self_pkgid.uuid) + path = pkgdir(@__MODULE__) # Locate benchmark project # TODO: Use Sub-project https://github.com/JuliaLang/Pkg.jl/issues/1233 @@ -118,7 +116,7 @@ function save_benchmarks(filename, results::BenchmarkTools.BenchmarkGroup) "datetime" => Dates.now(), "benchmarks" => results, "git" => git_info(filename), - "pkgjogger" => PkgJogger.PKG_JOGGER_VER, + "pkgjogger" => pkgversion(@__MODULE__), ) # Write benchmark to disk diff --git a/src/jogger.jl b/src/jogger.jl index dd658b4..bac447d 100644 --- a/src/jogger.jl +++ b/src/jogger.jl @@ -47,6 +47,7 @@ macro jog(pkg) if !isdir(bench_dir) error("No benchmark directory found for $pkg. Expected: $bench_dir") end + # Generate Using Statements using_statements = Expr[] for pkg in JOGGER_PKGS @@ -64,7 +65,6 @@ macro jog(pkg) end # Strip redundant quote blocks and flatten modules into a single single Vector{Expr}` - # This is needed to avoid wrapping module blocks in `begin .. end` blocks suite_exp = mapreduce(Base.Fix2(getfield, :args), vcat, suite_modules) # String representation of the Jogger module for use in doc strings @@ -76,6 +76,9 @@ macro jog(pkg) using $pkg $(using_statements...) + # The public interface of a Jogger + Compat.@compat public suite, benchmark, run, profile, save_benchmarks, load_benchmarks, judge, BENCHMARK_DIR + # Set Revise Mode and put submodules here __revise_mode__ = :eval $(suite_exp...) @@ -172,7 +175,7 @@ macro jog(pkg) """ save_benchmarks(results::BenchmarkGroup)::String - Saves benchmarking results for $($pkg) to `BENCHMARK_DIR/trial/uuid4().bson.gz`, + Saves benchmarking results for $($pkg) to `BENCHMARK_DIR/trial/UUIDs.uuid4().bson.gz`, and returns the path to the saved results > Meta Data such as cpu load, time stamp, etc. are collected on save, not during @@ -314,7 +317,7 @@ function build_module(s::BenchModule) # If Revise.jl has been loaded, use it to track changes to the # benchmarking module. Otherwise, don't track changes. - revise_id = PkgId(UUID("295af30f-e4ad-537b-8983-00126c2a3abe"), "Revise") + revise_id = Base.PkgId(UUID("295af30f-e4ad-537b-8983-00126c2a3abe"), "Revise") if haskey(Base.loaded_modules, revise_id) revise_exp = :(Base.loaded_modules[$revise_id].track($modname, $(s.filename))) else