En esta sección, se describen las nuevas mejoras para desarrolladores de esta versión que hacen que el desarrollo de aplicaciones en la plataforma de Oracle Solaris sea más sencillo gracias a bibliotecas de última generación y estructuras confiables.
Oracle Solaris 11.4 incluye compatibilidad con el estándar de lenguaje de programación C11: "ISO/IEC 9899:2011 Tecnología de la información - Lenguajes de programación - C". El estándar C11 es una revisión compatible del estándar C99. Históricamente, el estándar del lenguaje de programación C ha sido parte de la especificación única de UNIX. Sin embargo, el nuevo estándar del lenguaje de programación C, C11, está disponible de manera independiente de la próxima especificación de UNIX y fue publicado antes que esta.
Oracle Solaris 11.4 es compatible con C11 y C99 para que los clientes puedan usar C11 antes de su inclusión en una especificación futura de UNIX. El nuevo estándar se puede usar con los compiladores Oracle Developer Studio 12.5 o 12.6, GCC 5 o 7 y LLVM/Clang 6.0 C. Los desarrolladores también pueden escribir programas en C con el estándar del lenguaje de programación C más reciente.
En Oracle Solaris 11.4, el modo de compilación por defecto (cuando no se usa ninguna macro de prueba de características para solicitar conformidad con un estándar POSIX en particular) hace visible lo siguiente:
El espacio de nombres que corresponde a la especificación más reciente de POSIX
Todas las demás funciones y nombres que normalmente proporciona el sistema operativo de Oracle Solaris
Para Oracle Solaris 11.4, la especificación más reciente de POSIX es Especificaciones básicas del estándar IEEE 1003.1-2008, Edición 7 (también conocida como XPG7, UNIX V7, SUSv4).
Se conserva la compatibilidad binaria. Sin embargo, la compatibilidad de origen podría verse afectada de las siguientes maneras:
La macro de prueba de características _POSIX_PTHREAD_SEMANTICS es obsoleta y ya no se necesita. No la probará ningún archivo de cabecera. Las versiones de interfaces que antes solo eran visibles mediante -D_POSIX_PTHREAD_SEMANTICS o macros de prueba de características de estándares apropiados ahora son visibles por defecto. Se incluyen asctime_r(), ctime_r(), getgrgid_r(), getgrnam_r(), getlogin_r(), getpwnam_r(), getpwuid_r(), readdir_r(), sigwait() y ttyname_r(). Las interfaces por defecto anteriores, que se basaban en un estándar de threads de POSIX provisional, siguen estando disponibles en el momento de la compilación si se usa -D__USE_DRAFT6_PROTOTYPES__. Consulte la página del comando man intro(3) para obtener más información.
Antes, se requería -D_XOPEN_SOURCE=500 para usar las interfaces de sockets definidas por el estándar X/Open. Estas interfaces ahora son visibles también en el entorno de compilación por defecto. La compilación de aplicaciones que utilizan los sockets de estilo SunOS4.x antiguos ahora requiere el uso de -D__USE_SUNOS_SOCKETS__. Consulte socket.h(3HEAD) para obtener más información.
Oracle Solaris 11.4 incluye una nueva biblioteca de control de procesos, libproc, que proporciona una interfaz de nivel superior para características de la interfaz /proc. La biblioteca también proporciona acceso a información como tablas de símbolos, que son necesarias para examinar y controlar procesos y threads.
Un proceso de control que usa libproc normalmente puede:
Capturar un proceso víctima y suspender su ejecución
Examinar el estado del proceso víctima
Examinar y modificar el espacio de dirección del proceso víctima
Hacer que el proceso víctima ejecute llamadas de sistema en nombre del proceso de control
Liberar el proceso víctima para que se pueda volver a ejecutar sin interrupciones
La biblioteca libproc proporciona todos los mecanismos que necesita un depurador de punto de ruptura para hacer su trabajo. También facilita la creación de aplicaciones de control simples de un uso para hacer cosas simples a procesos víctima sin que los procesos noten la intrusión.
Para obtener más información, consulte la página del comando man libproc(3LIB).
Oracle Solaris 11.4 incluye mejoras en las API de compatibilidad con configuraciones regionales existentes proporcionadas por libc, y la adición de nuevas API definidas en el estándar UNIX V7. Se introdujeron uselocale y otras API definidas en el estándar UNIX V7 para admitir configuraciones regionales entre threads y permitir el cambio de configuración regional del thread. En combinación con las nuevas API, las API de compatibilidad de configuración regional existentes se actualizaron por completo para multithreading. El procesamiento subyacente de la configuración regional de libc se mejoró para obtener un mejor rendimiento y lograr un menor uso de recursos por parte de las aplicaciones que usan múltiples configuraciones regionales.
Para obtener más información, consulte las páginas del comando man uselocale(3C), newlocale(3C), freelocale(3C), wctype(3C) y localedef(1).
Oracle Solaris 11.4 ahora implementa puntos de observación de modo de usuario con Silicon Secured Memory (SSM) en lugar de asignaciones de memoria virtual. Un punto de observación es un evento que se dispara cuando se escribe en una ubicación de memoria, o cuando se lee una, y que se puede usar para depuración y análisis de rendimiento. Actualmente, para implementar los puntos de observación se hace que la página que incluye la dirección sea inaccesible. Esta acción ralentiza mucho la ejecución si el thread toca con frecuencia ubicaciones no relacionadas en la misma página. En comparación, SSM tiene una granularidad mucho más fina con la línea de caché de 64 bytes. Además, SSM usa multithread, mientras que todos los threads comparten las mismas páginas de memoria virtual.
Para obtener más información, consulte las páginas del comando man dbx(1) y mdb(1).
Oracle Solaris 11.4 incluye una nueva biblioteca de control de procesos, libdtrace, que permite a los desarrolladores escribir aplicaciones bespoke de DTrace.
Para obtener más información, consulte el Apéndice A, libdtrace API Reference, de Guía de Oracle Solaris 12 DTrace (Dynamic Tracing).
En Oracle Solaris 11.4, DTrace puede usar DWARF para realizar traducción de metadatos de direcciones a código fuente para procesos de usuario. La nueva opción uresolve permite que las acciones ustack, uaddr y printf de DTrace traduzcan direcciones de usuario a números de línea y nombres de archivo de código fuente, dada la presencia de información de depuración de DWARF. Esta característica proporciona una interpretación más intuitiva de la salida común del diagnóstico sin dejar de ser compatible con estándares de compiladores comunes.
Para obtener más información, consulte las acciones ustack, uaddr y printf en Data Recording Actions de Guía de Oracle Solaris 12 DTrace (Dynamic Tracing).
En Oracle Solaris 11.4, el comando pstack hará anotaciones en marcos con metadatos de código fuente, dada la presencia de información de depuración de DWARF. Esta característica proporciona una interpretación más intuitiva de la salida común del diagnóstico sin dejar de ser compatible con estándares de compiladores comunes.
Para obtener más información, consulte pstack en la página del comando man proc(1).
En Oracle Solaris 11.4, tanto pstack como mdb admiten reversión de pila de DWARF y del estilo de DWARF para procesos de usuario. Además, pstack y mdb también permiten la recuperación de argumentos de funciones a partir de procesos compilados con la nueva opción -preserve_argvalues=complete de Oracle Developer Studio. Esta capacidad proporciona mejoras específicas para la observación y el diagnóstico de los procesos amd64, aunque la funcionalidad se aplica a procesos de 32 bits y de 64 bits tanto en x64 como en SPARC.
El comando mdb ::stackregs dcmd ahora está activado para amd64, donde los registros de los marcos se recuperan mediante tablas de reversión de estilo DWARF.
Cython es un compilador estático de optimización que se usa para el lenguaje de programación Python y el lenguaje de programación ampliado Cython, que se basa en Pyrex. Esta característica permite la generación de código de alto rendimiento con Python.
Para obtener más información, consulte Extensiones C de Cython para Python.
Oracle Database Programming Interface-C (ODPI-C) es un envoltorio para Oracle Call Interface (OCI) que funciona de manera transparente con distintas versiones de las bibliotecas Oracle Instant Client.
ODPI-C elimina el requisito de que las aplicaciones definan LD_LIBRARY_PATH antes de la ejecución. Asimismo, ODPI-C funciona de manera transparente con múltiples versiones de las bibliotecas de Oracle Instant Client. El software que requiere el uso de las bibliotecas de Oracle Instant Client no requerirá la configuración de ORACLE_HOME antes de la ejecución.
Para usar ODPI-C, instale el paquete developer/oracle/odpi.
Para obtener más información sobre ODPI-C, consulte el proyecto Interfaz de programación de Oracle Database para controladores y aplicaciones en GitHub y la página del comando man libodpic(3LIB). Oracle Instant Client está disponible en formato IPS, y no es necesario visitar OTN para descargar archivos .zip.
cx_Oracle es un módulo de Python que le permite acceder a Oracle Database 12c y 11i desde aplicaciones de Python. Si bien el módulo suele estar disponible mediante paquetes pregenerados para otros sistemas operativos, hasta ahora no había estado disponible de manera similar para Oracle Solaris. El módulo está disponible para formatos de 32 bits y de 64 bits. Oracle Solaris versión 5.2 se puede usar con Python 2.7 y 3.4.
Para obtener más información, consulte Documentación de cx_Oracle.