4 ms·
This is exactly the approach of newer application formats in the Linux world such as flatpak and snaps. The problem, though, is that all the libraries are dupl
by dahfizz 8y ago
This is exactly the approach of newer application formats in the Linux world such as flatpak and snaps.
The problem, though, is that all the libraries are duplicated on disk. Flatpak and snaps get around this by recognizing when there is a shared dependency and only downloading it once. But if you "bake in" all your dependecies into a single executable file, that would cause pretty significant inflation for program sizes.
This may be less of an issue now as disk space gets cheaper and cheaper, but it still feels like a step in the wrong direction.
- wtetzner 8y agoIt would be cool to have a filesystem that unique'd storage of identical objects under the hood. E.g. even though the user sees a particular filename, it's actual stored using a SHA to detect duplicates. If you edit a file, it could do a copy-on-write, to ensure you're not inadvertently changing a different file.
- db48x 8y agoDeduplicating filesystems do exist; ZFS is one of the better examples. Of course, maintaining the indexes turns out to become a larger percentage of your cpu time, and those indexes have to live somewhere so they occupy a lot of memory. (You could reduce that impact by doing file-level rather than block -level deduplication, but then you also lose many of the benefits) If you want something that's higher level, there are tools like git annex that do this.
- ComputerGuru 8y agoZFS (and others) feature block-based deduplication, not rule-level deduplication which is cheap and fast (though less “effective”).
- ComputerGuru 8y ago*file-level
- rdc12 8y agoThere was Venti in Plan9 that had this style of approach. [1] https://www.usenix.org/legacy/events/fast02/quinlan/quinlan_html/ https://www.usenix.org/legacy/events/fast02/quinlan/quinlan_...
- zem 8y agothe other issue is that when a bug or vulnerability is patched in the shared code, you no longer get to fix every dependency by updating a single synamic library.
- amenghra 8y agoIf it’s easy to inspect the packages, then you just recursively fix everywhere. It’s better than having static libraries that you cannot fix without recompiling from source.
- zamalek 8y agoThis is true of Win 3.1 and all versions subsequent (unless a JIT is involved). The problem with this is DLL hell. You need a central repository of images for mapping, but that leads to conflicts. Possibly a good opportunity for CAS?