Go to main content

What's New in Oracle® Solaris 11.3

Exit Print View

Updated: October 2017

Enhancements for Developers

This section describes enhancements for developers in this release that make developing applications on the Oracle Solaris platform easier with state of the art libraries and reliable frameworks.

SSM APIs for Application Development

Oracle Solaris includes new and updated C library SSM APIs. These APIs can be used, for example, to enable the detection of memory corruption issues when an application uses its own custom memory allocator.

For more information, see the adi(3C), adi(2), memcntl(2), mmap(2), and siginfo(3HEAD) man pages.

Silicon Secured Memory Management Library

A new user level memory management library, libadimalloc defines versions of the standard libc-malloc(3C) family of functions that make use of SSM. In addition, the libadimalloc library also provides extensive debugging support.

For more information, see the libadimalloc(3LIB) man page. For more information about debugging support, see the adimalloc_debug(3MALLOC) man page.

SSM Support in Oracle Solaris Studio

The Oracle Solaris Studio development tools include support for SSM and provide developers with additional diagnostics to quickly find and fix SSM runtime-related errors. The Code Analyzer is an advanced analysis tool in Oracle Solaris Studio and can detect coding errors using static analysis when you compile your application. Code Analyzer also protects your application from memory errors with runtime dynamic analysis. In addition, it dramatically increases code coverage with patented technology that ranks untested functions. The runtime dynamic analysis functionality of the Oracle Solaris Studio Code Analyzer, Discover, includes a library, libdiscoverADI, which enables Discover to understand and detect runtime-related memory errors identified by SSM. Any C or C++ application can preload this library to run with SSM error-checking enabled. If a memory error is detected, Discover prints a comprehensive error analysis report.

For information about how to use Oracle Solaris Studio development tools to find and fix memory access errors identified by SSM, see the article: https://community.oracle.com/docs/DOC-912448. For more information, see the mdb(1) and dtrace(1M) man pages.

Posix Spawn Function

The C library includes a new API that enables Java to run faster and more efficiently. The new API, posix_spawn_file_actions_addchdir_np(), enables you to specify a working directory for a process created by using the posix_spawn() function. Java uses the posix_spawn() function to create child processes that do not incur excessive memory overhead.

For more information, see the posix_spawn(3C) and posix_spawn_file_actions_addchdir_np(3C) man pages.

Enhanced Signal Delivery

The new interfaces added to the C library represent a change to the Oracle Solaris POSIX/UNIX multi-threaded process model. The interfaces allow processes to send signals not only to each other but also to threads within the process by interacting directly with any specific thread on a different process.

For more information, see the proc_thr_kill(3C) and proc_thr_sigqueue(3C) man pages.

New Event Sources

Signals are now added as an event source to the existing set of event sources that are defined for event ports. This enhancement enables event ports to have processes that wait for signal events along with the existing set of event sources.

For more information, see the port_create(3C), port_associate(3C), and port_dissociate(3C) man pages.

Random Number and Entropy Gathering System Calls

Oracle Solaris 11.3 includes two new system calls, getentropy(2) and getrandom(2), which are provided for gathering entropy or random bits from the kernel. These system calls are a better choice than using open(2) and read(2) on /dev/random and /dev/urandom devices.

For more information, see the getentropy(2) and getrandom(2) man pages.

Named Threads

In Oracle Solaris 11.3, you can now label an application's threads to simplify debugging the application. Observability tools like ps, prstat, and, DTrace can display metrics based on the assigned names. This feature is especially useful for applications such as Java that have many threads.

For more information, see prstat(1M) and pthread_attr_setname_np(3C) man pages.

DTrace noresolve Runtime Option

DTrace now includes the ability to prevent the automatic resolution of userspace symbols through a new runtime option, –x noresolve. This option can be useful when symbol resolution takes a long time for large statically-linked binaries.

DTrace EoIB SDT probes

New DTrace SDT probes in the eoib and eibnx modules provide better observability of the Ethernet over InfiniBand (EoIB) implementation.

Related Information

REST-based Administrative Interfaces With RAD.