PpHd
a écrit :
1. La caractere 'easy to use' n'a rien a voir avec la technologie employee.
Si. Une bonne technologie est une technologie facile à utiliser.
2. Faire un linkage a l'execution est plus complexe qu'un linkage a la compilation, et necessite une techno superieure.
Ce n'est pas parce que c'est plus complexe que c'est mieux.
Mais meme pour une lib statique, c'est deconseille. Ne serait ce que lorsqu'on melange des .h et des .a de differentes versions (Ca m'est deja arrive, et c'est pas beau).
C'est surtout pas malin...
Pourquoi faudrait-il adapter son code assembleur ?
Parce que les programmeurs assembleur se comptent sur le doigt d'une main de nos jours.
Oui, j'en fais partie, mais personnellement, ça ne me dérange pas de modifier quelques lignes pour m'adapter à un changement d'ABI tant que ça n'arrive pas trop souvent. Si on est trop paresseux pour le faire, on n'a qu'à programmer en C.
Surtout que le gain est faible.
Mais il existe quand-même.
C'est bien pour ca qu'il faut avoir de l'experience pour eviter de refaire des versions incompatibles sans arret.
Du point de vue pratique, je ne connais aucune librarie qui a connu cela.
Sur calculatrice peut-être, mais c'est parce qu'il n'y a que très peu de librairies dynamiques. Sur PC, cf.
libstdc++... Non seulement l'ABI du compilateur change sans arrêt, mais la librairie elle-même aussi. Et la version qui accompagne
GCC 3 est très différente de celle qui accompagnait
GCC 2.
Il faut le faire. Il faut y penser.
Mais c'est le boulot de l'auteur de la librairie, pas celui du programmeur qui l'utilise.
Faux car une librarie dynamique DOIT garantir la compatibilite de l'ABI.
Ou alors c'est elle qui a tord, et pas toi. Tu peux te retourner contre elle.
Et la librairie statique est censée garantir la compatibilité de l'API. Si tu recompiles et que ça ne marche pas, il y a un problème.
Plus tous les trucs d'imcompatibilite.
Il ne devrait pas y en avoir.
Mais ce n'est pas suffisant.
Pour moi oui.
Et si ce message disparait rapidement du forum a cause d'une actualite surchage ?
Il aura quand-même été lu.
Parce que tu n'utilises pas beaucoup de librarie statique independante de ta volontee.
D'un côté, tu as raison.
h220xtsr.a et
tigcc.a ne sont pas vraiment indépendantes de ma volonté.
h220xtsr.a est entièrement en mon contrôle, et pour
tigcc.a, je peux opposer un changement s'il me pose un vrai problème. D'un autre côté, tu as tord: même si la librairie n'est pas en ton contrôle, elle n'est quand-même pas censée te faire travailler plus qu'une simple recompilation.
1. C'est l'administrateur que le fait. Il peut y avoir un administrateur par classe par ex.
Ce sont quand-même des milliers de personnes à devoir faire le travail plutôt qu'une seule.
2. C'est moins frequent que pour une lib statique. Par exemple, Genlib n'a pas bouge en 3 ans.
Et
TIGCCLIB garde la compatibilité source depuis qu'elle existe.
Un probleme peut survenir sans que l'utilisateur ne l'ait encore vu. S'il sait qu'un bug grave (par exemple, une corruption du certificat) est suceptible d'arriver dans une lib statique. Il voudra mettre a jour ces programmes. Que peut-il faire avec des libs statiques ? Rien, il ne peut rien faire !
Tu me montreras la librairie susceptible de corrompre les certificats.

Je ne l'ai jamais vue. Et c'est tellement improbable que je ne pense pas qu'un plantage puisse faire ça.
Mais les libs dynamiques imposent plus de contraintes que les libs statiques, donc elles sont moins soumises au changement.
Faux.
Je n'ai jamais vu un auteur de librairie statique sur calculatrice se dire: "Tiens, on va rajouter un halo blanc à tous les grands sprites. Tant pis si les auteurs comptaient sur le fait qu'il n'y a pas d'effets artificiels de ce genre..."
Rien que pour cela, c'est une raison suffisante d'avoir une version kernel.
Non. La version
_nostub marche sur toutes les TI-89/92+/V200.
On pouvait le faire a la main. Ca ne changeait guere d'une compil a l'autre.
C'est quand-même lourd. J'en ai fait l'expérience en portant
Backgammon pour
Fargo (cf. topic
Backgammon, dès que j'aurai fini de poster ça). J'ai bien eu
ld-tigcc sous la main (donc en théorie le support des librairies statiques), mais ça ne m'a pas servi vu que j'ai été obligé de porter les fonctions dont j'avais besoin une par une.
Cela depend de ce que l'on met en statique. Et frnachement il y a peu de chance si on a bien defini l'ABI.
Il y a beaucoup de chances... On ne peut en général pas couper une librairie en 2 de cette manière.
C'est vraiment genant a ce point la ?
Oui.
Moi j'y vois des avantages.
Est-ce un avantage de devoir récupérer la version à jour de chaque libraire séparément au lieu de mettre à jour le programme et d'avoir les librairies qu'il utilise mises à jour automatiquement?
C'est pas de moi ! Ca existe vraiment dans l'industrie, et ca signifie grosso merdo 'couche intermediaire entre l'hard et le soft'. J'ai pas exactement compris la difference avec le systeme d'exploitation.
Même toi, tu ne comprends pas le terme, donc...
Le tout.
Le header de commentaires prend très peu de place. Une vingtaine d'octets. Le header kernel, lui, prend une cinquantaine d'octets sans compter le stub.
Quant au code de démarrage, il prend un peu plus de place, mais seulement si on a besoin de ses fonctionnalités. Il est normal que les fonctionnalités prennent de la place. Pour les fonctionnalités qu'il offre, le code de démarrage de
TIGCCLIB est très compact.