No announcement yet.

Fedora 30 To Take Stab At Eliminating Excessive Linking

  • Filter
  • Time
  • Show
Clear All
new posts

  • #41
    Originally posted by F.Ultra View Post
    Ok so when it's ELF it's insane and stupid but if it's PE then it's just "not very difficult" . See why I say that you are emotionally invested here and not applying logic?

    Call me back when you discover that one or several of your clients decided (or rather their tool chains decided) to import your DLL by ordinal instead of by name and the havoc that ensures when you added a new function to said DLL without making sure that the ordinals where the same (since you never used a .def in the first place).
    Well you should use a .def, not just for ordinals, it just makes it clearer exactly which functions you export, in one central place in your project/repository. You won't have to use dllexport attribute anymore, either! It's just good design IMO. You won't even have to document which functions you export, it will be right there in the .def file. (instead of having to look through random files all over)

    And you're completely missing the point what I call insane about ELF. The global namespace should simply not exist. Ordinals maybe shouldn't exist -- they're rarely used anyway (or at all?), but I never argued for them, and also I never said that DLL is *perfect*. I simply said it's sane, unlike ELF. Sane doesn't mean perfect tho.

    Originally posted by F.Ultra View Post
    Yes I got it the first time that you wrote this but it still does not mean that I don't agree with you (people can not agree while still understanding your point see). Also I have been doing binary distribution on several systems since Windows was 16-bit so I do have some experience in the matter.
    It's not a matter of agreeing or not.

    You asked what are the problems with ELF's global namespace (that DLL doesn't share). I gave you that answer. This is a fact, not an opinion. You can't disagree with facts. It is simply a problem that DLL does not have. Of course you can disagree with the severity of such problem, but considering we have flatpak, I guess it's quite a serious one.

    And anyway I wasn't talking about the severity of such problem (though it ranks quite high for me, a huge design issue), but about the problem itself existing. Anyway, good at least you understood what the problem ELF has compared to DLL. (this and only this, like you said, unstable libraries is a completely different topic, not blaming ELF there, but "Linux userland" which is a totally different thing lol)

    BTW: 16-bit Windows experience shouldn't really apply here. Probably I understand now why you think DLLs are so unstable. 16-bit Windows loaded all processes in the same address space, just like DOS (albeit, it used protected mode). That's, indeed, quite the spaghetti mess! It's unfair to assume that's how 32-bit DLLs work, though.

    Originally posted by F.Ultra View Post
    You think that your problem is ELF while it in reality is that Linux does not have a common set of system libraries like Windows does. It's as simple as that. The problem is not that libdependant suddenly on some distro links to GTK3, the problem is that you cannot assume that libdependent even exists on that distro to begin with so you have no other option that to bundle or do static linking.
    But that's besides the point! Like I said, even if it exists, you can still conflict on Linux.

    I'm giving you a fact of where ELF simply fails compared to DLL. It doesn't matter how Linux userland actually is. ELF doesn't equal Linux. ELF is ELF. Just imagine if Windows used ELF: it would suffer from that problem. So ELF is clearly inferior compared to DLL. Now imagine if Linux used DLLs: it would not suffer from that issue.

    And you can "assume" some libraries are installed, or prompt the user to install them. You know, some apps on Windows come with redistributables, which you install.

    Imagine installing a redist for your distro that depends on gtk3, then trying to launch your app bundled with gtk2. Would only work if it's ran under Wine because it uses DLLs, or if Linux supported loading DLLs directly.

    What you said about versioned symbols: I'm not disagreeing there. But, that's a different topic (I ranted about that in the flatpak thread, not the Fedora thread). I still called it "Linux userland", but that's not ELF's problem. I never blamed ELF for the choice of the stupid library designers, but I did blame the "userland" (since userland includes everything, overall).
    Last edited by Weasel; 08-04-2018, 01:05 PM.