Table of Contents
Commit 2008-12-20
Modifs
Fac binaire portable
Depuis l'utilisation intensive de size_t
dans le code, les FACs binaires ne sont plus compatibles entre machines. Pour y remédier, je liste ici les différents types et leurs tailles respectives sur nos machines:
host | corto | garfield | calimero | clifton | chinook | |
---|---|---|---|---|---|---|
OS | win32 | vista64 | linux-x86 | linux-64 | alpha-linux | |
byte order | little | little | little | little | little | |
char | signed | signed | signed | signed | signed | |
system | 32 bits | 64 bits | 32 bits | 64 bits | 64 bits | Remarques |
sizeof(char) | 1 | 1 | 1 | 1 | 1 | OK |
sizeof(short) | 2 | 2 | 2 | 2 | 2 | OK |
sizeof(int) | 4 | 4 | 4 | 4 | 4 | OK |
sizeof(long) | 4 | 4 | 4 | 8 | 8 | = sizeof(void*) SAUF Vista64! |
sizeof(float) | 4 | 4 | 4 | 4 | 4 | OK |
sizeof(double) | 8 | 8 | 8 | 8 | 8 | OK |
sizeof(size_t) | 4 | 8 | 4 | 8 | 8 | = sizeof(void*) |
sizeof(void*) | 4 | 8 | 4 | 8 | 8 | fonction du système 32/64 bits |
sizeof(bool) | 1 | 1 | 1 | 1 | 1 | OK |
sizeof(__int64) | 8 | 8 | utilisable sous Windows | |||
sizeof(long long) | 8 | 8 | 8 | utilisable sous Unix |
Comme on peut le voir, toutes nos machines sont de type “little endian” et utilisent des “signed char” par défaut. Si on veut un jour lancer Metafor sur Mac ou sur Sun et relire les FACs sur des machines normales, il faudra faire la traduction “big-endian” ⇒ “little-endian” (je m'en chargerai, c'est pas difficile).
Bref, on voit que les FACs clifton et chinook sont identiques et peuvent être relus sous Vista x64 sans problème (parce qu'on n'utilise pas des long
!). De même, les FACs calimero sont lisibles sous WinXP, mais illisibles sous Vista x64 (ça va merdouiller au premier size_t
rencontré).
La plupart des types sont codés identiquement sur toutes les machines mis à part long
et size_t
.
- Pour
long
, il n'y a pas de problème puisqu'on n'utilise jamais ce type… et qu'on ne l'utilisera jamais! - Pour
size_t
, l'idéal est de sauver un entier non signé sur 64 bits quelle que soit la machine utilisée.
Avec cette méthode, tous les FACs sont compatibles sur les machines actuelles.
L'inconvénient est que tous les anciens FACs calimero et WinXP deviennent illisibles. Bref, il faudra refaire tourner nos anciens cas-tests (…ah non, pas les miens vu que je suis sous Vista-x64 )
Suppression des résidus DECCXX
Il est temps d'enterrer définitivement le vieux système OSF:
MetaStrStream
peut être avantageusement remplacé parstd::ostringstream
(qui buguait sous OSF).template<>
peut être utilisé partout où il le faut d'après Stroustrup.- J'ai viré les résultats de batterie OSF (récupérable par “svn -r” pour les nostalgiques).
Fichiers ajoutés/supprimés
— Romain BOMAN 2007/12/20 09:04