Releases: leanprover/lean4
v4.0.0
This is the first official release of Lean 4.
We intend to begin regular releases of Lean 4, providing a new "minor" version approximately monthly.
We do not yet make promises about backwards compatibility, although all breaking changes will be documented in RELEASES.md.
Please visit
- Our community forum on Zulip! This is the best place to get help, and find out what the Lean community is working on.
- The Lean language website for downloads and documentation.
- The homepage of the Lean Focused Research Organization for the team behind Lean.
- The Lean community website for help getting started, tutorials, and information about Mathlib.
- The Mathlib GitHub repository, for Lean's major mathematical library.
We have had over 2000 commits since the previous milestone.
% git log v4.0.0-m5..v4.0.0 --pretty="%an" | sort | uniq -c | sort -rn
833 Leonardo de Moura
662 Mac Malone
301 Sebastian Ullrich
228 Gabriel Ebner
215 Mario Carneiro
46 Henrik Böving
41 Ed Ayers
26 Scott Morrison
20 Siddharth Bhat
12 Wojciech Nawrocki
11 Bulhwi Cha
8 Adrien Champion
7 Chris Lovett
6 Alex J Best
5 Yuri de Wit
5 Tobias Grosser
4 Rishikesh Vaishnav
4 David Renshaw
3 pcpthm
3 int-y1
3 Patrick Massot
3 Martin Dvořák
3 Marcus Rossel
3 Elias Aebi
2 Pietro Monticone
2 Parth Shastri
2 Joachim Breitner
2 Jannis Limperg
2 James Gallicchio
2 François G. Dorais
2 Floris van Doorn
2 Eric Wieser
2 Connor Baker
2 Chris Hughes
2 Anders Christiansen Sørby
1 thorimur
1 mcdoll
1 locriacyber
1 joao guilherme
1 bc²
1 awson
1 ammkrn
1 Richard Musiol
1 Olivier Taïbi
1 Matthias Hetzenberger
1 Kaiyu Yang
1 Junyan Xu
1 Juan Pablo Romero
1 Jon Eugster
1 Jeremy Salwen
1 Jakob von Raumer
1 Gabriel Dahia
1 Fynn Schmitt-Ulms
1 Evgenia Karunus
1 Enrico Borba
1 Denis Gorbachev
1 David Thrane Christiansen
1 Arthur Paulino
1 Andrés Goens
v4.0.0-rc5
This is the fifth release candidate for the first official release of Lean 4.
It replaces v4.0.0-rc4, but has no changes except for the values of Lean.toolchain
and Lean.versionString
, which were not set correctly under the previous release process.
v4.0.0-rc4
This is the fourth release candidate for the first official release of Lean 4.
It replaces v4.0.0-rc3, which included a commit that broke Mathlib. Setting up better integrated testing is in the works!
What's Changed
Full Changelog: v4.0.0-rc3...v4.0.0-rc4
v4.0.0-rc3
This is the third release candidate for the first official release of Lean 4.
It replaces v4.0.0-rc2
, which was not properly prepared as a release, so #eval Lean.toolchain
and lean --version
gave incorrect answers. Additionally, there are changes to the CI for building releases and additions to RELEASES.md
for previously undocumented breaking changes.
What's Changed
- chore: remove binaries before building them by @tydeu in #2450
- doc: improve doc-string for Meta.getConst? by @semorrison in #2454
- fix: make sure
refine
preserves pre-existing natural mvars by @thorimur in #2435 - doc: fix typos by @marcusrossel in #2467
- fix: nix: If src is a dir, assume the lean file has the full path by @nomeata in #2465
- feat: add labels from comments by @semorrison in #2460
- feat: create release at lean4-pr-releases for each PR by @semorrison in #2448
- chore: update CI to create official releases by @semorrison in #2472
- test: basic tests exercising rw by @semorrison in #2397
- chore: use bash-compatible SemVer regex by @semorrison in #2475
- chore: add introduction to RELEASES.md by @semorrison in #2476
- chore: update README to reflect beginning stable releases by @semorrison in #2477
- chore: remove - from semver prerelease by @semorrison in #2481
- doc: update RELEASES.md for change to getConst? by @semorrison in #2482
Full Changelog: v4.0.0-rc2...v4.0.0-rc3
v4.0.0-rc2
This is the second release candidate for the first official release of Lean 4.
It replaces v4.0.0-rc1
as we decided that the experimental build/lake.lock
behaviour was too disruptive to users, and temporarily removed it.
What's Changed
- doc: fix mid priority doc comment by @digama0 in #2440
- doc: fix typo in Lake's Require DSL by @ConnorBaker in #2439
- chore: add PULL_REQUEST_TEMPLATE.md by @semorrison in #2443
- fix: include
moreLinkArgs
in precompile link by @tydeu in #2447 - feat:
lake env
w/o configuration + more by @tydeu in #2428 - chore: disable
lake.lock
(for now) by @tydeu in #2445
Full Changelog: v4.0.0-rc1...v4.0.0-rc2
v4.0.0-rc1
This is the first release candidate for the first official release of Lean 4.
What's Changed
- doc: finish Init.Prelude docs by @digama0 in #1445
- feat: implement USize.toUInt64 model by @digama0 in #1446
- feat: support
let mut x := e | alt
by @digama0 in #1455 - Drop last type parameter of
RpcEncoding
by @gebner in #1356 - fix: ac_rfl in subgoal by @pcpthm in #1453
- feat: go to definition for antiquot kinds by @digama0 in #1454
- fix: printing of integral JsonNumbers by @Vtec234 in #1456
- fix: use saturating casts in
lean_float_to_uint8
to avoid UB by @digama0 in #1458 - doc: explain acronym by @Vtec234 in #1463
- doc: typos and indentation by @digama0 in #1468
- feat: prefer syntax doc over elab when both are present by @digama0 in #1467
- feat: add lineEq parser alias by @digama0 in #1466
- fix: don't show NaN sign info in
Float.toString
by @digama0 in #1459 - feat: generalize ReaderT instances by @digama0 in #1447
- feat: simple uri escaping and unescaping by @lovettchris in #1452
- feat: add more float functions by @digama0 in #1460
- doc: documentation for Init.Coe by @digama0 in #1472
- doc: relocate doc strings from elab to syntax by @digama0 in #1471
- feat: add hover info for quot precheck by @digama0 in #1475
- fix: use resolveGlobalConstNoOverloadWithInfo more by @digama0 in #1477
- Join point checker by @hargoniX in #1476
- feat: attributes on notation by @digama0 in #1478
- feat: attributes on {macro,elab}(_rules) by @digama0 in #1483
- Collapsible traces with messages by @gebner in #1448
- doc: some SimplePersistentEnvExtension methods by @PatrickMassot in #1487
- fix:
decodeScientificLitVal?
parses 1.0e+1 correctly by @EdAyers in #1486 - feat: utilities for using scientific notation and floats in json by @EdAyers in #1464
- doc: Format by @EdAyers in #1489
- feat: add
@[inheritDoc]
attribute by @digama0 in #1480 - feat: add declId hover for syntax/notation/mixfix/elab/macro by @digama0 in #1482
- doc: documentation for Init.Notation by @digama0 in #1481
- fix: missing digits in scientific literal should be an error by @EdAyers in #1492
- feat: add join point detector by @hargoniX in #1495
- doc: documentation for Init.Tactics by @digama0 in #1490
- doc: documentation for Init.SizeOf by @digama0 in #1491
- Handle out of scope join points in the join point finder by @hargoniX in #1496
- fix: hygienic resolution of namespaces by @Kha in #1442
- fix: CI: create portable tarballs by @Kha in #1498
- fix: alternative tar fix by @Kha in #1499
- feat: blocking behavior on EOF for readLine by @goens in #1479
- chore: remove unexpanded coercion support from pp.analyze by @gebner in #1507
- doc: fix typo by @neelance in #1508
- fix: remove incorrect syntax coercion by @gebner in #1511
- feat: make
(_ : a = b)
hoverable in infoview by @gebner in #1506 - fix: remove duplicate OfNat Int instance by @pcpthm in #1509
- feat: Float.abs function by @fynnsu in #1514
- fix:
Core.transform
API and uses by @Kha in #1512 - feat: generalise forEachExpr by @EdAyers in #1504
- fix: use withContext at ac_rfl by @digama0 in #1519
- chore: remove outdated TODO by @digama0 in #1520
- doc:
ptrAdr
, JSON-RPC by @EdAyers in #1516 - feat:
dbgStackTrace
by @Kha in #1515 - Document, fix EOF behavior by @Kha in #1503
- fix: @[inheritDoc] on notation by @digama0 in #1523
- chore: remove
def implies
by @digama0 in #1530 - fix: prove decidable_of_decidable_of_eq without cast by @digama0 in #1531
- refactor: golf proof of funext by @digama0 in #1532
- doc: documentation for Init.Core by @digama0 in #1533
- chore: move Std -> Bootstrap by @digama0 in #1534
- doc: explanations for LCNF. by @bollu in #1538
- chore: move Bootstrap.System.Uri to Init by @digama0 in #1540
- refactor: generalize ShareCommon to a typeclass by @digama0 in #1537
- chore: move ShareCommon to Init / Lean by @digama0 in #1539
- refactor: Init.SimpLemmas proof golf / cleanup by @digama0 in #1544
- chore: move Bootstrap.Data -> Lean.Data by @digama0 in #1541
- Basic Pass Manager by @hargoniX in #1550
- Show parser docstrings independent of info tree by @Kha in #1517
- feat: add TR versions of Nat.{fold, any, all, repeat} by @digama0 in #1545
- fix: collision between implicit and auto-bound level names by @Kha in #1513
- feat: add Hashable for Subtype by @marcusrossel in #1553
- feat: use RPC method from first snapshot by @gebner in #1548
- chore: move Bootstrap.Dynamic -> Init.Dynamic by @digama0 in #1542
- chore: remove Bootstrap package by @digama0 in #1543
- doc: update the mdbook instructions by @lovettchris in #1521
- doc: update lean 3 -> lean 4 in declarations.md by @digama0 in #1557
- feat: utils for RBMap by @EdAyers in #1552
- A basic compiler pass test framework by @hargoniX in #1559
- doc: fix typo by @digama0 in #1561
- Additional concurrency primitives by @gebner in #1555
- doc: add documentation on monads by @lovettchris in #1505
- feat: deriving Repr for TSyntax by @digama0 in #1570
- feat: remove description argument from register_simp_attr by @gebner in #1566
- fix: visit jp bodies in join point finder by @hargoniX in #1574
- fix doc typos and do some polish on wording by @lovettchris in #1568
- fix: use
Type u
universes in List.foldl by @digama0 in #1579 - chore: remove map₂, [specialize] zipWith by @digama0 in #1580
- doc: enable syntax highlighting for the Macro Overview by @eyelash in #1577
- doc: some
do
extensions by @Kha in #1589 - doc: document Init.Data.Queue by @digama0 in #1583
- feat: allow optional type in
example
by @digama0 in #1593 - doc: fix an example in the Macro Overview by @eyelash in #1584
- Show error message for empty instances by @gebner in #1588
- feat: support
{s with ..}
by @digama0 in #1582 - fix: deindent docstrings with empty lines by @gebner in #1596
- feat: move docstring before | in ctors by @gebner in #1598
- feat: tail-recursive List.{mapM, foldrM} by @digama0 in #1581
- fix: make all syntax accessors non-panicking by @gebner in #1595
- docs: fix typo in SeqRight docstrin...
v4.0.0-m5
This is the fifth milestone release of Lean 4. It contains many improvements and many new features. For a summary of all new features, see our release notes. We had 1495 commits since the last milestone.
Contributors:
885 Leonardo de Moura
310 Sebastian Ullrich
69 E.W.Ayers
66 Wojciech Nawrocki
49 Gabriel Ebner
38 Mario Carneiro
22 larsk21
10 tydeu
6 Ed Ayers
6 Mariana Alanis
4 Chris Lovett
3 Jannis Limperg
2 François G. Dorais
2 Henrik Böving
2 Jakob von Raumer
2 Scott Morrison
2 Siddharth
1 Andrés Goens
1 Arthur Paulino
1 Connor Baker
1 Joscha
1 KaseQuark
1 Lars
1 Mac
1 Marcus Rossel
1 Patrick Massot
1 Siddharth Bhat
1 Timo
1 Vincent de Haan
1 William Blake
1 Yuri de Wit
1 ammkrn
1 asdasd1dsadsa
1 kzvi
v4.0.0-m4
This is the fourth milestone release of Lean 4. It contains many improvements and many new features. For a summary of all new features, see our release notes. We had more than 600 commits since the last milestone.
Contributors:
$ git shortlog -s -n v4.0.0-m3..v4.0.0-m4
501 Leonardo de Moura
65 Sebastian Ullrich
11 Daniel Fabian
10 larsk21
5 Gabriel Ebner
2 E.W.Ayers
2 Jonathan Coates
2 Joscha
2 Mario Carneiro
2 ammkrn
1 Chris Lovett
1 François G. Dorais
1 Jakob von Raumer
1 Lars
1 Patrick Stevens
1 Wojciech Nawrocki
1 Xubai Wang
1 casavaca
1 zygi
v4.0.0-m3
This is the third milestone release of Lean 4, and the last planned milestone before an official release. With almost 3000 commits improving and extending many parts of the system since the last milestone, we are now close to completing all main features we have envisioned for Lean 4.
Contributors:
$ git shortlog -s -n v4.0.0-m2..v4.0.0-m3
1719 Leonardo de Moura
725 Sebastian Ullrich
149 Wojciech Nawrocki
93 Daniel Selsam
82 Gabriel Ebner
36 Joscha
35 Daniel Fabian
21 tydeu
14 Mario Carneiro
13 larsk21
12 Jannis Limperg
11 Chris Lovett
8 Henrik Böving
4 François G. Dorais
4 Siddharth
3 Joe Hendrix
3 Scott Morrison
3 ammkrn
2 Josh Levine
2 Mac
2 Mac Malone
2 Simon Hudon
2 pcpthm
1 Anders Christiansen Sørby
1 Andrei Cheremskoy
1 Arthur Paulino
1 Christian Pehle
1 Formally Verified Waffle Maker
1 Hunter Monroe
1 Jan Hrcek
1 Joshua Seaton
1 Kevin Buzzard
1 Lorenz Leutgeb
1 Mauricio Collares
1 Michael Burge
1 Paul Brinkmeier
1 Reijo Jaakkola
1 Severen Redwood
1 Siddharth Bhat
1 Tom Ball
1 Varun Gandhi
1 WojciechKarpiel
1 Xavier Noria
1 gabriel-doriath-dohler
1 zygi
1 Бакиновский Максим
v4.0.0-m2
This is the second milestone release of Lean 4. With too many improvements and bug fixes in almost all parts of the system to list, we would like to single out major improvements to simp
and other built-in tactics as well as support for a goal view that make the proving experience more comfortable.