[GTALUG] A find alternative: fselect
o1bigtenor
o1bigtenor at gmail.com
Thu Jun 13 07:18:09 EDT 2019
On Thu, Jun 13, 2019 at 1:12 AM D. Hugh Redelmeier via talk
<talk at gtalug.org> wrote:
>
> | From: o1bigtenor via talk <talk at gtalug.org>
>
> | > Rust culture and practice doesn't seem to like shared libraries.. I do.
> | > (Just like I find the update model for persistent containers unfortunate.)
>
> | would you please explain the above last statement?
>
> As I understand it, Rust programs are statically linked. Furthermore,
> a Rust program tree has copies of "crates" that only get updated when
> you ask to have them upgraded (re-imported from crates.io).
>
> Contrast that with C source. System header files, referenced by
> #include in the program, are updated whenever updates are supplied by
> the distro and accepted when the sysadmin applies updates to the
> host system. Static and dynamic libraries are updated the same way.
>
> So: if there is an update that fixes a bug, including a security bug:
>
> - for a dynamic library, a system update will fix the bug in every
> binary program that uses it. No re-compilation is needed.
>
> - for a static library, a system update plus a re-link of each program
> that uses it will fix each of them. Recompilation isn't needed but
> that isn't often an important advantage.
>
> - for a header file, a system update plus a recompilation of each
Gord
> program that uses it will fix the each of them.
>
> - For Rust: each Rust project must decide to update the version that
> is incorporated the crate. I don't know that this is nearly as
> automated as Linux distro system updates are. I don't get the
> feeling that performing such updates are part of the Rust culture.
> Then a project recompile/rebuild is required.
>
> - for containers: for updates to libraries (or other components) the
> container must be rebuilt. This must be done on a system that
> itself has been updated. Since there are many container
> technologies, I cannot be more explicit.
>
> Summary: one system-wide update that fixes a shared library, all C
> programs on that system are fixed too. This isn't true of Rust
> programs. This isn't true of things inside containers.
>
> On the other hand, bug fixes might make a calling program behave
> differently. That change might actually destabilize some system.
> Some folks thing stability is more important than bug fixes.
>
> Also: Rust libraries are young and thus change more frequently than C
> libraries. Often for reasons other than bug fixes. This may amplify
> the previous argument for stability.
>
> Windows has suffered from "dll hell" with undisciplined use of shared
> libraries. So much so that they often end up not being shared or
> updated. But the Unix world, generally, has not. This Windows
> experience has given shared libraries a bad name.
>
> To a certain extent, if you link your C program statically, you can
> execute its binary on any Linux distro. This does not work with
> shared libraries.
>
> Shared libraries significantly reduce the size of programs. Rust
> binaries are probably quite a bit larger than C binaries.
Thank you for your explanation!!!
Given what you have described I'm wondering if 'Go' functions
similarly - - - and then maybe that is why LXD is currently only supported
when its installed using Snapd and the miasma forces updating - - -
no matter what (max 2 months).
I don't check weekly for system updates here but I do try to keep my
systems updated for security reasons but I am very very uncomfortable
when the right to control the timing of the updating is taken from me.
Thanking you for your assistance!!
Regards
More information about the talk
mailing list