このセクションでは、最新のライブラリと信頼できるフレームワークを使用して、Oracle Solaris プラットフォーム上でのアプリケーション開発を容易にする、このリリースの開発者向けの拡張機能について説明します。
Oracle Solaris には、新規および更新された C ライブラリ SSM API が含まれています。これらの API は、たとえば、アプリケーションが独自のカスタムメモリーアロケータを使用している場合に、メモリー破損の問題を検出するために使用できます。
詳細は、adi(3C)、adi(2)、memcntl(2)、mmap(2)、および siginfo(3HEAD) のマニュアルページを参照してください。
新しいユーザーレベルのメモリー管理ライブラリである libadimalloc は、SSM を活用する機能の標準の libc-malloc(3C) ファミリのバージョンを定義します。さらに、libadimalloc ライブラリは、広範なデバッグのサポートも提供します。
詳細は、libadimalloc(3LIB) のマニュアルページを参照してください。デバッグサポートの詳細は、adimalloc_debug(3MALLOC) のマニュアルページを参照してください。
Oracle Solaris Studio 開発ツールには SSM のサポートが含まれており、開発者が SSM 実行時関連のエラーをすばやく検出するための追加の診断が可能です。コードアナライザは Oracle Solaris Studio の高度な分析ツールであり、アプリケーションをコンパイルするときに静的解析を使用してコーディングエラーを検出できます。また、コードアナライザは、実行時動的解析を使用して、アプリケーションをメモリーエラーから保護します。また、テストされていない機能を分類する特許取得済みのテクノロジを使用することによってコードカバレージが大幅に増加します。Oracle Solaris Studio コードアナライザの実行時動的解析機能である Discover には libdiscoverADI ライブラリが含まれており、SSM によって識別された実行時関連のメモリーエラーを Discover が認識および検出できます。すべての C または C++ アプリケーションは、このライブラリを事前ロードすることによって SSM エラー検査を有効にして実行できます。メモリーエラーが検出されると、Discover は包括的なエラー解析レポートを出力します。
Oracle Solaris Studio 開発ツールを使用して、SSM によって識別されたメモリーアクセスエラーを見つけて修正する方法については、https://community.oracle.com/docs/DOC-912448 の記事を参照してください。詳細は、mdb(1) および dtrace(1M) のマニュアルページを参照してください。
C ライブラリには、Java をより高速かつ効率的に実行できるようにする新しい API が含まれています。新しい API posix_spawn_file_actions_addchdir_np() を使用すると、posix_spawn() 関数を使用して作成されたプロセスの作業ディレクトリを指定できます。Java は、posix_spawn() 関数を使用して、過剰なメモリーのオーバーヘッドが発生しない子プロセスを作成します。
詳細は、posix_spawn(3C) および posix_spawn_file_actions_addchdir_np(3C) のマニュアルページを参照してください。
C ライブラリに追加された新しいインタフェースは、Oracle Solaris POSIX/UNIX マルチスレッドプロセスモデルの変更を表しています。このインタフェースでは、プロセス同士が相互にシグナルを送信できるだけでなく、別のプロセスの特定のスレッドと直接やり取りすることによって、プロセス内のスレッドにもシグナルを送信できます。
詳細は、proc_thr_kill(3C) および proc_thr_sigqueue(3C) のマニュアルページを参照してください。
シグナルは、イベントポートに対して定義されている既存の一連のイベントソースに、イベントソースとして追加されるようになりました。この拡張機能により、イベントポートがシグナルイベントおよび既存の一連のイベントソースを待機するプロセスを持つことができます。
詳細は、port_create(3C)、port_associate(3C)、および port_dissociate(3C) のマニュアルページを参照してください。
Oracle Solaris 11.3 には、新しい 2 つのシステムコール getentropy(2) および getrandom(2) が含まれており、カーネルからエントロピーまたはランダムなビットを収集するために提供されています。これらのシステムコールは、/dev/random および /dev/urandom デバイス上で open(2) および read(2) を使用するよりも適切な選択です。
詳細は、getentropy(2) および getrandom(2) のマニュアルページを参照してください。
Oracle Solaris 11.3 では、アプリケーションのスレッドにラベルを付けて、アプリケーションのデバッグを単純化できるようになりました。ps、prstat、DTrace などの可観測性ツールは、割り当てられている名前に基づいてメトリックを表示できます。この機能は、多数のスレッドを持つ Java などのアプリケーションで特に役に立ちます。
詳細は、prstat(1M) および pthread_attr_setname_np(3C) のマニュアルページを参照してください。
DTrace には、新しい実行時オプション –x noresolve を介して、ユーザースペースシンボルの自動解決を防ぐ機能が含まれるようになりました。このオプションは、静的にリンクされた、大きいバイナリのシンボル解決に長い時間がかかる場合に役立つことがあります。
eoib モジュールおよび eibnx モジュールの新しい DTrace SDT プローブでは、Ethernet over InfiniBand (EoIB) 実装の可観測性が向上します。