Crossposted from https://lemmy.ml/post/48563577

Initial release of FLI - really tiny and fast (like a 🪰) directory listing tool.

Initial Why: need some easy readable ls like tool for rpi to use via ssh.

Current Why: check if with Rust one can build core utils like tools faster and smaller.

  • Size:

18K - RPI ZERO W

51KB - Mac

  • Default mode streams readdir() => stdout with zero heap allocation.

  • Nice readabilty thx to (📄 and 🗂️) instead of text coloring

  • Written in no_std #rust + libc.

https:// github.com/tracyspacy/fli

  • BB_C@programming.dev
    link
    fedilink
    arrow-up
    5
    ·
    9 days ago
        "-C", "link-arg=-lstdc++",
        "-C", "link-arg=-lsupc++",
        "-C", "link-arg=-lgcc_s"
    

    Now, that’s just funny. But hey, you’re using -Os to keep that binary size low 😇

    And what’s with the global allocator being initialized in a module? (didn’t/don’t know if that even works)

    If you want to do things really minimally, check out the rustix crate which wraps syscalls directly.

    Otherwise, and if loading huge shared libraries is fine, then you might as well not go nostd at all, since you can just pass -C prefer-dynamic for that elusive magically-small std-using binary 🙄

    • tracyspcy@lemmy.mlOP
      link
      fedilink
      arrow-up
      2
      ·
      8 days ago

      "-C", "link-arg=-lstdc++", "-C", "link-arg=-lsupc++", "-C", "link-arg=-lgcc_s"

      good catch!

      rustix - take a look, thx.

      no_std was my deliberate choice. -C prefer-dynamic - it feels that it may be a more fragile option and add some hassles with cross compiling - something like error while loading shared libraries: ... so I have to provide libstd.so as well together with binary to rpi … where is the gain?