Manuel de suivi dynamique Solaris

Chapitre 41 Versionnage

Dans le Chapitre39Stabilité, vous avez découvert les fonctionnalités de DTrace permettant de déterminer les attributs de stabilité des programmes en D que vous créez. Une fois que vous avez créé un programme en D avec les attributs de stabilité appropriés, il se peut que vous souhaitiez lier ce programme à une version particulière de l'interface de programmation en D. La version de l'interface en langage D est une étiquette appliquée à un ensemble particulier de types, variables, fonctions, constantes et translateurs que le compilateur D vous permet d'utiliser. Si vous spécifiez une liaison à une version spécifique de l'interface de programmation en D, vérifiez que vous pourrez recompiler votre programme sur les versions ultérieures de DTrace sans rencontrer de conflits entre les identificateurs des programmes que vous définissez et les identificateurs définis dans les futures versions de l'interface de programmation en D. Vous devez lier les versions de tous les programmes en D que vous souhaitez installer en tant que scripts permanents (reportez-vous au Chapitre15Scripts) ou utiliser dans les outils en couches.

Versions

Le compilateur D étiquette les ensembles de types, variables, fonctions, constantes et translateurs correspondant à une version logicielle particulière à l'aide d'une chaîne de version. Une chaîne de version consiste en une séquence, délimitée par un point, de décimaux entiers présentés sous la forme “x” (version majeure), “x.y” (version mineure) ou “x.y.z” (micro-version ). Les versions sont comparées, nombre entier par nombre entier, de la gauche vers la droite. Si les nombres entiers les plus à gauche ne sont pas équivalents, la chaîne contenant le nombre entier le plus grand correspond à la version la plus récente. Si les nombres entiers les plus à gauche sont égaux, les nombres entiers suivants sont comparés, toujours de gauche à droite, pour déterminer le résultat. Lors de la comparaison des versions, tous les nombres entiers spécifiés dans une chaîne de version sont interprétés comme ayant pour valeur zéro.

Les chaînes de version de DTrace sont conformes à la nomenclature standard de Sun en matière de version d'interface, comme indiqué à la page Web attributes(5). Tout changement dans l'interface de programmation en D se traduit par une nouvelle chaîne de version. Le tableau suivant récapitule les chaînes de version utilisées par DTrace et la probable signification de la version logicielle de DTrace correspondante.

Tableau 41–1 Versions de DTrace

Version 

Version 

Signification 

Majeure 

x.0

Une version majeure se caractérise comme suit : elle comprend généralement d'importants ajouts de fonctionnalités, elle se conforme à des révisions standard différentes et parfois incompatibles et, bien que cela soit peu probable, elle peut modifier, déplacer ou remplacer des interfaces standard ou stables (reportez-vous au Chapitre39Stabilité). La version initiale de l'interface de programmation en D s'appelle la version 1.0.

Mineure 

x.y

Comparée à une version x.0 ou antérieure (y n'étant pas égal à zéro), une nouvelle version mineure se caractérise comme suit : ajouts probables de fonctionnalités mineurs, interfaces standard et stables compatibles, possibilité d'incompatibilité avec les interfaces évolutives et incompatibilité vraisemblable avec les interfaces instables. Ces changements peuvent intégrer de nouveaux types, variables, fonctions, constantes et translateurs en D. Par ailleurs, les interfaces précédemment dites obsolètes peuvent ne plus être prises en charge avec une version mineure (reportez-vous au Chapitre39Stabilité).

Micro 

x.y.z

Les micro-versions sont logiquement compatibles avec la version précédente (dans laquelle z est différent de zéro). Il est probable qu'elles contiennent des résolutions de bogues, une optimisation des performances et la prise en charge de matériel supplémentaire. 

En règle générale, chaque nouvelle version d'une interface de programmation en D fournit un sur-ensemble des fonctionnalités proposées par la version précédente, à l'exception des interfaces obsolètes qui sont supprimées.

Options de versionnage

Tous les programmes en D que vous compilez à l'aide de dtrace -s ou spécifiez à l'aide des options de ligne de commande dtrace -P, -m, -f, -n ou -i sont liés, par défaut, à l'interface de programmation en D la plus récente que le compilateur D propose. Vous pouvez déterminer l'interface de programmation en D actuelle à l'aide de l'option dtrace -V :


$ dtrace -V
dtrace: Sun D 1.0
$

Si vous souhaitez établir une liaison vers une version spécifique de l'interface de programmation en D, vous pouvez configurer l'option version sur une chaîne de version appropriée. De même que pour les autres options DTrace (reportez-vous au Chapitre16Options et paramètres réglables), vous pouvez configurer l'option de version sur la ligne de commande à l'aide de dtrace -x :


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

ou bien utiliser la syntaxe #pragma D option pour configurer l'option dans votre fichier source de programme en D :

#pragma D option version=1.0

BEGIN
{
	trace("hello");
}

Si vous utilisez la syntaxe #pragma D option pour demander une liaison de version, vous devez l'insérer en haut du fichier de votre programme en D avant les autres déclarations et les clauses des sondes. Si l'argument de liaison de version ne constitue pas une chaîne de version ou renvoie à une version que le compilateur D ne propose pas, un message d'erreur approprié est émis et la compilation échoue. Par conséquent, vous pouvez également utiliser la fonction de liaison de version pour faire échouer un script en D sur une version antérieure de DTrace avec un message d'erreur évident.

Avant de compiler les déclarations et les clauses de votre programme, le compilateur D charge la configuration des types, fonctions, constantes et translateurs de la version appropriée de l'interface dans les espaces de noms du compilateur. Par conséquent, les options de liaison de version que vous spécifiez se contentent de contrôler l'ensemble des identificateurs, types et translateurs que votre programme voit, en plus des variables, types et translateurs que votre programme définit. La liaison de version empêche le compilateur D de charger des interfaces plus récentes dont la définition d'identificateurs ou de translateurs pourrait être en conflit avec les déclarations contenues dans le code source de votre programme, ce qui, par conséquent, pourrait entraîner une erreur de compilation. Reportez-vous à la section Noms d'identifiant et mots de passe pour y découvrir des conseils sur la manière de récupérer des noms d'identificateur qui ne risquent pas de créer des conflits avec les interfaces proposées par les prochaines versions de DTrace.

Versionnage des fournisseurs

Contrairement aux interfaces proposées par le compilateur D, les interfaces proposées par les fournisseurs de DTrace (c'est-à-dire les sondes et les arguments de sondes) ne sont pas affectées par ni associées à l'interface de programmation en D ou aux options de liaison de version précédemment décrites. Les interfaces de fournisseur disponibles sont établies dans le cadre du chargement de votre instrumentation compilée dans le logiciel DTrace figurant dans le noyau de votre système d'exploitation. Elles varient, en outre, en fonction de l'architecture de votre ensemble d'instructions, de votre plate-forme d'exploitation, de votre processeur, du logiciel installé sur votre système Solaris et des privilèges de sécurité actuels. L'exécution du compilateur D et de DTrace examine les sondes décrites dans les clauses de votre programme en D et signale les messages d'erreur appropriés lorsque les sondes demandées par votre programme en D ne sont pas disponibles. Ces fonctionnalités sont orthogonales à la version de l'interface de programmation en D car les fournisseurs de DTrace n'exportent pas les interfaces pouvant créer des conflits avec les définitions contenues dans vos programmes en D. En conséquence, vous ne pouvez qu'activer les sondes en langage D, vous ne pouvez pas les définir. Enfin, les noms de sonde sont conservés dans un espace de noms distinct de celui des identificateurs de programmes en D.

Les fournisseurs de DTrace accompagnent une version particulière de Solaris et sont décrits dans la version correspondante du guide de suivi dynamique de Solaris. Le chapitre de ce guide qui présente chaque fournisseur comprend également les modifications appropriées touchant ce fournisseur, de même que les nouvelles fonctionnalités qu'il propose. Vous pouvez utiliser l'option dtrace -l pour parcourir l'ensemble des fournisseurs et des sondes disponibles sur votre système Solaris. Les fournisseurs étiquettent leurs interfaces à l'aide des attributs de stabilité de DTrace. Vous pouvez utiliser les fonctions de génération de rapports sur la stabilité de DTrace (reportez-vous au Chapitre39Stabilité, Stability) pour déterminer si les interfaces de fournisseur utilisées par votre programme en D risquent de subir des modifications ou d'être proposées dans les prochaines versions de Solaris.