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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
New DTrace SDT probes in the eoib and eibnx modules provide better observability of the Ethernet over InfiniBand (EoIB) implementation.