見出し画像

Lean4: Version 4.28.0 release/update and 4.29.0-rc1

rc1 無くなってますね。

リリースノート


前記事


変更点(ざっくり)

🐺賢狼に調べてもらいました。


🐺賢狼:

Lean 4.28.0(2026-02-17)の release note から、「開発者が体感しやすい主な変更点」を要点だけ抜き出してまとめるぞい。


言語・エラボレータ周り(Language)

  • `match` の一般化(generalization)が賢くなり、これまで落ちていた例が通るようになった。挙動を戻したい場合は `match ... (generalizing := false)` を付けて旧挙動にできる。

  • Mathlib 由来の依存関係管理コマンドが本体へ取り込まれた
    `#import_path Foo`(import の鎖を表示)、`assert_not_exists Foo`、`assert_not_imported Module`、`#check_assertions` など。

  • `mvcgen with tac` が `tac` 失敗時に失敗するようになり、挙動がより直感的に(旧挙動は `mvcgen with try tac`)。

  • モジュール/可視性・回帰の修正(public inductive を mutual 内で宣言したときの問題、`declare_syntax_cat` のローカル宣言が import エラーを誘発する問題、など)や、`where` 節での Verso docstring 対応が入った。


タクティク(Tactics)

  • `simp`/`simp_all`/`dsimp` に `+locals` オプション:そのファイル内定義を自動で unfold 対象へ(同様に `grind` にも `+locals`)。

  • 並列に走らせて最初に成功したものを採用する `first_par` コンビネータが追加。

  • `Sym.simp`(構造的 simplifier 系)で `have` telescope の扱い・性能改善、`simpForall`/`simpArrow` 実装など、高速化と機能強化がまとまって入っている


標準ライブラリ(Library)

  • `BitVec.cpop`(popcount)追加など、BitVec 周りが強化。

  • キャンセル(cancellation)のための `Context` 型が追加。

  • `Int` の range 補題が増えて `Nat` 側との対称性が改善、Iterator API は `IteratorCollect` 型クラス削除で簡素化

  • get-elem tactic が range の subarray を扱えるようになるなど、配列/ループ周りの使い勝手も改善。


コンパイラ・ランタイム(Compiler)

  • 特殊化(specializer)の強化、`Quot.lift` の LCNF 変換での panic 回避、`getLine` 最適化など、正しさ+性能の改善が複数。

  • 線形性(linear/owned 変数)を壊しうる最適化の修正:`floatLetIn` が parser の `ParserState` を非線形化してしまうケースを防ぐ。

  • SCC 分割や Decidable の定数畳み込み前倒し、サブ項抽出の superlinear 修正、ASAN 下の `IO.Process.spawn` でのデッドロック回避など。


ドキュメント(Documentation)

  • `ffi.md` をマニュアル参照リンクへ置換、iterator 文書の docstring 補完。

  • tactic docs の「先頭トークン自動検出」が頑丈に、`let rec` tactic の補完/ドキュメントも有効化。


LSP/サーバ(Server)

  • `lakefile.toml` の JSON Schema 修正(`require.git` の table 形式許可)、補完/あいまい検索の高速化。

  • async theorem が絡む go-to-definition の修正、NeoVim の code action 修正など、IDE 体験の地味に痛い不具合が改善


Lake(ビルド/パッケージ管理)

  • `meta import` の推移閉包の扱いを Lean 本体の期待に合わせて修正。

  • `lakefile.lean` の数値オプションで `.ofNat` が不要に。

  • `lake shake` が組み込みコマンド化、artifact cache のデフォルト挙動改善、`lake build --no-build` の終了コード修正、`lake query` の出力修正、依存での `+mod` 復活など。


そのほか & FFI

  • Lean の挙動変更を追跡するための bisect 支援 Python スクリプト、CI artifact ダウンロード用スクリプト、`lean4checker` を elan 既知の `leanchecker` として提供、などツール面が強化。

  • FFI:Lean ヘッダに対してビルドするライブラリで `-fwrapv` 必須を撤廃


全体としては、「言語コアの挙動改善(特に `match`)」「依存管理コマンドの本体取り込み」「simp/grind 周りの UX 改善」「Lake/LSP の実務的な不具合修正+体感速度改善」が柱じゃな。

DkMath

現在、活用中のソースコードでの影響はありませんでした。

リポジトリ


2026/02/18 15:34

D.

#Lean #Lean4 #Mathlib #Mathlib4 #release #リリース



Appendix

DkMath リポジトリ

こちらも、main / nightly 共に Lean 4.28.0 + Mathlib4 に対応。
main においては、非推奨 補題名 警告 が出てしまっていますが nightly では、出なくなって使わなくなったのでしょう。合流すれば問題ないです。


いいなと思ったら応援しよう!

D. 🐺賢狼👨‍✈️Copilot のご飯代を、私には🍺代を。 または 宇宙式 $N+u^d=(P+u)^d$ を使って新しい発見を!