Debian Running on Rust Coreutils

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • coreutils

    Cross-platform Rust rewrite of the GNU coreutils

  • > tldr: Rust/coreutils ( https://github.com/uutils/coreutils/ ) is now available in Debian,

    Is it just my version of Firefox, or does anybody else get a line wrapping justification algo that ends the first line with "Debia" and begins the next line with "n"?

    It appears hyperlinks are split opportunistically to match the line justification.

    Two things:

    * I have never seen a single web page do this

    * Something smells soooo right that the only page I've ever seen with this weirdo usability regression involves the word "Debian." It's as if when I read the word "Debian" in a blog/article, I get this sixth sense shiver that something soon will be broken with a default setting because "nobody ever said you couldn't do it the other way."

  • ripgrep

    ripgrep recursively searches directories for a regex pattern while respecting your gitignore

  • Thanks for the kind words. I don't know much about openVMS. I read your profile bio. I'm not sure I quite grok all the details, but I would like to caution you: ripgrep is still, roughly speaking, a "grep." That is, it exhaustively searches through corpora. While it has some "smart filtering," it's not going to do much better than other tools when you're searching corpora that don't fit into memory.

    I do have plans to add an indexing mode to ripgrep[1], but it will probably be years before that lands. (I have a newborn at home, and my free-time coding has almost completely stopped.)

    [1] - https://github.com/BurntSushi/ripgrep/issues/1497

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • min-sized-rust

    🦀 How to minimize Rust binary size 📦

  • https://github.com/johnthagen/min-sized-rust

    In term of performance, well, it depends on the binary. For example for cp, most of the time is spending copying the files.

  • just

    🤖 Just a command runner

  • Have you seen Just? https://github.com/casey/just

    It's make-like but supposedly improves on some of the arcane aspects of make (I can't judge how successful it is at that as I've never used make in anger).

  • embedded-graphics

    A no_std graphics library for embedded applications

  • We use it a bit for https://github.com/embedded-graphics/embedded-graphics and I have to say I love it. It's just the right balance between configuration variables/constants and "a folder full of bash scripts". I highly recommend giving Just a try.

  • Rust-for-Linux

    Adding support for the Rust language to the Linux kernel. (by Rust-for-Linux)

  • Another step forward to add Rust language support to the Linux kernel: https://github.com/Rust-for-Linux/linux

  • build2

    build2 build system

  • Yes, please, that would be very helpful: https://github.com/build2/build2/issues

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • BSDCoreUtils

    BSD coreutils is a port of many utilities from BSD to Linux and macOS.

  • The Rust implementation that we are discussing is MIT licensed and as far as I know not part of GNU.

    I do not believe that "Coreutils" is trademarked by GNU.

    There are other projects that use the name "Coreutils" that are not part of GNU:

    https://github.com/DiegoMagdaleno/BSDCoreUtils

  • sd

    Intuitive find & replace CLI (sed alternative)

  • Sed isn't part of the coreutils, though, so this would be outside of the scope of at least this project.

    There is https://github.com/chmln/sd written in Rust, but it's far from a sed replacement – it's reducing it to search and replace for fixed strings, as far as I can tell.

  • cw

    A Rust wc clone (by Freaky)

  • Having written a Rust wc implementation a few years ago (https://github.com/Freaky/cw), I had a look at theirs.

    It's pretty naive - a simple linewise read_until loop, a conditional to avoid word splitting and such if it's not needed, and for some reason it collects results into an array and prints when it's done rather than printing as it goes.

    It doesn't support --files0-from like GNU wc, so isn't a drop-in replacement from that perspective. It also has the sadly common Rust trope of only supporting filenames that are valid UTF-8.

    It doesn't seem overly slow considering its simplicity - usually trading blows with GNU and BSD wc. Perhaps the most glaring omission is the lack of a fast path for -c, which should reduce to a stat() call. Also unfortunate not to use the excellent bytecount crate to provide a very fast -l/m path.

    The read_until loop also makes its memory use unpredictable compared with other wc's. If you run it on /dev/zero it will try to eat your computer.

  • fab-rs

    The fabulous, aspirationally Make-compatible, fabricator of files.

  • Someone is working on this, and could use help: https://github.com/michaelmelanson/fab-rs

    I would love to see this completed to the point of passing the GNU make testsuite. Having make as a modular library would be wildly useful.

  • samurai

    ninja-compatible build tool written in C

  • You could probably post-process samurai (a rewrite of ninja into C) into a single-file: https://github.com/michaelforney/samurai

  • regex

    An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.

  • The regex engine I maintain includes benchmarks against onig. It's been a couple years since I looked closely, but last I checked, onig was not particularly fast. Compare https://github.com/rust-lang/regex/blob/master/bench/log/07/... vs https://github.com/rust-lang/regex/blob/master/bench/log/07/...

  • shake

    Shake build system

  • https://shakebuild.com/ agrees with you:

    > Large build systems written using Shake tend to be significantly simpler, while also running faster. If your project can use a canned build system (e.g. Visual Studio, cabal) do that; if your project is very simple use a Makefile; otherwise use Shake.

    For what it's worth, if I remember right, Shake has some support for interpreting Makefiles, too.

    > [...] the way more complicated syntax of Shake [...]

    For context, Shake uses Haskell syntax, because your 'Shakefile' is just a normal Haskell program that happens to use Shake as a library and then compiles to a bespoke build system.

  • fancy-regex

    Rust library for regular expressions using "fancy" features like look-around and backreferences

  • Ahh, very interesting, thanks for sharing! Do you have any thoughts around why that is? I presume that's due to Oniguruma supporting a much broader feature set and something like fancy-regexp's approach with mixing a backtracking VM and NFA implementation for simple queries would be needed for better perf? (I am aware you played a role in that) [1]

    I have been playing around with regex parsing through building parsers through parser combinators at runtime recently, no clue how it will perform in practice yet (structuring parser generators at runtime is challenging in general in low-level languages) but maybe that could pan out and lead to an interesting way to support broader sets of regex syntaxes like POSIX in a relatively straightforward and performant way.

    [1] https://github.com/fancy-regex/fancy-regex#theory

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts