Guia de rastreamento dinâmico Solaris

Capítulo 41 Versionamento

No Capítulo 39Estabilidade, aprendemos sobre os recursos do DTrace para determinar os atributos de estabilidade dos programas em D criados por você. Ao criar um programa em D com os atributos de estabilidade apropriados, você talvez queira também vincular esse programa a uma versão específica da interface de programação de D. A versão da interface de D é um rótulo aplicado a um conjunto específico de tipos, variáveis, funções, constantes e tradutores disponibilizados para você pelo compilador de D. Se você especificar uma vinculação a uma versão específica da interface de programação de D, garanta que pode recompilar o seu programa em versões futuras do DTrace sem encontrar conflitos entre os identificadores do programa que você define e os identificadores definidos nas versões futuras da interface de programação de D. Você deve estabelecer as vinculações de versão de quaisquer programas em D que deseja instalar como scripts persistentes (consulte o Capítulo 15Script) ou usar em ferramentas em camadas.

Versões e releases

O compilador de D rotula conjuntos de tipos, variáveis, funções, constantes e tradutores, correspondentes a um release de software específico, usando uma seqüência de versão. Uma seqüência de versão é uma seqüência delimitada por ponto de inteiros decimais no formato “ x” (um release Principal), “x.y” (um release Secundário) ou “x.y.z” (um release Micro). As versões são comparadas quando se comparam os inteiros da esquerda para a direita. Se os inteiros mais à esquerda não forem iguais, a seqüência com o maior inteiro será a maior versão (e, portanto, a mais recente). Se os inteiros mais à esquerda forem iguais, a comparação prosseguirá para o próximo inteiro da esquerda para a direita, a fim de determinar o resultado. Todos os inteiros não especificados em uma seqüência de versão são interpretados como se tivessem o valor zero durante uma comparação de versão.

As seqüências de versão do DTrace correspondem à nomenclatura padrão da Sun para versões de interface, conforme descrito em attributes(5). Uma alteração na interface de programação de D é acompanhada por uma nova seqüência de versão. A tabela seguinte resume as seqüências de versão usadas pelo DTrace e o provável significado do release de software do DTrace correspondente.

Tabela 41–1 Versões de release do DTrace

Release 

Versão 

Significado 

Principal 

x.0

Um release Principal provavelmente contém adições de recursos principais; aderem a revisões diferentes, possivelmente incompatíveis com o Padrão; e embora seja improvável, poderiam alterar, descartar ou substituir interfaces Padrão ou Estável (consulte o Capítulo 39Estabilidade). A versão inicial da interface de programação de D é rotulada como versão 1.0.

Secundários  

x.y

Comparada a x.0 ou versão anterior (onde y não é igual a zero), um novo release Secundário provavelmente contém adições de recursos secundários, compatíveis com as interfaces Padrão e Estável, possivelmente incompatíveis com interfaces Desenvolvendo, ou provavelmente incompatíveis com interfaces Instável. Essas alterações podem incluir novos tipos, variáveis, funções, constantes e tradutores de D incorporados. Além disso, um release Secundário pode remover o suporte a interfaces anteriormente rotuladas como Obsoletas (consulte o Capítulo 39Estabilidade).

Micro 

x.y.z

Os releases micros possuem interface compatível com o release anterior (onde z não é igual a zero), mas provavelmente incluem consertos de erros, melhorias de desempenho e suporte a hardware adicional. 

Em geral, cada nova versão da interface de programação de D fornecerá um superconjunto dos recursos oferecidos pela versão anterior, com a exceção de quaisquer interfaces Obsoletas que tenham sido removidas.

Opções de versionamento

Por padrão, quaisquer programas em D que você compila usando o dtrace - s ou especifica usando as opções de linha de comando dtrace -P, -m, -f, -n ou -i são vinculados à versão da interface de programação de D mais recente oferecida pelo compilador de D. Você pode determinar a versão da interface de programação de D atual usando a opção -V do dtrace:


$ dtrace -V
dtrace: Sun D 1.0
$

Se você quiser estabelecer uma vinculação a uma versão específica da interface de programação de D, defina a opção de versão como uma seqüência de versão apropriada. Semelhante a outras opções do DTrace (consulte o Capítulo 16Opções e ajustáveis), você pode definir a opção de versão na linha de comando usando dtrace -x:


# dtrace -x version=1.0 -n 'BEGIN{trace("hello");}'

ou pode usar a sintaxe #pragma D option para definir a opção em seu arquivo-fonte do programa em D:

#pragma D option version=1.0

BEGIN
{
	trace("hello");
}

Se você usar a sintaxe #pragma D option para solicitar uma vinculação de versão, deverá colocar esta diretiva no início do arquivo do programa em D antes de quaisquer outras declarações e cláusulas de teste. Se a versão do argumento de vinculação não for válida ou se referir a uma versão não oferecida pelo compilador de D, uma mensagem de erro apropriada será produzida e a compilação falhará. Portanto, você também pode usar o recurso de vinculação de versão para fazer com que a execução de um script de D em uma versão mais antiga do DTrace falhe com uma mensagem de erro óbvia.

Antes de compilar as declarações e as cláusulas do seu programa, o compilador de D carrega o conjunto de tipos, funções, constantes e tradutores de D da versão de interface apropriada nos espaços de nome do compilador. Portanto, quaisquer opções de vinculação de versão que você especifica simplesmente controla o conjunto de identificadores, tipos e tradutores que estão visíveis para o seu programa, além das variáveis, tipos e tradutores que o seu programa define. A vinculação de versão impede que o compilador de D carregue interfaces mais recentes que possam definir identificadores ou tradutores que entrem em conflito com as declarações existentes no código-fonte do seu programa e que, portanto, causariam um erro de compilação. Consulte Nomes e palavras-chave do identificador para obter dicas sobre como selecionar nomes de identificador que provavelmente não entrarão em conflito com as interfaces oferecida por versões futuras do DTrace.

Versionamento do provedor

Ao contrário das interfaces oferecidas pelo compilador de D, as interfaces oferecidas pelos provedores do DTrace (ou seja, testes e argumentos de teste) não são afetadas ou associadas à interface de programação de D ou às opções de vinculação de versão descritas anteriormente. As interfaces de provedor disponíveis são estabelecidas como parte do carregamento da sua instrumentação compilada no software do DTrace no kernel do sistema operacional e variam dependendo da arquitetura definida em sua instrução, da plataforma operacional, do processador, do software instalado em seu sistema Solaris e dos seus privilégios de segurança atuais. O compilador de D e o tempo de execução do DTrace examinam os testes descritos nas cláusulas do seu programa em D e relatam as mensagens de erro apropriadas quando os testes solicitados por seu programa em D não estão disponíveis. Esses recursos são ortogonais para a versão da interface de programação em D porque os provedores do DTrace não exportam as interfaces que possam entrar em conflito com as definições de seus programas em D; ou seja, você só pode ativar os testes em D, não pode defini-los, e os nomes de teste são mantidos em um espaço de nome separado dos outros identificadores do programa em D.

Os provedores do DTrace são entregues com uma release específico do Solaris e são descritos na versão correspondente do Guia de rastreio dinâmico do Solaris. O capítulo deste guia correspondente a cada provedor também descreverá quaisquer alterações relevantes ou novos recursos oferecidos por um determinado provedor. Você pode usar a opção -l do dtrace para explorar o conjunto de provedores e testes disponíveis em seu sistema Solaris. Os provedores rotulam suas interfaces usando os atributos de estabilidade do DTrace, e você pode usar os recursos de relatório de estabilidade do DTrace (consulte o Capítulo 39Estabilidade) para determinar se as interfaces do provedor usadas pelo seu programa em D são passíveis de ser alteradas ou oferecidas em releases futuros do Solaris.