"reftable" format. Most importantly, alternative implementations of Git like
JGit, libgit2 and Gitoxide need to support it.
+* In new repositories, the default branch name will be `main`. We have been
+ warning that the default name will change since 675704c74dd (init:
+ provide useful advice about init.defaultBranch, 2020-12-11). The new name
+ matches the default branch name used in new repositories by many of the
+ big Git forges.
+
+ * Git will require Rust as a mandatory part of the build process. While Git
+ already started to adopt Rust in Git 2.49, all parts written in Rust are
+ optional for the time being. This includes:
+ +
+ ** The Rust wrapper around libgit.a that is part of "contrib/" and which has
+ been introduced in Git 2.49.
+ ** Subsystems that have an alternative implementation in Rust to test
+ interoperability between our C and Rust codebase.
+ ** Newly written features that are not mission critical for a fully functional
+ Git client.
+ +
+ These changes are meant as test balloons to allow distributors of Git to prepare
+ for Rust becoming a mandatory part of the build process. There will be multiple
+ milestones for the introduction of Rust:
+ +
+ --
+ 1. Initially, with Git 2.52, support for Rust will be auto-detected by Meson and
+ disabled in our Makefile so that the project can sort out the initial
+ infrastructure.
+ 2. In Git 2.53, both build systems will default-enable support for Rust.
+ Consequently, builds will break by default if Rust is not available on the
+ build host. The use of Rust can still be explicitly disabled via build
+ flags.
+ 3. In Git 3.0, the build options will be removed and support for Rust is
+ mandatory.
+ --
+ +
+ You can explicitly ask both Meson and our Makefile-based system to enable Rust
+ by saying `meson configure -Drust=enabled` and `make WITH_RUST=YesPlease`,
+ respectively.
+ +
+ The Git project will declare the last version before Git 3.0 to be a long-term
+ support release. This long-term release will receive important bug fixes for at
+ least four release cycles and security fixes for six release cycles. The Git
+ project will hand over maintainership of the long-term release to distributors
+ in case they need to extend the life of that long-term release even further.
+ Details of how this long-term release will be handed over to the community will
+ be discussed once the Git project decides to stop officially supporting it.
+ +
+ We will evaluate the impact on downstream distributions before making Rust
+ mandatory in Git 3.0. If we see that the impact on downstream distributions
+ would be significant, we may decide to defer this change to a subsequent minor
+ release. This evaluation will also take into account our own experience with
+ how painful it is to keep Rust an optional component.
+
=== Removals
* Support for grafting commits has long been superseded by git-replace(1).