Existe-t-il des dissortingbutions Linux axées sur la compatibilité descendante binary?

Si vous construisez un exécutable qui fonctionne sur une version actuelle de Windows, cet exécutable fonctionnera probablement pendant de nombreuses années sur les versions plus récentes de Windows. Microsoft travaille très dur pour assurer cela.

Avec Linux, on s'attend à ce que vous ayez le code source du logiciel que vous utilisez, et par conséquent, briser la compatibilité binary est OK tant que vous maintenez la compatibilité avec la source. Cela entraîne la disparition progressive des anciennes versions de la bibliothèque et la destruction périodique des éléments qui fonctionnaient auparavant.

Pour quelqu'un utilisant Linux comme plate-forme de jeu, c'est un problème, car les jeux ont tendance à être dissortingbués uniquement sous forme binary. Cela rend les ports Linux mal à l'œil quand ils se cassent, mais j'ai l'printing qu'il serait plus productif d'essayer de résoudre ce problème en général, plutôt que d'attendre que tout le monde mette à jour leurs ports.

Y a-t-il des dissortingbutions qui essaient de préserver la compatibilité binary, pas nécessairement en conservant toutes les anciennes versions mais en conservant au less les vieux noms, de sorte qu'un binary compatible avec la version n devrait aussi fonctionner avec la version n + 1?

La chose la plus proche que je puisse find est "Steam Runtime" de Valve, qui est une couche de compatibilité binary disponible uniquement pour les programmes dissortingbués via Steam.

Fondamentalement, cela se résume à: vous ne pouvez pas garder la compatibilité binary et introduire de nouvelles fonctionnalités , car ces choses vont directement l'un contre l'autre dans la plupart des aspects. Si vous introduisez de nouvelles fonctionnalités majeures, vous devrez à la fin changer l'ABI (généralement peu de time après les changements dans l'API). Maintenant, vous pouvez avoir des symboles versionnés (comme par exemple Glibc), mais cela augmente la taille des bibliothèques (et peut également entraîner des pénalités de performance lors du chargement d'un binary) et les développeurs ne veulent certainement pas le garder en général bibliothèques (le code hérité contient des bogues que personne n'est intéressé à réparer).

La façon habituelle de contourner cela du côté de la dissortingbution est double:

  1. ne changez pas les versions – ceci est typique pour les dissortingbutions de niveau Entreprise comme RedHat et SUSE, ainsi que pour d'autres (Debian, Slackware, Ubunty LTS et probablement leurs clones).

  2. permettre l'installation de différentes versions d'une bibliothèque en même time.

Sur le dissortingbuteur de l'application, cela est géré de la même manière que sur windows: tout ce qui est nécessaire dans le package de dissortingbution. Oui, c'est comme cela que l'on fait souvent sur Windows – c'est aussi l'une des raisons pour lesquelles le système Windows classique a plusieurs fois plus d'espace disque que Linux avec les mêmes fonctionnalités – les applications ne partagent que très peu entre elles et ont leurs propres copys quelque part. Vous pouvez penser à chaque application GTK / Qt avec sa propre stack GTK / Qt. Il peut avoir quelques avantages mais les inconvénients sont également nombreux. Par exemple, du sharepoint vue de la security, c'est un cauchemar dans Technicolor TM . Si les binarys sont liés statiquement, c'est même en FullHD.