I've published a new, general-purpose terminal specification that gives any program a way to tell the terminal what it's doing: idle, working, waiting, finished, or failed, and why. It is easy to implement on both sides. I've written more about why: https://t.co/2FfzNC3F8T
The problem this solves is generic and applies in compelling ways to all sorts of use cases (e.g. package managers, build tools), but it really rears a hideous head when it comes to AI and the "agentic inbox" problem.
I found over 250 different agent orchestrators (with various goals) that all individually implement a heuristic based approach to detecting whether things like Claude Code are working, blocked, done, etc.
If you look at @herdrdev's commit history, you can see around 10 compatibility changes to detect Claude Code within just the past 3 months. (This isn't a dig at Herdr! They're doing great work with what they have, and everyone else is doing the same thing).
Heuristics are not the way. And over-indexing on agentic use cases isn't the way, because this problem is really interesting for other tools too: Homebrew, Terraform, Cargo, etc. etc.
Proprietary protocols and out of band APIs are not the way. They have an O(N) integration problem and require extra work to work over SSH or within local VMs/containers.
The program status specification (OSC 7501) solves this in a reliable, deterministic way that is general-purpose and can be easily adopted by the entire industry.
Read more: https://t.co/2FfzNC3F8T
If you’re unfortunate enough to work on a submodule-heavy project and are tired of waiting for git status, checkout subspy:
-identical output to git status
-100-1000x faster on Windows
-67-360x faster on Linux
-experimental shell prompt integration
https://t.co/tZzq1bRszb
Interestingly, Astra is wrong about the UB because it is missing historical context on when this legendary fast inverse square root code was written:
1) This code was written in 1999 for 32 bit computers when practically `sizeof(long) == sizeof(float) == 4` so the "OOB on 64-bit longs" and "possible misalignment" does not apply here
2) In 1999, aliasing UB (aka type punning) was technically UB but it was literally everywhere and even the Linux kernel did it for its memcpy implementation. When GCC 2.95 came out it added optimizations that optimized against type punning and it broke so much software they had to default disable it a few months later!
@Ofekmeister Planning to soon-ish, there’s one lingering issue I’d like to fix with the git shim before publishing a release. Should be doable in week or two.
More performance improvements to tree-sitter generate. The master branch is now ~3-5x faster and uses 3-5x less memory than 0.26. More improvements to come!
@neogoose_btw@HSVSphere But if that’s the case then why didn’t you pass —ignore-submodules when you measured the CLI’s time? Otherwise the benchmark is comparing two separate things
In every call to StatusOptions::new, you also use exclude_submodules(true). That means any changes inside submodules (chromium has 263 on its main branch currently) won't get picked up by git2. Your fuzz tests don't catch this because they also tell git2 to ignore submodules in the same way. I threw together a quick test with fff-core as a dependency and it reports modified files inside submodules as clean.