![](/static/253f0d9/assets/icons/icon-96x96.png)
![](https://programming.dev/pictrs/image/1f7e5534-88d3-4d6f-bc57-7cda9553890f.webp)
fish links against pcre2, which is a C library (via the pcre2 crate).
(it used to also link against ncurses, now it uses the terminfo crate instead, which just reads the terminfo database in rust)
Of course there is a way to make fish distributable as almost a single file (https://github.com/fish-shell/fish-shell/pull/10367), which rust does make easier (rust-embed is frickin’ cool), but these sorts of shenanigans would also be possible with C++ and aren’t really a big driver of the rust port. It’s more that cargo install
would try to install it like that and so why not make that work?
Really, my issue here is that the article makes “making fish available on servers” this huge deal when fish has always been available on servers?
There is the point you can make, which is that you can more easily create self-contained statically linked binaries (tho fish needs more than what cargo itself can provide here because it ships a ton of data files, see https://github.com/fish-shell/fish-shell/pull/10367),
and then there’s what this site keeps claiming from a misreading of a comment I made when the port just got started, which is that fish is now “available on servers”. Which is just wrong, it’s always been available on servers and it’s been easy to install a new fish on LTS distros for users for ages.