Go to main content

Nouveautés d'Oracle® Solaris 11.4

Quitter la vue de l'impression

Mis à jour : Août 2018
 
 

Améliorations pour les développeurs

Cette section décrit les améliorations à l'attention des développeurs comprises dans cette version qui facilitent le développement d'applications sur la plate-forme Oracle Solaris grâce aux bibliothèques de pointe et à la fiabilité des structures.

Prise en charge de la norme de langage de programmation C11

Oracle Solaris 11.4 assure la prise en charge de la norme de langage de programmation C11 : "ISO/IEC 9899:2011 - Technologie de l'information - Langage de programmation - C". La norme C11 est une version compatible de la norme C99. La norme de langage de programmation C fait partie des spécifications SUS (Single UNIX Specification) depuis longtemps. En revanche, la nouvelle norme de langage de programmation, C11, est disponible séparément et avant la spécification UNIX suivante.

Oracle Solaris 11.4 assure la prise en charge de C11 avec C99 pour fournir aux clients un support C11 avant son inclusion dans une spécification UNIX future. La nouvelle norme peut être utilisée avec Oracle Developer Studio 12.5 ou 12.6, GCC 5 ou 7, et les compilateurs C LLVM/Clang 6.0. Les développeurs peuvent également écrire des programmes en C à l'aide de la nouvelle norme de langage de programmation C disponible.

Environnement de compilation standard

Dans Oracle Solaris 11.4, le mode de compilation par défaut (lorsqu'aucune macro de test de fonction n'est utilisée pour demander la conformité à une norme POSIX donnée), rend visible les éléments suivants :

  • L'espace de noms correspondant à la dernière spécification POSIX

  • Tous les autres fonctions et noms fournis normalement par le système d'exploitation Oracle Solaris

Pour Oracle Solaris 11.4, la dernière spécification POSIX est IEEE Std. 1003.1-2008 Base Specifications, Issue 7 (également appelée XPG7, UNIX V7, SUSv4).

La compatibilité binaire est conservée. En revanche, la compatibilité source pourrait être affectée comme suit :

Threads POSIX

La macro de test de fonction _POSIX_PTHREAD_SEMANTICS est obsolète et n'est plus nécessaire. Elle ne sera testée par aucun en-tête de fichier. Les versions des interfaces qui n'étaient auparavant visibles qu'à l'aide de -D_POSIX_PTHREAD_SEMANTICS ou de macros de test de fonction standard appropriées sont maintenant visibles par défaut. Celles-ci incluent asctime_r(), ctime_r(), getgrgid_r(), getgrnam_r(), getlogin_r(), getpwnam_r(), getpwuid_r(), readdir_r(), sigwait() et ttyname_r(). Les précédentes interfaces par défaut, qui était basées sur une norme de threads POSIX provisoire, sont toujours disponibles au moment de la compilation à l'aide de -D__USE_DRAFT6_PROTOTYPES__. Pour plus d'informations, reportez-vous à la page de manuel intro(3).

X/Open Sockets (XNS Issue 4)

Auparavant, -D_XOPEN_SOURCE=500 était nécessaire pour l'utilisation des interfaces de sockets définies par la norme X/Open. Ces interfaces sont maintenant visibles dans l'environnement de compilation par défaut. La compilation des applications s'appuyant sur des sockets anciens de style SunOS4.x requiert maintenant l'utilisation de -D__USE_SUNOS_SOCKETS__. Pour plus d'informations, reportez-vous à la page de manuel socket.h(3HEAD).

Bibliothèque de contrôle des processus

Oracle Solaris 11.4 inclut une nouvelle bibliothèque de contrôle des processus, libproc, offrant une interface de niveau supérieur pour les fonctions de l'interface /proc. La bibliothèque fournit également l'accès à des informations, telles que des tables de symboles, qui sont nécessaires pour l'examen et le contrôle des processus et des threads.

Un processus de contrôle utilisant libproc peut généralement :

  • Obtenir un processus victime en suspendant son exécution

  • Examiner l'état du processus victime

  • Examiner et modifier l'espace d'adressage du processus victime

  • Faire exécuter au processus victime des appels système pour le compte du processus de contrôle

  • Libérer le processus victime pour qu'il s'exécute à nouveau sans problème

La bibliothèque libproc fournit tous les mécanismes nécessaires à un débogueur de point d'arrêt pour faire son travail. Elle facilite également la création d'applications de contrôle ponctuelles pour des tâches simples sur des processus victime sans que les processus soient conscients de l'intrusion.

Pour plus d'informations, reportez-vous à la page de manuel libproc(3LIB).

Prise en charge améliorée de l'environnement linguistique

Oracle Solaris 11.4 inclut des améliorations apportées à la prise en charge des API d'environnement linguistique existant fournies par libc et l'ajout de nouvelles API définies dans la norme UNIX V7. La commande uselocale et d'autres API définies dans la norme UNIX V7 ont été ajoutées pour prendre en charge les environnements linguistiques entre les threads ainsi que la modification de l'environnement linguistique du thread. En combinaison avec les nouvelles API, les API prenant en charge l'environnement linguistique existant ont été mises à jour pour être totalement sécurisées pour l'architecture colocative. Le traitement de l'environnement linguistique sous-jacent dans libc a été amélioré pour offrir de meilleures performances et une utilisation de ressources inférieure des applications utilisant plusieurs environnements linguistiques.

Pour plus d'informations, reportez-vous aux pages de manuel uselocale(3C), newlocale(3C), freelocale(3C), wctype(3C) et localedef(1).

Points d'observation en mode utilisateur

Oracle Solaris 11.4 implémente désormais les points d'observation en mode utilisateur avec la mémoire sécurisée de silicium (SSM) à la place des mappages de mémoire virtuelle. Un point d'observation est un événement qui est déclenché lorsqu'un emplacement de mémoire fait l'objet d'écriture ou de lecture et peut être utilisé pour le débogage et l'analyse des performances. Les points d'observation sont actuellement implémentés en rendant la page contenant l'adresse inaccessible. Cette action ralentit considérablement l'exécution si le thread touche fréquemment des emplacements non connexes sur la même page. Par contraste, SSM offre une granularité beaucoup plus fine avec une ligne de cache de 64 octets. En outre, SSM est multithread, tandis que tous les threads partagent les mêmes pages de mémoire virtuelle.

Pour plus d'informations, reportez-vous aux pages de manuel dbx(1) et mdb(1).

Bibliothèque DTrace

Oracle Solaris 11.4 inclut une nouvelle bibliothèque de contrôle des processus libdtrace, qui permet aux développeurs d'écrire des applications bespoke DTrace.

Pour plus d'informations, reportez-vous à l'Annexe A, libdtrace API Reference, du manuel Guide d’utilisation d’Oracle Solaris 12 DTrace (Dynamic Tracing).

Prise en charge de DWARF dans DTrace

Dans Oracle Solaris 11.4, DTrace peut utiliser DWARF pour effectuer la traduction des métadonnées d'adresse en code source pour les processus utilisateur. La nouvelle option uresolve permet aux actions ustack, uaddr et printf de DTrace de traduire des adresses utilisateur en numéros de ligne et noms de fichier de code source, grâce à la présence des informations de débogage DWARF. Cette fonction permet une interprétation plus intuitive de la sortie de diagnostic tout en conservant la compatibilité avec les normes communes de compilateur.

Pour plus d'informations, reportez-vous aux actions ustack, uaddr et printf de la section Data Recording Actions du manuel Guide d’utilisation d’Oracle Solaris 12 DTrace (Dynamic Tracing).

Prise en charge de la commande pstack pour les numéros de ligne encodés DWARF

Dans Oracle Solaris 11.4, la commande pstack annotera les cadres avec les métadonnées de code source, grâce à la présence des informations de débogage DWARF. Cette fonction permet une interprétation plus intuitive de la sortie de diagnostic tout en conservant la compatibilité avec les normes communes de compilateur.

Pour plus d'informations, reportez-vous à la commande pstack dans la page de manuel proc(1).

Déroulement DWARF dans les commandes pstack et mdb

Dans Oracle Solaris 11.4, les commandes pstack et mdb prennent en charge DWARF et le déroulement de pile de style DWARF pour les processus utilisateur. En outre, les commandes pstack et mdb permettent également la récupération des arguments de fonction à partir de processus compilés avec la nouvelle option -preserve_argvalues=complete d'Oracle Developer Studio. Cette fonction apporte des améliorations spécifiques à l'observabilité et la possibilité de diagnostic des processus amd64, même si la fonctionnalité s'applique à la fois aux processus 32 et 64 bits sur x64 et SPARC.

La commande mdb ::stackregs dcmd est maintenant activée pour amd64, où les registres de cadre sont récupérés à l'aide de tables de déroulement de style DWARF.

Cython

Cython est un compilateur statique d'optimisation pour le langage de programmation Python et le langage de programmation Cython étendu basé sur Pyrex. Cette fonction permet la génération de code à hautes performances utilisant Python.

Pour plus d'informations, reportez-vous à Cython C-Extensions for Python.

Oracle Database Programming Interface-C

Oracle Database Programming Interface-C (ODPI-C) est un wrapper OCI (Oracle Call Interface), fonctionnant en toute transparence avec les différentes versions des bibliothèques Oracle Instant Client.

ODPI-C élimine la nécessité pour les applications de définir LD_LIBRARY_PATH avant l'exécution. Qui plus est, ODPI-C fonctionne en toute transparence avec plusieurs versions des bibliothèques Oracle Instant Client. Les logiciels qui nécessitent l'utilisation des bibliothèques Oracle Instant Client n'auront pas besoin du paramètre ORACLE_HOME avant exécution.

Pour utiliser ODPI-C, installez le package developer/oracle/odpi.

Pour plus d'informations sur ODPI-C, reportez-vous au projet Oracle Database Programming Interface for Drivers and Applications sur GitHub et à la page de manuel libodpic(3LIB). Oracle Instant Client est disponible au format IPS et il n'est pas nécessaire de visiter OTN pour télécharger les fichiers .zip.

Module Python cx_Oracle

cx_Oracle est un module Python qui permet d'accéder à Oracle Database 12c et 11i à partir d'applications Python. Bien que ce module soit généralement disponible dans des packages pré-intégrés pour d'autres systèmes d'exploitation, il ne l'était pas jusqu'à présent pour Oracle Solaris. Le module est disponible en 32 bits et 64 bits. La version standard 5.2 d'Oracle Solaris peut être utilisée avec Python 2.7 et 3.4.

Pour plus d'informations, reportez-vous à la documentation pour cx_Oracle.