Skip to content

Releases: leanprover/lean4

v4.1.0

26 Sep 03:40
Compare
Choose a tag to compare

Significant changes since v4.0.0

  • The error positioning on missing tokens has been improved. In particular, this should make it easier to spot errors in incomplete tactic proofs.

  • After elaborating a configuration file, Lake will now cache the configuration to a lakefile.olean. Subsequent runs of Lake will import this OLean instead of elaborating the configuration file. This provides a significant performance improvement (benchmarks indicate that using the OLean cuts Lake's startup time in half), but there are some important details to keep in mind:

    • Lake will regenerate this OLean after each modification to the lakefile.lean or lean-toolchain. You can also force a reconfigure by passing the new --reconfigure / -R option to lake.
    • Lake configuration options (i.e., -K) will be fixed at the moment of elaboration. Setting these options when lake is using the cached configuration will have no effect. To change options, run lake with -R / --reconfigure.
    • The lakefile.olean is a local configuration and should not be committed to Git. Therefore, existing Lake packages need to add it to their .gitignore.
  • The signature of Lake.buildO has changed, args has been split into weakArgs and traceArgs. traceArgs are included in the input trace and weakArgs are not. See Lake's FFI example for a demonstration of how to adapt to this change.

  • The signatures of Lean.importModules, Lean.Elab.headerToImports, and Lean.Elab.parseImports
    have changed from taking List Import to Array Import.

  • There is now an occs field
    in the configuration object for the rewrite tactic,
    allowing control of which occurrences of a pattern should be rewritten.
    This was previously a separate argument for Lean.MVarId.rewrite,
    and this has been removed in favour of an additional field of Rewrite.Config.
    It was not previously accessible from user tactics.

Contributors

% git log v4.0.0..v4.1.0 --pretty="%an" | sort | uniq -c | sort -rn
  28 Mac Malone
   9 Scott Morrison
   8 Sebastian Ullrich
   2 Mario Carneiro
   2 Jannis Limperg
   1 mhuisi
   1 github-actions[bot]
   1 Marcus Rossel
   1 Joachim Breitner

v4.1.0-rc1

15 Sep 05:23
Compare
Choose a tag to compare
v4.1.0-rc1 Pre-release
Pre-release

This is the first release candidate for v4.1.0-rc1. We are switching to using a tracking branch for this release, at release/v4.1.0. We hope to cherry-pick any critical fixes onto this branch, rather than moving up to master for any subsequent release candidates.

Breaking changes since v4.0.0:

  • After elaborating a configuration file, Lake will now cache the configuration to a lakefile.olean. Subsequent runs of Lake will import this OLean instead of elaborating the configuration file. This provides a significant performance improvement (benchmarks indicate that using the OLean cuts Lake's startup time in half), but there are some important details to keep in mind:

    • Lake will regenerate this OLean after each modification to the lakefile.lean or lean-toolchain. You can also force a reconfigure by passing the new --reconfigure / -R option to lake.
    • Lake configuration options (i.e., -K) will be fixed at the moment of elaboration. Setting these options when lake is using the cached configuration will have no effect. To change options, run lake with -R / --reconfigure.
    • The lakefile.olean is a local configuration and should not be committed to Git. Therefore, existing Lake packages need to add it to their .gitignore.
  • The signature of Lake.buildO has changed, args has been split into weakArgs and traceArgs. traceArgs are included in the input trace and weakArgs are not. See Lake's FFI example for a demonstration of how to adapt to this change.

  • The signatures of Lean.importModules, Lean.Elab.headerToImports, and Lean.Elab.parseImports have changed from taking List Import to Array Import.

  • There is now an occs field in the configuration object for the rewrite tactic, allowing control of which occurrences of a pattern should be rewritten. This was previously a separate argument for Lean.MVarId.rewrite, and this has been removed in favour of an additional field of Rewrite.Config. It was not previously accessible from user tactics.

v4.0.0

08 Sep 04:44
Compare
Choose a tag to compare

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

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

08 Sep 01:54
Compare
Choose a tag to compare
v4.0.0-rc5 Pre-release
Pre-release

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

30 Aug 10:57
a7efe5b
Compare
Choose a tag to compare
v4.0.0-rc4 Pre-release
Pre-release

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

30 Aug 06:02
b8084d5
Compare
Choose a tag to compare
v4.0.0-rc3 Pre-release
Pre-release

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

24 Aug 00:47
Compare
Choose a tag to compare
v4.0.0-rc2 Pre-release
Pre-release

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

24 Aug 00:52
Compare
Choose a tag to compare
v4.0.0-rc1 Pre-release
Pre-release

This is the first release candidate for the first official release of Lean 4.

What's Changed

Read more

v4.0.0-m5

07 Aug 16:56
Compare
Choose a tag to compare
v4.0.0-m5 Pre-release
Pre-release

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

24 Mar 00:30
Compare
Choose a tag to compare
v4.0.0-m4 Pre-release
Pre-release

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