powerline-d (I got an AI to port powerline-shell to D)
FeepingCreature
feepingcreature at gmail.com
Wed Sep 4 12:24:07 UTC 2024
tl;dr: D port of powerline-shell, a beautiful command prompt with
(among others) git status
https://github.com/FeepingCreature/powerline-d
## What's powerline-shell?
Has this happened to you? You're using git, and you enter some
command only to get a weird error about branches. About fifteen
minutes later, you finally realize you were in the middle of a
rebase.
Wouldn't it be cool if your bash prompt automatically showed the
status of the git repository in the current folder? Whether it's
clean, whether you forgot to add any files, what branch you're on
etc?
Enter powerline-shell. It's a Python tool that is executed on
every prompt render and adds a bunch of information, such as
host, git status, and a whole bunch of other configurable
widgets. I consider it plainly indispensable for commandline git
use.
Anyway, so a few days ago I noticed that powerline-shell was
slow. Like, observable slowdown every time I hit return slow.
It's kind of unavoidable, it's a Python project, it has to load
the interpreter every time it starts.
Now there's a few rewrites, one in Rust, one in Go, but I mean -
we're a D shop, and I'll be damned if I make critical workflow
dependent on a Rust tool. But hey, the source isn't *that* big -
only 2116 lines spread over 43 files. 61KB of source code. That
comfortably fits in the context window of Claude 3.5 Sonnet. So I
thought - what's to it? Let's just throw it in there and see how
it handles things.
## powerline-d
And what do you know, three hours and a long dialog later and
seven bucks poorer, we have
https://github.com/FeepingCreature/powerline-d . Anyone who says
large language models aren't *really* intelligent now has to
argue that programming doesn't require intelligence. At an
estimate, this is 99.9% the AI's work, all I had to do was
provide some design ideas and fix some syntax errors. And it
definitely runs a lot faster than powerline-shell.
How much faster?
```
$ time powerline-shell
...
real 0m0,266s
$ time powerline-d --shell bash
...
real 0m0,072s
```
I'd say that's pretty meaningful. A lot of the speedup comes from
me asking the AI to get rid of manual process calls to `ps` and
`git` in favor of walking `/proc` or linking `libgit2` directly,
but even before that it was about twice as fast, just from
skipping the Python interpreter setup/teardown.
I'm using it everywhere now instead of powerline-shell, and it
works fine, which is to say indistinguishable from the original
except the weird noticeable delay on hitting return is gone. I'd
say it's a win.
## A warning
I do have to say this. I've tested the parts of this that I
personally use, but there *were* some problems in there. However,
widgets like `hg` support are totally untested, because I don't
personally need them. It's in there, and it builds, but I have no
clue what'll happen if someone tries to use it. Bug reports
welcome!
More information about the Digitalmars-d-announce
mailing list