Esta seção descreve os aprimoramentos para desenvolvedores desta release que tornam o desenvolvimento de aplicativos na plataforma Oracle Solaris muito mais fácil por meio de bibliotecas avançadas e frameworks confiáveis.
O Oracle Solaris inclui APIs de SSM novas e atualizadas para a biblioteca C. Essas APIs podem ser usadas, por exemplo, para permitir a detecção de problemas de corrompimento de memória quando um aplicativo usa o seu próprio alocador de memória personalizado.
Para obter mais informações, consulte as páginas man adi(3C), adi(2), memcntl(2), mmap(2) e siginfo(3HEAD).
Uma nova biblioteca de gerenciamento da memória no nível do usuário, libadimalloc, define as versões da família de funções libc-malloc(3C) padrão que utilizam SSM. Além disso, a biblioteca libadimalloc também fornece suporte extensivo a depuração.
Para obter mais informações, consulte a página man libadimalloc(3LIB). Para obter mais informações sobre o suporte a depuração, consulte a página man adimalloc_debug(3MALLOC).
As ferramentas de desenvolvimento do Oracle Solaris Studio incluem suporte a SSM e fornecem aos desenvolvedores diagnósticos adicionais para localizar e corrigir rapidamente erros relacionados a runtime da SSM. O Code Analyzer é uma ferramenta de análise avançada do Oracle Solaris Studio capaz de detectar erros de codificação usando uma análise estática durante a compilação do aplicativo. O Code Analyzer também protege o aplicativo contra erros de memória com uma análise dinâmica em runtime. Além disso, ele aumenta significativamente a cobertura do código com uma tecnologia patenteada que classifica as funções não testadas. A funcionalidade de análise dinâmica de runtime do Oracle Solaris Studio Code Analyzer, Discover, inclui uma biblioteca, libdiscoverADI, que permite ao Discover compreender e detectar erros de memória relacionados a runtime identificados pela SSM. Qualquer aplicativo C ou C++ pode pré-carregar esta biblioteca para ser executado com a verificação de erros da SSM ativada. Se um erro de memória for detectado, o Discover imprimirá um amplo relatório de análise do erro.
Para obter informações sobre como usar as ferramentas de desenvolvimento do Oracle Solaris Studio, a fim de localizar e corrigir erros de acesso à memória identificados pela SSM, consulte o artigo: https://community.oracle.com/docs/DOC-912448. Para obter mais informações, consulte as páginas man mdb(1) e dtrace(1M).
A biblioteca C inclui uma nova API que permite que o Java seja executado de maneira mais rápida e eficiente. Com a nova API, posix_spawn_file_actions_addchdir_np(), é possível especificar um diretório de trabalho para um processo criado por meio da função posix_spawn(). O Java usa a função posix_spawn() para criar processos filho que não acarretam uma sobrecarga excessiva de memória.
Para obter mais informações, consulte as páginas man, posix_spawn(3C) e posix_spawn_file_actions_addchdir_np(3C).
As novas interfaces adicionadas à biblioteca C representam uma mudança em relação ao modelo de processo multi-thread do Oracle Solaris POSIX/UNIX. As interfaces permitem que os processos enviem sinais não só entre si, mas também para threads dentro do processo por meio da interação direta com um thread específico em outro processo.
Para obter mais informações, consulte as páginas man proc_thr_kill(3C) e proc_thr_sigqueue(3C).
Agora os sinais foram adicionados como uma origem de evento ao conjunto existente de origens de evento definidas para portas de evento. Esse aprimoramento permite que as portas de evento tenham processos que aguardem eventos de sinal, além do conjunto existente de origens de eventos.
Para obter mais informações, consulte as páginas man port_create(3C), port_associate(3C) e port_dissociate(3C).
O Oracle Solaris 11.3 inclui duas novas chamadas do sistema, getentropy(2) e getrandom(2), para coleta de dados de entropia ou bits aleatórios do kernel. Essas chamadas do sistema são uma opção melhor do que usar open(2) e read(2) em dispositivos /dev/random e /dev/urandom.
Para obter mais informações, consulte as páginas man getentropy(2) e getrandom(2).
No Oracle Solaris 11.3, agora você pode rotular os threads de um aplicativo para simplificar a depuração do aplicativo. Ferramentas de observabilidade, como ps, prstat e DTrace, podem exibir métricas com base nos nomes designados. Esses recurso é útil principalmente para aplicativos, como Java, que têm vários threads.
Para obter mais informações, consulte as páginas man prstat(1M) e pthread_attr_setname_np(3C).
Agora o DTrace é capaz de impedir a resolução automática de símbolos de espaço de usuário por meio de uma nova opção em runtime, –x noresolve. Essa opção poderá ser útil quando a resolução de símbolos levar um tempo longo no caso de binários vinculados estaticamente.
As novas investigações SDT do DTrace nos módulos eoib e eibnx permitem melhor observabilidade da implementação EoIB (Ethernet over InfiniBand).