fix: run @[init] declarations in declaration order#10217
fix: run @[init] declarations in declaration order#10217Kha merged 2 commits intoleanprover:masterfrom
@[init] declarations in declaration order#10217Conversation
|
Mathlib CI status (docs):
|
|
Reference manual CI status:
|
fd9a5a2 to
cfa0cf8
Compare
|
@Rob23oba Could you check whether this resolves the issue? |
cfa0cf8 to
e8a8ab2
Compare
|
!bench |
src/Lean/Attributes.lean
Outdated
| let r : Array (Name × α) := m.foldl (fun a n p => a.push (n, p)) #[] | ||
| r.qsort (fun a b => Name.quickLt a.1 b.1) |
There was a problem hiding this comment.
| let r : Array (Name × α) := m.foldl (fun a n p => a.push (n, p)) #[] | |
| r.qsort (fun a b => Name.quickLt a.1 b.1) | |
| -- The elements are already ordered by `Name.quickCmp`, no need to sort them | |
| (m : TreeMap Name α Name.quickCmp).toArray |
That's what I meant with the "why not just fun m => m.toArray" thing. I suppose this is really an unrelated change though. Otherwise I think this fixes the problem in pretty much all cases; but for example doesn't help against:
def a_init : IO Nat :=
pure 5
@[noinline]
opaque a : Nat
def b_init : IO Nat :=
pure (a + 7)
@[init b_init]
opaque b : Nat
attribute [init a_init] abut maybe we should just simply forbid that case? Regardless it would be nice to see how this impacts memory and performance.
|
Here are the benchmark results for commit e8a8ab2. Benchmark Metric Change
=============================================================
+ bv_decide_inequality.lean maxrss -1.4% (-27.0 σ)
+ lake build clean task-clock -1.2% (-70.3 σ)
- phashmap.lean instructions 1.2% (202.6 σ)
+ stdlib grind linarith -16.8% (-24.3 σ) |
|
Huh; I assume not iterating through all constants is making the difference here? |
|
I'm not sure how significant any of that is but the phashmap, which is a bit surprising |
|
Maybe it has to do with the |
|
I don't really see how |
|
Yeah this was basically the only parametric attribute I could find that might be used more frequently; although I don't know either how such a difference would happen; maybe this is just noise? Maybe try merging nightly-with-mathlib and !benching again? |
|
!bench |
|
Here are the benchmark results for commit dfcd414. Benchmark Metric Change
=====================================
- channel.lean unbounded_seq 1.3% |
* fix deprecations * remove upstreamed defs * two fixes * fix merge * fix merge * revert sqrt changes * ugh * fix from nightly-testing * fix merge * remove test deleted on master * fix test * note about test * . * Update lean-toolchain for leanprover/lean4#10194 * chore: bump to nightly-2025-09-02 * adjust to upstream changes * fix * fix * long line * Use Mathlib's nightly toolchain to run docgen in the nightly test * simpNF linter * whitespace * Update lean-toolchain for testing leanprover/lean4#10217 * Correct the working directory: should be 'docbuild' * Rework the grind regression report as a nightly-testing regression report It should still report the same things, but now as one message for all regression kinds * feat(Cache): download speeds & more info on errors * fix(Cache): add base download failure message * fixes * turn off linter * adaptation note * turn off linter.nightlyRegressionSet * chore: adaptations for nightly-2025-09-02 * Update lean-toolchain for testing leanprover/lean4#10059 * Update lean-toolchain for leanprover/lean4#10217 * chore: bump to nightly-2025-09-03 * Remove the erroring nightly regression report, we'll develop this on another branch. * fixes * update LibraryRewrite test * Update lean-toolchain for leanprover/lean4#10059 * chore: bump to nightly-2025-09-04 * fix * chore: bump to nightly-2025-09-05 * chore: adaptations for nightly-2025-09-05 * chore: bump to nightly-2025-09-06 * Update lean-toolchain for testing leanprover/lean4#10271 * Adapt to leanprover/lean4#10271 * Bump batteries * Update lean-toolchain for leanprover/lean4#10271 * chore: bump to nightly-2025-09-07 * nolint unusedArguments * Merge master into nightly-testing * chore: bump to nightly-2025-09-08 * fixes * chore: bump to nightly-2025-09-09 * fix thing * Update lean-toolchain for testing leanprover/lean4#10306 * temporarily remove test * adaptation note * master version of Cache/Requests.lean * chore: bump to nightly-2025-09-10 * adaptation note * chore: adaptations for nightly-2025-09-10 * merge lean-pr-testing-10059 * bump toolchain manually?? * restore test * chore: bump to nightly-2025-09-11 * lake update * fix * adaptations for leanprover/lean4#10307 * remove validateDocComment in ToAdditive * remove upstreamed Function.Injective * update assert_not_exists * oops * comment out DeriveTraversable * chore: replace some grind attibutes with grind_pattern, to be robust for future heuristic changes * suggestions from Rob23oba * lshake --fix * fix bad shake * shake --update * . * chore: adaptations for nightly-2025-09-11 * chore: bump to nightly-2025-09-12 * Revert "oops" This reverts commit 517b832. * Revert "comment out DeriveTraversable" This reverts commit 0460eb8. * fix DeriveTraversable * add `binders` fields * fix * fixes * update manifest * fixes * fixes * fixes * chore: bump to nightly-2025-09-13 * fixes * fixes * fixes * fixes * fixes * fixes * fixes * remove adaptation note * Update lean-toolchain for testing leanprover/lean4#10373 * fixes * chore: bump to nightly-2025-09-14 * Update lean-toolchain for testing leanprover/lean4#10377 * fix * fix * fix * fix emrge * update batteries * chore: adaptations for nightly-2025-09-14 * Merge master into nightly-testing * Update Mathlib/Data/List/Basic.lean * Merge master into nightly-testing * chore: adaptations for nightly-2025-09-14 * chore: bump to nightly-2025-09-15 --------- Co-authored-by: Rob23oba <robin.arnez@web.de> Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Kim Morrison <kim@tqft.net> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Anne C.A. Baanen <vierkantor@vierkantor.com> Co-authored-by: Mac Malone <mac@lean-fro.org> Co-authored-by: mathlib4-bot <github-mathlib4-bot@leanprover.zulipchat.com> Co-authored-by: Paul Reichert <6992158+datokrat@users.noreply.github.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Kim Morrison <477956+kim-em@users.noreply.github.com>
This PR ensures
@[init]declarations such as frominitializeare run in the order they were declared on import.Fixes #10175