Questo miglioramento agli strumenti di sviluppo è stato introdotto nella versione Developer 9/07.
A partire da questa versione, i tipi uid_t e gid_t sono stati trasformati da long (file binari a 32 bit) e int (file binari a 64 bit) in uint32_t. Questo tipo viene utilizzato sia per i file binari a 32 bit che per quelli a 64 bit. La modifica favorisce la compatibilità con altri sistemi operativi.
Nell'ambito della modifica del tipo di uid_t e gid_t , l'implementazione di Solaris riserva anche i valori di uid_t e gid_t compresi tra 231 e 232 - 2. Il valore 232 - 1 continua ad essere riservato come valore sentinella. I valori assegnati in questo intervallo sono assegnazioni temporanee effettuate dal nuovo servizio di mappatura dell'identità. Si noti che tali valori non vengono conservati dopo il riavvio del sistema. Di conseguenza, le applicazioni dovrebbero evitare di scrivere i valori UID o GID in file persistenti del file system. Allo stesso modo, dovrebbero evitare di inviare tali valori tramite la connessione di rete per fare riferimento a un'identità persistente. Per ottenere la persistenza, usare il nome dell'identità appropriato. I programma di utilità di Solaris, ad esempio il comando tar e il protocollo di rete NFSv4, sono già conformi a queste direttive.
Poiché i nuovi e vecchi tipi di uid_t e gid_t occupano lo stesso spazio, il funzionamento dei file binari esistenti non è influenzato dalla modifica. Si tratta ad esempio di file binari compilati con le vecchie definizioni dei tipi. In questi casi non è necessario ricompilare il codice. Anche il funzionamento dei file binari, dei file oggetto e delle librerie condivise, incluse quelle collegate alle librerie condivise di Solaris, non subisce nessuna alterazione.
L'impatto delle modifiche è il seguente:
Per i nuovi file binari C compilati – Quando il codice viene ricompilato, le normali procedure di sviluppo dovrebbero essere in grado di identificare eventuali problemi legati alle modifiche al tipo di uid_t e gid_t. Quando la modifica del segno ha implicazioni sulla semantica del codice, il compilatore C e/o il processo lint producono degli avvisi. Gli sviluppatori dovrebbero controllare tutti gli avvisi derivanti dalla modifica del tipo.
Per il codice C++ – Per il nome simbolico delle funzioni, i compilatori C++ utilizzano una tecnica denominata “name mangling” (decorazione dei nomi). Questa tecnica codifica i nomi dei tipi primitivi utilizzati nelle firme delle chiamate di funzione. La modifica dei tipi uid_t e gid_t comporta una decorazione diversa dei nomi delle funzioni e degli oggetti C++.
Come i file binari in C, anche i file binari e le librerie in C++ funzionano correttamente come in precedenza. L'unica eccezione si verifica quando le librerie contengono interfacce che utilizzano uid_t e gid_t.
Il sistema operativo Solaris non espone interfacce C++ di questo tipo. Quindi non dovrebbero verificarsi incompatibilità con le librerie di Solaris.
Per maggiori informazioni sulle conseguenze della modifica, incluse informazioni sugli avvisi, vedere Changes to uid_t and gid_t Types in the Developer 9/07 Release in Solaris Express Developer Edition Release Notes .