Announcement

Collapse
No announcement yet.

Rust-Written Coreutils v0.0.18 Released With Improved GNU Compatibility

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rust-Written Coreutils v0.0.18 Released With Improved GNU Compatibility

    Phoronix: Rust-Written Coreutils v0.0.18 Released With Improved GNU Compatibility

    One of several notable open-source projects to rewrite key Linux software components with the memory-safety-focused Rust programming language is uutils as an alternative to GNU Coreutils. Released this weekend was uutils v0.0.18 that continues to enhance compatibility with the upstream GNU Coreutils programs...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    uutils exist for the same reason toybox exists.

    Comment


    • #3
      Originally posted by evasb View Post
      uutils exist for the same reason toybox exists.
      Toybox is a BSD licensed alternative to BusyBox written in C. The goals are according to the project are simplicity and smallness. The focus of uutils is Rust and cross platform. Not the same thing.

      Comment


      • #4
        But Rust binaries are statically compiled and quite big, will this mean that it will be chgrp 100 mb, chown 100 mb, chmod 100 mb, cp 100 mb, dd 100 mb, df 100 mb, ln 100 mb, etc?

        Comment


        • #5
          Originally posted by uid313 View Post
          But Rust binaries are statically compiled and quite big, will this mean that it will be chgrp 100 mb, chown 100 mb, chmod 100 mb, cp 100 mb, dd 100 mb, df 100 mb, ln 100 mb, etc?
          You can dynamically link. Rust binaries (if thats what you are implying), its just not the default.

          Comment


          • #6
            Originally posted by uid313 View Post
            But Rust binaries are statically compiled and quite big, will this mean that it will be chgrp 100 mb, chown 100 mb, chmod 100 mb, cp 100 mb, dd 100 mb, df 100 mb, ln 100 mb, etc?
            They're big if you write "hello, world" programs.
            I don't remember exactly, but the overhead from the standard library is something like 2-5MB. That's a flat cost and you can even cut into that if you want.
            That said, it will be much better once std-aware-cargo is figured out: https://doc.rust-lang.org/cargo/refe...html#build-std
            Last edited by bug77; 03 April 2023, 11:59 AM.

            Comment


            • #7
              Originally posted by uid313 View Post
              But Rust binaries are statically compiled and quite big, will this mean that it will be chgrp 100 mb, chown 100 mb, chmod 100 mb, cp 100 mb, dd 100 mb, df 100 mb, ln 100 mb, etc?
              Similar to busybox you can just use one binary with several symlinks to it (which make it behave differently depending on which symlink is used). With the community/uutils-coreutils package on ArchLinux the binary is 31MB.

              Comment


              • #8
                Yeah, 100MB is a bit of an exaggeration. For debug builds, maybe, but that's not unique to Rust. I wrote a program that could connect to MS Access with ODBC and write XML using the serde library, which weighed in around 5MB. That's still a lot for ls, but it doesn't have to be static, as others have said.

                Comment


                • #9
                  Originally posted by bug77 View Post
                  They're big if you write "hello, world" programs.
                  I don't remember exactly, but the overhead from the standard library is something like 2-5MB. That's a flat cost and you can even cu into that if you want.
                  $ pacman -Qi uutils-coreutils | grep '^Installed Size'
                  Installed Size : 32.26 MiB​
                  $ pacman -Qi coreutils | grep '^Installed Size'
                  Installed Size : 15.95 MiB​​
                  over twice as big as GNU coreutils, and that's with uutils using the "compile everything into a single binary like busybox" hack.

                  Comment


                  • #10
                    Originally posted by hotaru View Post
                    over twice as big as GNU coreutils, and that's with uutils using the "compile everything into a single binary like busybox" hack.
                    Among other reasons, because it does more stuff. For example, if that's built with default options, an assert failure will get you stack unwinding and, optionally, a traceback as a built-in feature of the binary, not something you have to have been running it under GDB for.

                    Comment

                    Working...
                    X