Este aprimoramento das ferramentas do desenvolvedor é novo no Developer 9/07.
A partir desta versão, os tipos uid[lowbar]t e gid[lowbar]t foram alterados dos tipos long (binários de 32 bits) e int (binários de 64 bits) para o tipo uint32[lowbar]t. Este tipo é usado para os binários de 32 bits e 64 bits. Esta alteração propicia compabilidade com outros sistemas operacionais.
Como parte da alteração do tipo de uid[lowbar]t e gid[lowbar]t , a implementação do Solaris também reserva os valores uid[lowbar]t e gid[lowbar]t, que variam de 231 to 232 - 2. O valor 232 - 1 continua reservado para uso como valor sentinela. Valores que são atribuídos neste novo intervalo são atribuições temporárias feitas pelo novo serviço de mapeamento de identidade. Observe que esses valores não persistem após uma reinicialização do sistema. Assim, os aplicativos não devem gravar valores de UID ou GID em arquivos persistentes no sistema de arquivos. Tampouco devem enviar esses valores em uma conexão de rede como forma de fazer referência a uma identidade persistente. Para persistência, use o nome de identidade correspondente. Utilitários do Solaris, como o comando tar, e o protocolo de rede NFSv4 já seguem este procedimento.
Uma vez que os tipos uid[lowbar]t e gid[lowbar]t antigos e novos ocupam a mesma quantidade de espaço, binários existentes não são afetados. Por exemplo, binários que são compilados com definições mais antigas. Nestes casos, não é necessário recompilar o código. Binários, arquivos de objetos, assim como bibliotecas compartilhadas, incluindo bibliotecas vinculadas a bibliotecas compartilhadas do Solaris, também não são afetados.
O impacto dessas alterações é como a seguir:
Para binários C recém-compilados – Quando o código é recompilado, as práticas de desenvolvimento padrão devem identificar qualquer problema causado por essas alterações no tipo uid[lowbar]t e gid[lowbar]t. Nos casos em que a alteração de sinal possa ter implicações para a semântica do código, o compilador de C e, ou, o processo de lint produzem determinados avisos. Observem os desenvolvedores que quaisquer avisos gerados como resultado desta alteração devem ser inspecionados.
Para código C++ – Como parte do nome do símbolo da função, os compiladores de C++ aplicam uma técnica chamada “name mangling”, desconfiguração do nome. Esta técnica codifica os nomes primitivos de tipo que são usados nas assinaturas de chamadas de função. A alteração no tipo uid[lowbar]t e gid[lowbar]t resulta em uma diferente desconfiguração de nome para as funções de C++ e objetos.
Como no caso de binários C, binários e bibliotecas de C++ continuam a funcionar como antes. A exceção é quando as bibliotecas contêm interfaces que usam uid[lowbar]t e gid[lowbar]t.
O Solaris OS não expõe as interfaces de C++ desta natureza. Assim, não se espera qualquer incompatibilidade com as bibliotecas do Solaris.
Para obter detalhes sobre as conseqüências desta alteração, inclusive avisos, consulte Alterações nos tipos uid_t e gid_t no Developer 9/07 no Notas de versão do Solaris Express Developer Edition.