git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH RFC v2 0/7] Introduce Rust and announce that it will become mandatorty

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Sep 8, 2025, 23:00 UTC
Message-ID
<aL9gDXNJCGH0eIsY@fruit.crustytoothpaste.net>
In-Reply-To
<aL57ONmEKTmqFhIZ@pks.im>
On 2025-09-08 at 06:44:08, Patrick Steinhardt wrote:
Show 7 quoted lines
> > Setting that aside for a moment, the idea of Git 2.55 becoming 3.0
> > seems like a good idea to me, assuming that doesn't rush brian on the
> > sha1/sha256 interop (since I think that's probably the paramount
> > feature of 3.0).
> 
> Yeah, the interop is definitely an important factor and the last part
> that I think is still missing for Git 3.0 to become viable.

I am definitely working on this at the moment and here's what I have working:

* Pack index v3
* Fetching and pushing for full (non-shallow, non-partial) clones
  without submodules
And I'm working on these:
* The new binary loose object map (I was debugging round-tripping this
  morning)
* Shallow fetches (which, due to the quarantine usage, need a binary
  loose object map rather than the `loose-object-idx` file, since the
  quarantine can't merge the two `loose-object-idx` files together)
And then I'll get to these:
* Shallow pushes
* Partial clone
* Garbage collecting and repacking binary loose object maps
* Submodule handling in the protocol

I will need to switch soon to writing my presentation for Git Merge, though, but afterwards I'm going to go back through the testsuite and see what else is failing. I expect partial and shallow clones to fix a lot of the remaining tests, but there are still going to be some problems to deal with.

Note that shallow and partial clones where the server supports only one algorithm won't work with interoperability, since those lack full data and the client side won't be able to map the objects between algorithms. There's also the problem that accepting submodule mappings introduces a security risk, since it's possible for the other side to send commit A in SHA-1 but commit B in SHA-256 and there's no real way to detect that unless you have the submodule on your side.

I may end up asking for some assistance in polishing and sending in what I have. Most of what I have is reasonably good quality[0] and should be bisectable, but I'm up to 81 patches before the Rust part of the code (which so far has 12 patches) and I'm worried I won't be able to both write it and get it sent in in nice-sized series before 3.0 is likely to happen.

Alternatively, we could maybe accept that interoperability is a nice-to-have for Git 3.0 and not an essential. It's not mentioned in the BreakingChanges document, so it's perhaps not a requirement. We could also have someone work on this as part of their job to get it handled more quickly[1].

Finally, I am currently interested in working on the interop code (but have no problem handing it off if that works better for the project), but I cannot guarantee that I will absolutely have time or inclination to continue.

[0] There are some patches marked WIP with a reason as to why they need work, but those are few and far between. [1] I think it's unlikely that this will be able to be me for reasons which I cannot share at the moment but hope to be able to later on, maybe at the Contributor Summit. I'll keep an eye out in case it becomes possible, though.

-- 
brian m. carlson (they/them)
Toronto, Ontario, CA
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 70 of 210 in “Introduce Rust and announce that it will become mandatorty”
  1. 0/3 Introduce Rust and announce that it will become mandatortyPatrick Steinhardt, Sep 4, 2025
  2. 1/3 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 4, 2025
  3. Junio C HamanoSep 4, 2025
  4. Patrick SteinhardtSep 5, 2025
  5. brian m. carlsonSep 4, 2025
  6. Junio C HamanoSep 4, 2025
  7. Patrick SteinhardtSep 5, 2025
  8. Eli SchwartzSep 5, 2025
  9. Patrick SteinhardtSep 5, 2025
  10. Eli SchwartzSep 5, 2025
  11. 2/3 rust: implement a test balloon via the "varint" subsystemPatrick Steinhardt, Sep 4, 2025
  12. brian m. carlsonSep 4, 2025
  13. Patrick SteinhardtSep 5, 2025
  14. Ezekiel NewrenSep 4, 2025
  15. Eli SchwartzSep 5, 2025
  16. Patrick SteinhardtSep 5, 2025
  17. Eli SchwartzSep 5, 2025
  18. Ben KnobleSep 7, 2025
  19. Junio C HamanoSep 8, 2025
  20. Patrick SteinhardtSep 8, 2025
  21. Ben KnobleSep 9, 2025
  22. Junio C HamanoSep 9, 2025
  23. Patrick SteinhardtSep 8, 2025
  24. 3/3 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Sep 4, 2025
  25. Eric SunshineSep 4, 2025
  26. Patrick SteinhardtSep 5, 2025
  27. 0/7 Introduce Rust and announce that it will become mandatortyPatrick Steinhardt, Sep 5, 2025
  28. 1/7 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 5, 2025
  29. Justin ToblerSep 5, 2025
  30. Patrick SteinhardtSep 8, 2025
  31. Elijah NewrenSep 7, 2025
  32. Patrick SteinhardtSep 8, 2025
  33. 2/7 Makefile: introduce infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 5, 2025
  34. brian m. carlsonSep 5, 2025
  35. Patrick SteinhardtSep 8, 2025
  36. Elijah NewrenSep 7, 2025
  37. Patrick SteinhardtSep 8, 2025
  38. SZEDER GáborSep 7, 2025
  39. Patrick SteinhardtSep 8, 2025
  40. 3/7 help: report on whether or not Rust is enabledPatrick Steinhardt, Sep 5, 2025
  41. brian m. carlsonSep 5, 2025
  42. Elijah NewrenSep 7, 2025
  43. 4/7 rust: implement a test balloon via the "varint" subsystemPatrick Steinhardt, Sep 5, 2025
  44. Junio C HamanoSep 5, 2025
  45. Junio C HamanoSep 5, 2025
  46. brian m. carlsonSep 5, 2025
  47. 5/7 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Sep 5, 2025
  48. Matthias AßhauerSep 5, 2025
  49. Patrick SteinhardtSep 5, 2025
  50. Eli SchwartzSep 5, 2025
  51. Patrick SteinhardtSep 8, 2025
  52. Elijah NewrenSep 7, 2025
  53. Patrick SteinhardtSep 8, 2025
  54. Phillip WoodSep 5, 2025
  55. Eli SchwartzSep 5, 2025
  56. brian m. carlsonSep 5, 2025
  57. Elijah NewrenSep 7, 2025
  58. 6/7 ci: convert "pedantic" job into full build with breaking changesPatrick Steinhardt, Sep 5, 2025
  59. Junio C HamanoSep 7, 2025
  60. Patrick SteinhardtSep 8, 2025
  61. 7/7 ci: enable Rust for breaking-changes jobsPatrick Steinhardt, Sep 5, 2025
  62. brian m. carlsonSep 5, 2025
  63. Patrick SteinhardtSep 8, 2025
  64. Junio C HamanoSep 5, 2025
  65. Patrick SteinhardtSep 8, 2025
  66. Phillip WoodSep 5, 2025
  67. Patrick SteinhardtSep 5, 2025
  68. Elijah NewrenSep 7, 2025
  69. Patrick SteinhardtSep 8, 2025
  70. brian m. carlsonSep 8, 2025
  71. Patrick SteinhardtSep 10, 2025
  72. Elijah NewrenSep 9, 2025
  73. Patrick SteinhardtSep 10, 2025
  74. Phillip WoodSep 9, 2025
  75. Patrick SteinhardtSep 10, 2025
  76. Phillip WoodSep 10, 2025
  77. Patrick SteinhardtSep 10, 2025
  78. 0/8 Introduce Rust and announce that it will become mandatortyPatrick Steinhardt, Sep 8, 2025
  79. 1/8 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 8, 2025
  80. brian m. carlsonSep 8, 2025
  81. brian m. carlsonSep 9, 2025
  82. Patrick SteinhardtSep 10, 2025
  83. 2/8 Makefile: reorder sources after includesPatrick Steinhardt, Sep 8, 2025
  84. 3/8 Makefile: introduce infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 8, 2025
  85. 4/8 help: report on whether or not Rust is enabledPatrick Steinhardt, Sep 8, 2025
  86. 5/8 rust: implement a test balloon via the "varint" subsystemPatrick Steinhardt, Sep 8, 2025
  87. Ezekiel NewrenSep 8, 2025
  88. brian m. carlsonSep 8, 2025
  89. Patrick SteinhardtSep 10, 2025
  90. 6/8 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Sep 8, 2025
  91. 7/8 ci: convert "pedantic" job into full build with breaking changesPatrick Steinhardt, Sep 8, 2025
  92. 8/8 ci: enable Rust for breaking-changes jobsPatrick Steinhardt, Sep 8, 2025
  93. Kristoffer HaugsbakkSep 8, 2025
  94. 0/9 Introduce Rust and announce that it will become mandatoryPatrick Steinhardt, Sep 10, 2025
  95. 1/9 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 10, 2025
  96. brian m. carlsonSep 11, 2025
  97. D. Ben KnobleJan 20, 2026
  98. brian m. carlsonJan 20, 2026
  99. Patrick SteinhardtJan 21, 2026
  100. 2/9 Makefile: reorder sources after includesPatrick Steinhardt, Sep 10, 2025
  101. 3/9 Makefile: introduce infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 10, 2025
  102. 4/9 help: report on whether or not Rust is enabledPatrick Steinhardt, Sep 10, 2025
  103. 5/9 varint: use explicit width for integersPatrick Steinhardt, Sep 10, 2025
  104. Junio C HamanoSep 10, 2025
  105. 6/9 varint: reimplement as test balloon for RustPatrick Steinhardt, Sep 10, 2025
  106. 7/9 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Sep 10, 2025
  107. Junio C HamanoSep 10, 2025
  108. Patrick SteinhardtSep 15, 2025
  109. Junio C HamanoSep 22, 2025
  110. Patrick SteinhardtSep 23, 2025
  111. LTS "lieutenant", was Re: [PATCH RFC v4 7/9] BreakingChanges: announce Rust becoming mandatoryJohannes Schindelin, Sep 23, 2025
  112. Patrick SteinhardtSep 24, 2025
  113. Junio C HamanoSep 23, 2025
  114. Patrick SteinhardtSep 24, 2025
  115. Junio C HamanoSep 24, 2025
  116. Kristoffer HaugsbakkSep 10, 2025
  117. Patrick SteinhardtSep 15, 2025
  118. 8/9 ci: convert "pedantic" job into full build with breaking changesPatrick Steinhardt, Sep 10, 2025
  119. 9/9 ci: enable Rust for breaking-changes jobsPatrick Steinhardt, Sep 10, 2025
  120. brian m. carlsonSep 11, 2025
  121. Patrick SteinhardtSep 15, 2025
  122. SZEDER GáborSep 12, 2025
  123. Junio C HamanoSep 12, 2025
  124. Patrick SteinhardtSep 15, 2025
  125. 0/9 Introduce Rust and announce that it will become mandatoryPatrick Steinhardt, Sep 15, 2025
  126. 1/9 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 15, 2025
  127. 2/9 Makefile: reorder sources after includesPatrick Steinhardt, Sep 15, 2025
  128. 3/9 Makefile: introduce infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 15, 2025
  129. 4/9 help: report on whether or not Rust is enabledPatrick Steinhardt, Sep 15, 2025
  130. 5/9 varint: use explicit width for integersPatrick Steinhardt, Sep 15, 2025
  131. 6/9 varint: reimplement as test balloon for RustPatrick Steinhardt, Sep 15, 2025
  132. 7/9 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Sep 15, 2025
  133. SZEDER GáborSep 17, 2025
  134. brian m. carlsonSep 18, 2025
  135. SZEDER GáborSep 22, 2025
  136. Junio C HamanoSep 22, 2025
  137. brian m. carlsonSep 22, 2025
  138. Junio C HamanoSep 22, 2025
  139. Elijah NewrenSep 23, 2025
  140. Patrick SteinhardtSep 23, 2025
  141. Junio C HamanoSep 23, 2025
  142. Ezekiel NewrenSep 23, 2025
  143. Phillip WoodSep 19, 2025
  144. Patrick SteinhardtSep 22, 2025
  145. Phillip WoodSep 22, 2025
  146. Patrick SteinhardtSep 22, 2025
  147. 8/9 ci: convert "pedantic" job into full build with breaking changesPatrick Steinhardt, Sep 15, 2025
  148. 9/9 ci: enable Rust for breaking-changes jobsPatrick Steinhardt, Sep 15, 2025
  149. Junio C HamanoSep 15, 2025
  150. Ezekiel NewrenSep 16, 2025
  151. Patrick SteinhardtSep 16, 2025
  152. Sam JamesSep 17, 2025
  153. Ezekiel NewrenSep 17, 2025
  154. Ramsay JonesSep 16, 2025
  155. Ezekiel NewrenSep 16, 2025
  156. Ramsay JonesSep 17, 2025
  157. Elijah NewrenSep 18, 2025
  158. what's missing from newer C? [was: [PATCH v5 0/9] Introduce Rust ....]Eric Wong, Sep 25, 2025
  159. Ezekiel NewrenSep 26, 2025
  160. Eric WongOct 4, 2025
  161. Pierre-Emmanuel PatryOct 6, 2025
  162. John Paul Adrian GlaubitzSep 19, 2025
  163. Patrick SteinhardtSep 22, 2025
  164. 0/9 Introduce Rust and announce that it will become mandatoryPatrick Steinhardt, Sep 23, 2025
  165. 1/9 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 23, 2025
  166. 2/9 Makefile: reorder sources after includesPatrick Steinhardt, Sep 23, 2025
  167. 3/9 Makefile: introduce infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 23, 2025
  168. 4/9 help: report on whether or not Rust is enabledPatrick Steinhardt, Sep 23, 2025
  169. 5/9 varint: use explicit width for integersPatrick Steinhardt, Sep 23, 2025
  170. 6/9 varint: reimplement as test balloon for RustPatrick Steinhardt, Sep 23, 2025
  171. 7/9 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Sep 23, 2025
  172. Phillip WoodSep 23, 2025
  173. Junio C HamanoSep 23, 2025
  174. Patrick SteinhardtSep 24, 2025
  175. 8/9 ci: convert "pedantic" job into full build with breaking changesPatrick Steinhardt, Sep 23, 2025
  176. 9/9 ci: enable Rust for breaking-changes jobsPatrick Steinhardt, Sep 23, 2025
  177. Ezekiel NewrenSep 23, 2025
  178. Patrick SteinhardtSep 24, 2025
  179. Ezekiel NewrenSep 24, 2025
  180. 0/9 Introduce Rust and announce that it will become mandatoryPatrick Steinhardt, Sep 25, 2025
  181. 1/9 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 25, 2025
  182. 2/9 Makefile: reorder sources after includesPatrick Steinhardt, Sep 25, 2025
  183. Ramsay JonesSep 25, 2025
  184. 3/9 Makefile: introduce infrastructure to build internal Rust libraryPatrick Steinhardt, Sep 25, 2025
  185. 4/9 help: report on whether or not Rust is enabledPatrick Steinhardt, Sep 25, 2025
  186. 5/9 varint: use explicit width for integersPatrick Steinhardt, Sep 25, 2025
  187. Kristoffer HaugsbakkSep 30, 2025
  188. Ezekiel NewrenOct 1, 2025
  189. Patrick SteinhardtOct 2, 2025
  190. 6/9 varint: reimplement as test balloon for RustPatrick Steinhardt, Sep 25, 2025
  191. Ezekiel NewrenOct 1, 2025
  192. Junio C HamanoOct 1, 2025
  193. 7/9 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Sep 25, 2025
  194. 8/9 ci: convert "pedantic" job into full build with breaking changesPatrick Steinhardt, Sep 25, 2025
  195. 9/9 ci: enable Rust for breaking-changes jobsPatrick Steinhardt, Sep 25, 2025
  196. Junio C HamanoSep 25, 2025
  197. Ezekiel NewrenOct 1, 2025
  198. 0/9 Introduce Rust and announce that it will become mandatoryPatrick Steinhardt, Oct 2, 2025
  199. 1/9 meson: add infrastructure to build internal Rust libraryPatrick Steinhardt, Oct 2, 2025
  200. 2/9 Makefile: reorder sources after includesPatrick Steinhardt, Oct 2, 2025
  201. 3/9 Makefile: introduce infrastructure to build internal Rust libraryPatrick Steinhardt, Oct 2, 2025
  202. 4/9 help: report on whether or not Rust is enabledPatrick Steinhardt, Oct 2, 2025
  203. 5/9 varint: use explicit width for integersPatrick Steinhardt, Oct 2, 2025
  204. 6/9 varint: reimplement as test balloon for RustPatrick Steinhardt, Oct 2, 2025
  205. 7/9 BreakingChanges: announce Rust becoming mandatoryPatrick Steinhardt, Oct 2, 2025
  206. 8/9 ci: convert "pedantic" job into full build with breaking changesPatrick Steinhardt, Oct 2, 2025
  207. 9/9 ci: enable Rust for breaking-changes jobsPatrick Steinhardt, Oct 2, 2025
  208. Junio C HamanoOct 2, 2025
  209. Patrick SteinhardtOct 7, 2025
  210. Ezekiel NewrenOct 2, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.