Skip to content

Commit 527c864

Browse files
authored
chore: bump toolchain to v4.33.0-rc2 (#909)
1 parent d9dec63 commit 527c864

3 files changed

Lines changed: 48 additions & 9 deletions

File tree

Manual/Releases/v4_33_0.lean

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ open Verso.Genre
1515
open Verso.Genre.Manual
1616
open Verso.Genre.Manual.InlineLean
1717

18-
#doc (Manual) "Lean 4.33.0-rc1 (2026-07-15)" =>
18+
#doc (Manual) "Lean 4.33.0-rc2 (2026-08-03)" =>
1919
%%%
2020
tag := "release-v4.33.0"
2121
file := "v4.33.0"
@@ -26,14 +26,14 @@ These release notes describe a _release candidate_, not the final release.
2626
They may be incomplete and are subject to change.
2727
:::
2828

29-
For this release, 194 changes landed.
29+
For this release, 208 changes landed.
3030
In addition to the 53 feature additions,
31-
and 41 fixes listed below,
31+
and 50 fixes listed below,
3232
there were 12 refactoring changes,
3333
11 documentation improvements,
3434
21 performance improvements,
3535
6 improvements to the test suite,
36-
and 50 other changes.
36+
and 55 other changes.
3737

3838
# Highlights
3939

@@ -215,6 +215,9 @@ Relatedly, [#13637](https://github.com/leanprover/lean4/pull/13637) splits the o
215215

216216
````markdown
217217

218+
- [#14498](https://github.com/leanprover/lean4/pull/14498)
219+
fixes a kernel unsoundness: just as for definitions and theorems, an `opaque` declaration's value must not contain fvars.
220+
218221
- [#14352](https://github.com/leanprover/lean4/pull/14352)
219222
provides the experimental `postprocess_traces tracePostprocessor in cmd` command, which is useful for working with large trees of trace nodes. It runs the command `cmd` and then transforms the traces using a function `tracePostprocessor`. The transformation can affect which nodes are expanded or collaped by default, it can change messages of the trace nodes, and it can add or delete nodes.
220223
Example:
@@ -434,6 +437,9 @@ Relatedly, [#13637](https://github.com/leanprover/lean4/pull/13637) splits the o
434437

435438
````markdown
436439

440+
- [#14618](https://github.com/leanprover/lean4/pull/14618)
441+
fixes a `grind` regression on goals that use a bit-vector literal written with `#` syntax under a quantifier, such as `example (f g : Nat → BitVec 2) (h : ∀ n, f n = g n ||| 1#2) : f 0 = g 0 ||| 1#2 := by grind`. The tactic failed with a kernel error instead of closing the goal.
442+
437443
- [#14393](https://github.com/leanprover/lean4/pull/14393)
438444
implements `grind` propagators that evaluate `BitVec` operations on literals
439445

@@ -699,6 +705,39 @@ Relatedly, [#13637](https://github.com/leanprover/lean4/pull/13637) splits the o
699705

700706
```markdown
701707

708+
- [#14633](https://github.com/leanprover/lean4/pull/14633)
709+
makes `infer_lambda` and `infer_let` check a binder's type, and for `let` also its value, before adding the corresponding declaration to the local context, which is what `infer_pi` already did. No valid declaration changes behavior.
710+
711+
- [#14632](https://github.com/leanprover/lean4/pull/14632)
712+
is a hardening pass over the kernel. None of these commits fixes a bug reachable from ordinary Lean code: each one takes an invariant the kernel already depends on and checks it locally instead of assuming it holds elsewhere. The intent is that a future mistake in a neighbouring part of the kernel surfaces as a clean error rather than being amplified.
713+
714+
- [#14631](https://github.com/leanprover/lean4/pull/14631)
715+
makes the kernel compare the structure name when deciding whether two projection expressions are definitionally equal. Both `type_checker::is_def_eq_core` and `equiv_manager::is_equiv_core` compared only the projection index and the projected expression, ignoring `proj_sname`.
716+
717+
- [#14621](https://github.com/leanprover/lean4/pull/14621)
718+
makes the kernel recheck the declarations it adds to the environment after eliminating a nested inductive type.
719+
720+
- [#14616](https://github.com/leanprover/lean4/pull/14616)
721+
fixes a kernel bug: an inductive declaration could reference one of the auxiliary types the kernel generates when eliminating nested inductives, and end up with a stored constructor type that is ill typed. Such a declaration can only be produced with metaprogramming.
722+
723+
- [#14615](https://github.com/leanprover/lean4/pull/14615)
724+
makes the inductive checker test a resulting universe for zero up to normalization, so that `Sort (imax 1 0)` and `Sort 0` describe the same inductive type. The two spellings previously disagreed on whether a constructor field may carry data, on whether the recursor eliminates only into `Prop`, and on whether the type is a K-like reduction target. Only declarations produced with metaprogramming are affected, since the elaborator normalizes levels before the kernel sees them.
725+
726+
- [#14613](https://github.com/leanprover/lean4/pull/14613)
727+
fixes a kernel bug: a type whose sort is `Prop` only after universe normalization, such as `Sort (imax 1 0)`, was not recognized as a proposition, so the kernel allowed a non-proof field to be projected out of a proof. Such a declaration cannot be written in surface syntax and can only be produced with metaprogramming, and `nanoda` rejects it.
728+
729+
- [#14609](https://github.com/leanprover/lean4/pull/14609)
730+
fixes a soundness bug in the module system. A `partial` definition lost its `partial` marking when it crossed a module boundary, so downstream modules could use it from safe declarations. This issue can only be exploited using meta-programming.
731+
732+
- [#14608](https://github.com/leanprover/lean4/pull/14608)
733+
checks that declarations in a mutual block use the same universe parameters. The elaborator already enforces this invariant, but meta-programming can bypass it.
734+
735+
- [#14607](https://github.com/leanprover/lean4/pull/14607)
736+
adds a missing `check_no_metavar_no_fvar` checks to the kernel inductive type module. Without it, users could use metaprogramming to sneak in nested inductive declarations containing free variables or metavariables. Note that Comparator would catch this exploit, since lean4export refuses to export declarations containing free variables or metavariables.
737+
738+
- [#14577](https://github.com/leanprover/lean4/pull/14577)
739+
fixes a kernel bug where a nested inductive datatype whose parametric arguments are ill typed could be accepted.
740+
702741
- [#14354](https://github.com/leanprover/lean4/pull/14354)
703742
implements a minor optimization at `withExporting/withoutExporting`. When they call `modifyEnv` to toggle `Environment.isExporting`, and `MonadEnv` `MetaM`'s `modifyEnv` wipes all `Core` and `Meta` caches.
704743

lake-manifest.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "git",
66
"subDir": null,
77
"scope": "",
8-
"rev": "f6512cf6c7a8608cbc0e7a0af959a92206364657",
8+
"rev": "f62e380bcf8e11a2df70697916c8333bafdf3540",
99
"name": "verso",
1010
"manifestFile": "lake-manifest.json",
1111
"inputRev": "nightly-testing",
@@ -15,7 +15,7 @@
1515
"type": "git",
1616
"subDir": null,
1717
"scope": "",
18-
"rev": "56958b3901ca108830de34fbce6cecd4b5757c1f",
18+
"rev": "006dc1d1db18c5dc73d637c926cf132e88df05b5",
1919
"name": "illuminate",
2020
"manifestFile": "lake-manifest.json",
2121
"inputRev": "main",
@@ -25,7 +25,7 @@
2525
"type": "git",
2626
"subDir": null,
2727
"scope": "",
28-
"rev": "93b41f4b5a811532e38bd33a01ee360010e734d6",
28+
"rev": "61182a9187f497946b1a9170018e241c9500e6da",
2929
"name": "versowebcomponents",
3030
"manifestFile": "lake-manifest.json",
3131
"inputRev": "main",
@@ -55,7 +55,7 @@
5555
"type": "git",
5656
"subDir": null,
5757
"scope": "",
58-
"rev": "0076a9e8a3670d83c54c93414b2b26d3a8aba08d",
58+
"rev": "859ab80c32c5851151919a7d757d7c0c0b6e39d2",
5959
"name": "subverso",
6060
"manifestFile": "lake-manifest.json",
6161
"inputRev": "main",

lean-toolchain

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
leanprover/lean4:v4.33.0-rc1
1+
leanprover/lean4:v4.33.0-rc2

0 commit comments

Comments
 (0)