clib4 é uma biblioteca runtime em C criada para o AmigaOS 4 com objetivo de facilitar manutenção e implementar funções ausentes do clib2. A versão 2.4, trabalhada por Andrea ‘afxgroup’ e colaboradores, reúne uma série de correções, melhorias e adições de compatibilidade.
O que há de novo na versão 2.4
A atualização inclui correções de comportamento e várias melhorias funcionais. Entre os ajustes está a correção para evitar chamadas a setmode em streams nulos, além de consertos no tratamento de caminhos próprios em dlopen.
O mecanismo de prioridade de construtores/destrutores (ctor/dtor) foi substituído por chamadas diretas de inicialização/encerramento, o que altera a forma como o código de inicialização e finalização é executado.
Foram feitas mudanças relacionadas ao fuso horário para resolver discrepâncias, e a implementação de sockets foi ajustada para coincidir com a semântica do Linux no que diz respeito ao modo não bloqueante — isto é, o comportamento quando operações de E/S retornam imediatamente em vez de esperar.
Do ponto de vista POSIX, a clib4 2.4 adiciona suporte a ucontext e implementa wordexp()/wordfree(). Ucontext é uma API usada para manipulação de contexto de execução de threads (como troca de contexto), e wordexp realiza expansão de palavras no estilo do shell (por exemplo, expansão de variáveis e curingas), liberadas depois com wordfree.
Há também mudanças na inicialização de componentes: shcrtbegin.c passou a usar seu próprio IExec, e a abertura da biblioteca bsdsocket.library e de usergroup.library agora é feita de forma preguiçosa (lazy), ou seja, apenas quando necessário.
Na área de concorrência e sincronização, a cache DNS recebeu um bloqueio próprio e alteração na forma como suas chaves são manipuladas; a espera condicional com prazo (cond_timedwait) agora verifica o prazo mesmo quando a thread não possui ThreadInfo; e os manipuladores registrados via atexit passam a ser executados quando o programa termina por sinais SIGINT ou SIGTERM.
Outras alterações incluem falha na abertura da biblioteca caso o contexto da clib4 não possa ser criado, melhorias nas dependências de build e headers, uploads habilitados ao os4depot durante releases, e ajustes diversos provenientes de merges e atualizações automatizadas do repositório.
O histórico de commits e as contribuições para esta versão foram registradas em várias entradas do repositório, assinadas por @afxgroup, @walkero-gr e pela ação do GitHub bot em itens numerados (por exemplo, #449 a #467).
Fonte: Amiga News
