Ca me laisse songeur… Ok, je comprend mieux le problème, mais je vois :
- FILE ne fait pas partie de l'ABI Windows. CreateFile retourne un HANDLE, pas un FILE*. Du coup, ici on parle d'un compilo qui posent problème entre 2 versions, mais pas de l'ABI Windows, ou alors j'ai loupé un épisode. Windows ne me semble pas en faute.
- Du coup, le problème me semble être un truc du genre on évite de passer des pointeurs de trucs internes à des compilos. FILE n'est pas le même entre chaque compilo, chaque version de compilo. Bon, la grosse merde est que Microsoft change effectivement sa structure interne entre chaque version, mais je dirai que GCC peut faire pareil avec la même merde (faut tout recompiler)
Au final, l'avantage du libre est qu'on peut tout recompiler et utiliser la même version de libc, mais ton Unix n’échapperai pas au problème (ça dépend du compilo). C'est un inconvénient de l'avantage de pouvoir avoir des compilo différents avec des libc différentes et de laisser libre les gens à ne pas fournir le source pour recompiler soit-même.
J'en conclue toujours que c'et un problème du logiciel, qui n'a pas à filer des FILE* entre libs sauf en demandant d'avoir la même libc sous-jacente (mais si il veut, il peut filer de HANDLE). Et que ce problème peut aussi arriver sous Linux si il a deux libc (ce qui est possible). Sauf si j'ai mal compris quelque chose (parce que la, je ne suis pas sûr d’avoir tout compris), il ne faut pas tourner un inconvénient de Linux (n'avoir le droit qu'à une libc, et entre deux distro ça peut péter si tu compiles pas pour la même libc. libc.so est à sa 6ème itération libc.so.5…) : tu es sûr que si je file un FILE* venant de libc.so.5, ça passera sans broncher vers libc.so.0? Pas sûr… Ce n'est pas parce que par façon de faire des Linux on n'a pas souvent ce problème qu'il n'existe pas.
Bon, en conclusion, on peut dire que le libre (quoique : pas besoin d'être libre, suffit de filer le source, même non libre), c'est bien (tm), ça laisse la liberté aux gens de recompiler tout de leur côté avec la même lib et ne pas avoir ce genre de problème.
[^] # Re: Oui, mais.
Posté par Zenitram (site web personnel) . En réponse au journal Self serving. Évalué à 2.
Ca me laisse songeur… Ok, je comprend mieux le problème, mais je vois :
- FILE ne fait pas partie de l'ABI Windows. CreateFile retourne un HANDLE, pas un FILE*. Du coup, ici on parle d'un compilo qui posent problème entre 2 versions, mais pas de l'ABI Windows, ou alors j'ai loupé un épisode. Windows ne me semble pas en faute.
- Du coup, le problème me semble être un truc du genre on évite de passer des pointeurs de trucs internes à des compilos. FILE n'est pas le même entre chaque compilo, chaque version de compilo. Bon, la grosse merde est que Microsoft change effectivement sa structure interne entre chaque version, mais je dirai que GCC peut faire pareil avec la même merde (faut tout recompiler)
Au final, l'avantage du libre est qu'on peut tout recompiler et utiliser la même version de libc, mais ton Unix n’échapperai pas au problème (ça dépend du compilo). C'est un inconvénient de l'avantage de pouvoir avoir des compilo différents avec des libc différentes et de laisser libre les gens à ne pas fournir le source pour recompiler soit-même.
J'en conclue toujours que c'et un problème du logiciel, qui n'a pas à filer des FILE* entre libs sauf en demandant d'avoir la même libc sous-jacente (mais si il veut, il peut filer de HANDLE). Et que ce problème peut aussi arriver sous Linux si il a deux libc (ce qui est possible). Sauf si j'ai mal compris quelque chose (parce que la, je ne suis pas sûr d’avoir tout compris), il ne faut pas tourner un inconvénient de Linux (n'avoir le droit qu'à une libc, et entre deux distro ça peut péter si tu compiles pas pour la même libc. libc.so est à sa 6ème itération libc.so.5…) : tu es sûr que si je file un FILE* venant de libc.so.5, ça passera sans broncher vers libc.so.0? Pas sûr… Ce n'est pas parce que par façon de faire des Linux on n'a pas souvent ce problème qu'il n'existe pas.
Bon, en conclusion, on peut dire que le libre (quoique : pas besoin d'être libre, suffit de filer le source, même non libre), c'est bien (tm), ça laisse la liberté aux gens de recompiler tout de leur côté avec la même lib et ne pas avoir ce genre de problème.