• 0 Posts
  • 38 Comments
Joined 1 year ago
cake
Cake day: June 8th, 2023

help-circle



  • Yeah, but there’s by lot more security improvement by having ability to apply fix for severe vulnerability ASAP than weakening from possible incompativilities. Also, i wonder why i never brought it up, shared libs are shared, so you can use them across many programming languages. So, no, static is not the way to replace containers with dynamic linking, but yes, they share some use cases.





  • I mean, you could have GUI for some CLI tool.

    Yes, I’ve seen that pattern before, but:

    1. I wouldn’t expect them to have many libraries in common, other than platform libraries like libc, since they have completely different purposes.
    2. I was under the impression that Docker is for server applications. Is it even possible to run a GUI app inside a Docker container?

    Also, if you are going to make something that have more than one binary

    If they’re meant to run on the same machine and are bundled together in the same container image, I would call that a questionable design choice.

    In the time i was thinking about some kind of toolkit installed though distrobox. Distrobox, basically, allows you to use anything from containers as if it was not. It uses podman, so i guess it could be impossible to use docker for GUI, although i cant really tell.

    inlining is, as matklad once put it, the mother of all other optimizations. Dynamic linking leaves potentially a lot of performance on the table.

    Yes, but static linking means you’ll get security and performance patches with some delay, while dynamic means you’ll get patches ASAP.


  • That seems like a questionable design choice.

    I mean, you could have GUI for some CLI tool. Then you would need to run binary GUI, and either run binary CLI from GUI or have it as daemon. Also, if you are going to make something that have more than one binary, you’ll get more space overhead for static linking than for containers

    Compared to the downsides of using a container image (duplication of system files like libc, dynamic linking overhead, complexity, etc), this is not a compelling advantage.

    Man, that’s underestimating compiling time and frequency of updates of various libs, and overestimating overhead from dynamic linking (it’s so small it’s calculated in CPU cycles). Basically, dynamic linking reduces update overhead, like with static linking you’ll need to download full binary every update, even if lib is tiny, while with dynamic you’ll have to download only small lib.









  • That’s why semver exists. Major-update-number.Minor-update-number.Patch-number Usually, you don’t care about patches, they address efficency of things inside of lib, no Api changes. Something breaking could be in minor update, so you should check changelogs to see if you gonna make something about it. Major version most likely will break things. If you’ll understand this, you’ll find dynamic linking beneficial(no need to recompile on every lib update), and containers will eliminate stability issues cause libs won’t update to next minor/major version without tests.