git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: "SZEDER Gábor" <szeder.dev@gmail.com>
Cc: Patrick Steinhardt <ps@pks.im>,
	git@vger.kernel.org,
	"Haelwenn (lanodan) Monnier" <contact@hacktivis.me>,
	Ben Knoble <ben.knoble@gmail.com>,
	Christian Brabandt <cb@256bit.org>,
	Collin Funk <collin.funk1@gmail.com>,
	Eli Schwartz <eschwartz@gentoo.org>,
	Elijah Newren <newren@gmail.com>,
	Ezekiel Newren <ezekielnewren@gmail.com>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Junio C Hamano <gitster@pobox.com>,
	Phillip Wood <phillip.wood123@gmail.com>,
	Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>,
	Sam James <sam@gentoo.org>, Taylor Blau <me@ttaylorr.com>,
	Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Subject: Re: [PATCH v5 7/9] BreakingChanges: announce Rust becoming mandatory
Date: Thu, 18 Sep 2025 01:19:19 +0000	[thread overview]
Message-ID: <aMteF4VTq2C5sAhK@fruit.crustytoothpaste.net> (raw)
In-Reply-To: <aMsxhp6ZO2Cdz7+k@szeder.dev>

[-- Attachment #1: Type: text/plain, Size: 3569 bytes --]

On 2025-09-17 at 22:09:10, SZEDER Gábor wrote:
> Providing an LTS release for those platforms that can't jump on the
> Rust bandwagon is great, but...
> 
> Git 3.0 will switch the default hash algorithm for newly initialized
> repositories to SHA-256, which, presumably, will also encourage SHA-1
> -> SHA-256 migrations in existing repositories.  Alas, it appears that
> the SHA-1/SHA-256 interop feature will only be available in Rust.
> 
> How will this affect those platforms without Rust?  What will and
> won't work on such platforms?

On Git 3.0, nothing will work without Rust because it will be mandatory.
However, people who want to perform the conversion can do that by
booting a Linux VM[0] and converting the repository there, then pushing
it somewhere.  The only inconvenience is that you'll have to have a flag
day for working with the repository on older Git: you won't be able to
dynamically pull from or push to a repository with a different main
algorithm than you.

One of my first patches is that setting extensions.compatObjectFormat
without Rust will simply die and say that's not supported.  If that
config value is unset, then Git up to 3.0 will simply function as
normal, so full single-hash compatibility is assured.  We already have
that: SHA-256 repositories work just fine with SHA-256 remotes and SHA-1
repositories work just fine with SHA-1 remotes, but they're currently
not interoperable.

> I think it should be called out explicitly in the justification that
> whatever limitations this imposes on those platforms with respect to
> hash function transition, the project has duly considered that and is
> OK with it.

I am fine with this and I don't think this is a problem.

I will mention that I have also already written the code in Rust and it
is elegant and tidy and more efficient, better tested, and shorter than
the equivalent C code.  Writing the code also took much less time than
the equivalent C code would have.  I am not planning to rewrite it in C,
since I already have a substantial amount of other interoperability work
to do, so unless someone else is planning on doing so, the project has
two choices: use the Rust code and accept that, or decide that they
don't want the interoperability work for Git 3.0.

I want to point out that so far, all of the SHA-256 work, including the
interoperability work, has been on my own time.  I understand that my
contributions to the project have to be acceptable to the project, but I
also am not willing to rewrite a bunch of work because we already
decided that we were going to do something and then changed our mind.
If the project wants to be fickle on this matter, then other
contributors can do the interoperability work on those terms.

I realize the decision to incorporate Rust was made recently, but the
binary loose object maps are a blocker for some of the protocol work I'm
doing, and if we want the interoperability functionality in Git 3.0 in a
year, then I can't afford to wait here, since this kind of discussion
tends to drag on extensively.

[0] Debian actually offers multiarch support, so as long as Debian has
support for the architecture you're running on, you can boot a Debian VM
of your native architecture, install amd64 or arm64 packages and QEMU,
and then run those binaries in emulation.  It will be slow, but it works
for virtually all architectures.  I've done something similar with
risc64 containers on my amd64 laptop.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

  reply	other threads:[~2025-09-18  1:19 UTC|newest]

Thread overview: 207+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-04 14:26 [PATCH RFC 0/3] Introduce Rust and announce that it will become mandatorty Patrick Steinhardt
2025-09-04 14:26 ` [PATCH RFC 1/3] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-04 18:50   ` Junio C Hamano
2025-09-05  7:53     ` Patrick Steinhardt
2025-09-04 22:06   ` brian m. carlson
2025-09-04 22:46     ` Junio C Hamano
2025-09-05  7:49       ` Patrick Steinhardt
2025-09-05  1:16     ` Eli Schwartz
2025-09-05  7:50       ` Patrick Steinhardt
2025-09-05 13:20         ` Eli Schwartz
2025-09-04 14:26 ` [PATCH RFC 2/3] rust: implement a test balloon via the "varint" subsystem Patrick Steinhardt
2025-09-04 22:37   ` brian m. carlson
2025-09-05  7:54     ` Patrick Steinhardt
2025-09-04 23:39   ` Ezekiel Newren
2025-09-05  2:00     ` Eli Schwartz
2025-09-05  7:54       ` Patrick Steinhardt
2025-09-05 13:39         ` Eli Schwartz
2025-09-07 20:07   ` Ben Knoble
2025-09-08  4:39     ` Junio C Hamano
2025-09-08 11:39       ` Patrick Steinhardt
2025-09-09  0:49       ` Ben Knoble
2025-09-09 15:27         ` Junio C Hamano
2025-09-08  6:44     ` Patrick Steinhardt
2025-09-04 14:26 ` [PATCH RFC 3/3] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-04 17:38   ` Eric Sunshine
2025-09-05  7:54     ` Patrick Steinhardt
2025-09-05 11:50 ` [PATCH RFC v2 0/7] Introduce Rust and announce that it will become mandatorty Patrick Steinhardt
2025-09-05 11:50   ` [PATCH RFC v2 1/7] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-05 17:47     ` Justin Tobler
2025-09-08  6:42       ` Patrick Steinhardt
2025-09-07  4:54     ` Elijah Newren
2025-09-08  6:42       ` Patrick Steinhardt
2025-09-05 11:50   ` [PATCH RFC v2 2/7] Makefile: introduce " Patrick Steinhardt
2025-09-05 20:21     ` brian m. carlson
2025-09-08  6:40       ` Patrick Steinhardt
2025-09-07  4:58     ` Elijah Newren
2025-09-08  6:41       ` Patrick Steinhardt
2025-09-07 15:26     ` SZEDER Gábor
2025-09-08  6:41       ` Patrick Steinhardt
2025-09-05 11:50   ` [PATCH RFC v2 3/7] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-05 19:51     ` brian m. carlson
2025-09-07  5:00       ` Elijah Newren
2025-09-05 11:51   ` [PATCH RFC v2 4/7] rust: implement a test balloon via the "varint" subsystem Patrick Steinhardt
2025-09-05 21:46     ` Junio C Hamano
2025-09-05 22:39       ` Junio C Hamano
2025-09-05 23:04         ` brian m. carlson
2025-09-05 11:51   ` [PATCH RFC v2 5/7] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-05 12:45     ` Matthias Aßhauer
2025-09-05 13:38       ` Patrick Steinhardt
2025-09-05 14:38         ` Eli Schwartz
2025-09-08  6:42           ` Patrick Steinhardt
2025-09-07  5:31         ` Elijah Newren
2025-09-08  6:42           ` Patrick Steinhardt
2025-09-05 14:22       ` Phillip Wood
2025-09-05 14:32       ` Eli Schwartz
2025-09-05 19:34         ` brian m. carlson
2025-09-07  5:25     ` Elijah Newren
2025-09-05 11:51   ` [PATCH RFC v2 6/7] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-07  0:21     ` Junio C Hamano
2025-09-08  6:41       ` Patrick Steinhardt
2025-09-05 11:51   ` [PATCH RFC v2 7/7] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-05 19:56     ` brian m. carlson
2025-09-08  6:40       ` Patrick Steinhardt
2025-09-05 21:00     ` Junio C Hamano
2025-09-08  6:40       ` Patrick Steinhardt
2025-09-05 14:14   ` [PATCH RFC v2 0/7] Introduce Rust and announce that it will become mandatorty Phillip Wood
2025-09-05 14:28     ` Patrick Steinhardt
2025-09-07  4:31       ` Elijah Newren
2025-09-08  6:44         ` Patrick Steinhardt
2025-09-08 23:00           ` brian m. carlson
2025-09-10  8:21             ` Patrick Steinhardt
2025-09-09  6:33           ` Elijah Newren
2025-09-10  8:21             ` Patrick Steinhardt
2025-09-09  9:12       ` Phillip Wood
2025-09-10  8:21         ` Patrick Steinhardt
2025-09-10  9:32           ` Phillip Wood
2025-09-10 10:49             ` Patrick Steinhardt
2025-09-08 14:13 ` [PATCH RFC v3 0/8] " Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 1/8] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-08 22:09     ` brian m. carlson
2025-09-09  1:03       ` brian m. carlson
2025-09-10  8:22       ` Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 2/8] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 3/8] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 4/8] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 5/8] rust: implement a test balloon via the "varint" subsystem Patrick Steinhardt
2025-09-08 17:19     ` Ezekiel Newren
2025-09-08 22:22       ` brian m. carlson
2025-09-10  8:22         ` Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 6/8] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 7/8] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-08 14:13   ` [PATCH RFC v3 8/8] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-08 14:20   ` [PATCH RFC v3 0/8] Introduce Rust and announce that it will become mandatorty Kristoffer Haugsbakk
2025-09-10 15:35 ` [PATCH RFC v4 0/9] Introduce Rust and announce that it will become mandatory Patrick Steinhardt
2025-09-10 15:35   ` [PATCH RFC v4 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-11 21:33     ` brian m. carlson
2025-09-10 15:35   ` [PATCH RFC v4 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-10 15:35   ` [PATCH RFC v4 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-10 15:35   ` [PATCH RFC v4 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-10 15:35   ` [PATCH RFC v4 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-10 21:04     ` Junio C Hamano
2025-09-10 15:35   ` [PATCH RFC v4 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-09-10 15:35   ` [PATCH RFC v4 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-10 21:20     ` Junio C Hamano
2025-09-15 10:53       ` Patrick Steinhardt
2025-09-22 16:24         ` Junio C Hamano
2025-09-23  5:32           ` Patrick Steinhardt
2025-09-23  8:53             ` LTS "lieutenant", was " Johannes Schindelin
2025-09-24 13:47               ` Patrick Steinhardt
2025-09-23 14:31             ` Junio C Hamano
2025-09-24 12:53               ` Patrick Steinhardt
2025-09-24 17:43                 ` Junio C Hamano
2025-09-10 21:42     ` Kristoffer Haugsbakk
2025-09-15 10:53       ` Patrick Steinhardt
2025-09-10 15:35   ` [PATCH RFC v4 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-10 15:35   ` [PATCH RFC v4 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-11 21:55   ` [PATCH RFC v4 0/9] Introduce Rust and announce that it will become mandatory brian m. carlson
2025-09-15 10:53     ` Patrick Steinhardt
2025-09-12 15:45   ` SZEDER Gábor
2025-09-12 16:32     ` Junio C Hamano
2025-09-15 10:50       ` Patrick Steinhardt
2025-09-15 11:22 ` [PATCH v5 " Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-17 22:09     ` SZEDER Gábor
2025-09-18  1:19       ` brian m. carlson [this message]
2025-09-22 19:34         ` SZEDER Gábor
2025-09-22 20:59           ` Junio C Hamano
2025-09-22 22:15             ` brian m. carlson
2025-09-22 22:56               ` Junio C Hamano
2025-09-23  1:59                 ` Elijah Newren
2025-09-23  4:54                 ` Patrick Steinhardt
2025-09-23 14:17                   ` Junio C Hamano
2025-09-23  0:43             ` Ezekiel Newren
2025-09-19 13:59     ` Phillip Wood
2025-09-22 13:01       ` Patrick Steinhardt
2025-09-22 14:07         ` Phillip Wood
2025-09-22 14:38           ` Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-15 11:22   ` [PATCH v5 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-15 17:12   ` [PATCH v5 0/9] Introduce Rust and announce that it will become mandatory Junio C Hamano
2025-09-16  2:03   ` Ezekiel Newren
2025-09-16 10:06     ` Patrick Steinhardt
2025-09-17 12:07       ` Sam James
2025-09-17 17:30         ` Ezekiel Newren
2025-09-16 22:25     ` Ramsay Jones
2025-09-16 23:38       ` Ezekiel Newren
2025-09-17 18:32         ` Ramsay Jones
2025-09-18  3:47   ` Elijah Newren
2025-09-25  1:10   ` what's missing from newer C? [was: [PATCH v5 0/9] Introduce Rust ....] Eric Wong
2025-09-26 22:17     ` Ezekiel Newren
2025-10-04  1:02       ` Eric Wong
2025-10-06  9:13         ` Pierre-Emmanuel Patry
2025-09-19 18:41 ` [PATCH RFC 0/3] Introduce Rust and announce that it will become mandatorty John Paul Adrian Glaubitz
2025-09-22 13:01   ` Patrick Steinhardt
2025-09-23  9:45 ` [PATCH v6 0/9] Introduce Rust and announce that it will become mandatory Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-23 15:29     ` Phillip Wood
2025-09-23 17:29       ` Junio C Hamano
2025-09-24  5:03         ` Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-23  9:45   ` [PATCH v6 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-23 20:15   ` [PATCH v6 0/9] Introduce Rust and announce that it will become mandatory Ezekiel Newren
2025-09-24  5:02     ` Patrick Steinhardt
2025-09-24 14:34       ` Ezekiel Newren
2025-09-25  6:30 ` [PATCH v7 " Patrick Steinhardt
2025-09-25  6:30   ` [PATCH v7 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-09-25  6:30   ` [PATCH v7 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-09-25 21:33     ` Ramsay Jones
2025-09-25  6:30   ` [PATCH v7 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-09-25  6:30   ` [PATCH v7 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-09-25  6:30   ` [PATCH v7 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-09-30 13:34     ` Kristoffer Haugsbakk
2025-10-01 17:22       ` Ezekiel Newren
2025-10-02  7:30         ` Patrick Steinhardt
2025-09-25  6:30   ` [PATCH v7 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-10-01 17:21     ` Ezekiel Newren
2025-10-01 19:44       ` Junio C Hamano
2025-09-25  6:30   ` [PATCH v7 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-09-25  6:30   ` [PATCH v7 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-09-25  6:30   ` [PATCH v7 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-09-25 16:35   ` [PATCH v7 0/9] Introduce Rust and announce that it will become mandatory Junio C Hamano
2025-10-01 18:43     ` Ezekiel Newren
2025-10-02  7:29 ` [PATCH v8 " Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 1/9] meson: add infrastructure to build internal Rust library Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 2/9] Makefile: reorder sources after includes Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 3/9] Makefile: introduce infrastructure to build internal Rust library Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 4/9] help: report on whether or not Rust is enabled Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 5/9] varint: use explicit width for integers Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 6/9] varint: reimplement as test balloon for Rust Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 7/9] BreakingChanges: announce Rust becoming mandatory Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 8/9] ci: convert "pedantic" job into full build with breaking changes Patrick Steinhardt
2025-10-02  7:29   ` [PATCH v8 9/9] ci: enable Rust for breaking-changes jobs Patrick Steinhardt
2025-10-02 16:38   ` [PATCH v8 0/9] Introduce Rust and announce that it will become mandatory Junio C Hamano
2025-10-07  9:59     ` Patrick Steinhardt
2025-10-02 23:35   ` Ezekiel Newren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aMteF4VTq2C5sAhK@fruit.crustytoothpaste.net \
    --to=sandals@crustytoothpaste.net \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=ben.knoble@gmail.com \
    --cc=cb@256bit.org \
    --cc=collin.funk1@gmail.com \
    --cc=contact@hacktivis.me \
    --cc=eschwartz@gentoo.org \
    --cc=ezekielnewren@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=kristofferhaugsbakk@fastmail.com \
    --cc=me@ttaylorr.com \
    --cc=newren@gmail.com \
    --cc=phillip.wood123@gmail.com \
    --cc=pierre-emmanuel.patry@embecosm.com \
    --cc=ps@pks.im \
    --cc=sam@gentoo.org \
    --cc=szeder.dev@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).