Grit: Rewriting Git in Rust with Agents
Posted by cbrewster 4 hours ago
Comments
Comment by Philpax 1 hour ago
Hmm. That's going to be interesting.
Comment by nextaccountic 1 hour ago
Comment by gpm 35 minutes ago
I'd be fascinated to see what happens if it does. Both in the analyses that we'd get of what the LLM did to the codebase and on the legal decisions on what the copyrightable creative elements in code actually are.
If I was the author though... there would be no way that I would be volunteering to be a test case like this. Also seems just rude for no reason.
Comment by dabedee 40 minutes ago
Comment by boredatoms 42 minutes ago
Comment by jauntywundrkind 15 minutes ago
> Currently both Gitoxide and libgit2's networking functionality is either partial, slow or non-existant. Both GitButler and Jujutsu rely on forking out to Git in order to push or pull data. A big reason for this is the incredibly complicated credential logic involved, but all of this is (theoretically) currently covered in Grit.
Comment by squidsoup 8 minutes ago
Comment by heyts 1 hour ago
Comment by jamesfinlayson 1 hour ago
Probably doable - I remember most of Natural Selection 2 was Lua and it's more than a decade old at this point.
Comment by gdgghhhhh 1 hour ago
Comment by madeofpalk 1 hour ago
You decide whether you have followed it or not. The other party will decide if they agree. If in dispute, you go to a judge and they decide also.
Comment by subygan 1 hour ago
it's just in this case it's the author. we'll have to wait and see who decides to challenge it
Comment by ianm218 57 minutes ago
[1]. https://github.com/ianm199/lua-rs/tree/main Lua
[2]. https://github.com/ianm199/valdr Valkey/ Redis
[3]. https://github.com/ianm199/nginx-rs-port nginx
Happy to answer any questions on the approach! When I started a few weeks ago the harnesses on their own were not good enough to get very far without a "meta harness" of sorts but that is changing largely with Claude Workloads and Mythos. A lot of the work is developing some custom tooling to move these along faster.
Comment by jabwd 40 minutes ago
Comment by ianm218 33 minutes ago
But in terms of learning I'm learning relatively little about how to type Rust into an editor but a lot about how to set up agentic loops that can autonomously get tests to pass and improve performance.
For example if you just tell a frontier model (gpt5.5 or Claude Code 4.8) to make some portion of the tests pass they will take forever and just bang their heads against it. I developed a framework to mimic a lot of these tests in nginx... but in minimum non blocking ways so you can run many in parallel with short feedback loops.
Similar for performance - how to make tons of performance benchmark and expose maximum telemetry for agents to go and analyze the hotpaths etc.
Comment by fvdessen 6 minutes ago
Comment by jabwd 15 minutes ago
Comment by ianm218 11 minutes ago
Comment by jabwd 2 minutes ago
I have no idea why you are making me spell this out, I thought it was pretty obvious.
Comment by jauntywundrkind 14 minutes ago
Comment by Aperocky 54 minutes ago
Agree with first half of this sentence, we should all have fun with experiments.
> It was never based on a linkable and reentrant library, but instead on a "Unix" philosophy of chaining together simpler commands, which means that it's difficult to use it in long running processes without fork/exec overhead for everything.
Ahhh now we have philosophical disagreement in the only place in the entire article that says "why". Unix is a feature, it's arguably more important in current time: https://aperocky.com/blog/post.html?slug=unix-philosophy-age...
Comment by Levitating 45 minutes ago
> It was never based on a linkable and reentrant library, but instead on a "Unix" philosophy of chaining together simpler commands, which means that it's difficult to use it in long running processes without fork/exec overhead for everything.
Comment by Aperocky 40 minutes ago
git operate on the filesystem level, the unix behavior is just getting buried. You cannot rewrite git into a linkable library and decide it's now not unix. It's entire behavior is unix, which is why it's awesome.
Comment by dabedee 54 minutes ago
Comment by imoverclocked 1 hour ago
Comment by fg137 1 hour ago
Similarly, is there any momentum left for Cloudflare's EmDash? I can barely find any discussion after April.
Comment by gpm 25 minutes ago
> it has been nearly entirely written by agents and has not been used for realsies. It's probably currently unusably slow or completely broken in ways that are not exercised in the test suite.
Right now it's someone else's experiment that is still in the "might or might not pan out" stage.
There are a bunch of projects using the similar (not vibe coded, less fully featured) gitoxide project - there is demand for git-as-a-library.
Comment by ewy1 17 minutes ago
Comment by tonymet 1 hour ago
In fact, I would rather it stay C for 15 more years.
Comment by huflungdung 1 hour ago
Comment by rvz 1 hour ago
Why not 100%?
> It's not actually passing every single test, though that is on purpose. I did mark some parts of the testing suite as "skipped" because I don't think it's worth recreating them in a library like this
> 41,715 / 42,001 tests passing (99.3%)
So it is not entire then but somehow that was worth burning $8,000~ dollars worth of tokens?
Comment by gpm 22 minutes ago
From the article
> It's not actually passing every single test, though that is on purpose. I did mark some parts of the testing suite as "skipped" because I don't think it's worth recreating them in a library like this - email related stuff, i18n, perforce/svn importers, some of the midx/bitmap stuff - things of that nature. However, for everything that I'm sure is relevant to nearly anyone reading this, the Grit library/CLI can now fully pass the Git test suite.
Comment by ianm218 56 minutes ago
Comment by insanitybit 1 hour ago
Comment by fg137 1 hour ago
Comment by Zopieux 1 hour ago
Comment by sharkjacobs 1 hour ago
> Having parts of Git as discrete, embeddable slices of library also enables things like building custom Git servers or client functionality in Rust.
> The full build of all Git functionality in Rust is currently around 27M, but since a large part of it is a library, it could clearly be easily split up into domains of functionality - subcrates that do specific things. Perhaps you could simply use the subset you need.
Comment by insanitybit 44 minutes ago
> it made me wonder about the feasibility of using that same approach to accomplish something I've been dreaming about for 15 years now,
> which means that it's difficult to use it in long running processes without fork/exec overhead for everything.
> What if we used the same basic idea that Anthropic used on their from-scratch C compiler? Start a brand new implementation, design it as a Rust library, then throw a swarm of agents at the problem
Comment by tonymet 1 hour ago
Comment by rvz 1 hour ago
Comment by sharkjacobs 1 hour ago
Comment by bryanlarsen 1 hour ago
I don't care if any git I use has email features. IIUC, even most of the people that use git with email don't directly use the email features, they use the patch set features like `git am`. I expect `git am` to work, I don't expect git to actually do email.