• BatmanAoD@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    4 days ago

    That’s not a fair comparison at all. Busybox is specifically optimized for size, and to accomplish that, leaves out a large number of GNU compatibility features; uutils is designed to mimic GNU as closely as possible, and I’m assuming that the binary you’re looking at is not the “small-release” build. Just to see what that looks like, I’ve built it that way now and that puts it under 7 MiB; still much larger than busybox, but it shows how much the optimization choices matter.

    • Samueru_sama@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      4 days ago

      That’s not a fair comparison at all. Busybox is specifically optimized for size, and to accomplish that, leaves out a large number of GNU compatibility features

      Such as? busybox provides a nice interactive shell, awk, bc, wget and much more. I know GNU awk has a lot more features than posix awk but awk is not part of the uutils anyways.

      busybox also implements [[ from bash, none of this is provided by uutils or coreutils.

      EDIT: busybox also provides grep while the uutils/coreutils don’t.

      I’ve built it that way now and that puts it under 7 MiB; still much larger than busybox, but it shows how much the optimization choices matter.

      I’m assuming this uses -Os which means performance hit, (iirc busybox also uses -Os so it is fair comparison), still we are looking at 7x larger binary.

      • BatmanAoD@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        4 days ago

        From the busybox “about” page:

        The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts… BusyBox has been written with size-optimization and limited resources in mind.

        Neither of these is true for uutils, which is specifically targeting perfect GNU compatibility. I don’t think there is a comparable Rust project for minimized utilities.