Re:Bzip2 crate switches from C to 100% rust
by guappa on Wednesday June 18, 2025 @06:34AM
(#44308579)
Can you run ldd on any binary you currently have on your machine that is written in rust?
I eagerly await the results!
Re:Bzip2 crate switches from C to 100% rust
by whytevuhuni on Wednesday June 18, 2025 @07:47AM
(#44309036)
I’m genuinely curious now, what made you so convinced that it would be completely statically linked?
Re:Bzip2 crate switches from C to 100% rust
by IshKebab on Wednesday June 18, 2025 @08:43AM
(#44309399)
I think people often talk about Rust only supporting static linking so he probably inferred that it couldn't dynamically link with anything.
Also Go does produce fully static binaries on Linux and so it's at least reasonable to incorrectly guess that Rust does the same.
Definitely shouldn't be so confident though!
Re:Bzip2 crate switches from C to 100% rust
by CamouflagedKiwi on Wednesday June 18, 2025 @10:20AM
(#44310146)
Go may or may not do that on Linux depending what you import. If you call things from `os/user` for example, you'll get a dynamically linked binary unless you build with `-tags osusergo`. A similar case exists for `net`.
Re:Bzip2 crate switches from C to 100% rust
by guappa on Wednesday June 18, 2025 @04:43PM
(#44313129)
go by default links libc
Re:Bzip2 crate switches from C to 100% rust
by IshKebab on Thursday June 19, 2025 @08:05AM
(#44317864)
It doesn't. See the sibling comment.
I mean, sure, but what's your point?
Here's nu, a shell in Rust:
$ ldd ~/.cargo/bin/nu
linux-vdso.so.1 (0x00007f473ba46000)
libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007f47398f2000)
libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f4739200000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f473b9cd000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4739110000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4738f1a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f473ba48000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f473b9ab000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f4738e50000)
And here's the Debian variant of ash, a shell in C: $ ldd /bin/sh
linux-vdso.so.1 (0x00007f88ae6b0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f88ae44b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f88ae6b2000)
Re:Bzip2 crate switches from C to 100% rust
by guappa on Wednesday June 18, 2025 @08:20AM
(#44309236)
Well seems I was wrong about linking C libraries from rust.
The problem of increased RAM requirements and constant rebuilds are still very real, if only slightly less big because of dynamically linking C.
Re:Bzip2 crate switches from C to 100% rust
by bronson on Wednesday June 18, 2025 @10:18AM
(#44310134)
That would have been a good post if you'd stopped at the first paragraph.
Your second paragraph is either a meaningless observation on the difference between static and dynamic linking or also incorrect. Not sure what your intent was.
[In case anybody is confused by your utterance, yes of course this works in Rust]