Relatório de desenvolvimento do FreeBSD para o primeiro trimestre de 2020

publicado relatório sobre o desenvolvimento do projeto FreeBSD de janeiro a março de 2020. Entre as mudanças podemos notar:

  • Questões gerais e sistêmicas
    • Removido o conjunto de compiladores GCC da árvore de origem do FreeBSD-CURRENT, bem como os utilitários não utilizados gperf, gcov e gtc (devicetree compiler). Todas as plataformas que não suportam Clang passaram a usar ferramentas de construção externas instaladas a partir de portas. O sistema básico enviou uma versão desatualizada do GCC 4.2.1, e a integração de versões mais recentes não foi possível devido à transição do 4.2.2 para a licença GPLv3, que foi considerada inadequada para os componentes básicos do FreeBSD. As versões atuais do GCC, incluindo o GCC 9, ainda podem ser instaladas a partir de pacotes e ports.
    • A infraestrutura de emulação do ambiente Linux (Linuxulator) adicionou suporte para a chamada de sistema sendfile, modo TCP_CORK (requerido para nginx) e o sinalizador MAP_32BIT (resolve o problema de lançamento de pacotes com Mono do Ubuntu Bionic). Problemas com resolução de DNS ao usar glibc mais recente que 2.30 (por exemplo, do CentOS 8) foram resolvidos.
      A infraestrutura de integração contínua fornece a capacidade de executar tarefas LTP (Linux Testing Project) executando Linuxulator para testar melhorias feitas no código para suportar Linux. Cerca de 400 testes falham e exigem correção (alguns erros são causados ​​por falsos positivos, alguns exigem correções triviais, mas há outros que exigem adição de suporte para novas chamadas de sistema para correção). Foi feito trabalho para limpar o código do Linuxulator e simplificar a depuração. Patches com suporte para atributos estendidos e chamada de sistema fexecve foram preparados, mas ainda não revisados.

    • Continuam as reuniões do grupo de trabalho criado para realizar a migração dos códigos-fonte do sistema centralizado de controle de fontes Subversion para o sistema descentralizado Git. Um relatório com propostas para a migração está em processo de preparação.
    • В Rtld (vinculador de tempo de execução) modo de execução direta aprimorado (“/libexec/ld-elf.so.1 {caminho} {argumentos}”).
    • O projeto para testes fuzzing do kernel do FreeBSD usando o sistema syzkaller continua em desenvolvimento. Durante o período do relatório, foram eliminados problemas na pilha de rede e no código para trabalhar com tabelas de descritores de arquivos identificados usando syzkaller. Após o diagnóstico do erro, alterações foram adicionadas à pilha SCTP para facilitar a depuração. Regras foram adicionadas ao conjunto stress2 para identificar possíveis regressões. Adicionado suporte para testes fuzz de novas chamadas de sistema, incluindo copy_file_range(), __realpathat() e chamadas de subsistema Capsicum. O trabalho continua para cobrir a camada de emulação do Linux com testes fuzz. Analisamos e eliminamos erros observados nos últimos relatórios do Coverity Scan.
    • O sistema de integração contínua passou a executar todos os testes de ramificação principal apenas usando clang/lld. Ao testar o RISC-V, é garantida a formação de uma imagem de disco completa para a execução de testes no QEMU usando OpenSBI. Adicionadas novas tarefas para testar imagens e máquinas virtuais powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Estão em andamento trabalhos para transferir o conjunto de testes Kyua das portas (devel/kyua) para o sistema base para resolver problemas (os pacotes são instalados muito lentamente) que surgem ao usar Kyua em novas arquiteturas, cujo desenvolvimento é realizado usando um emulador ou FPGA. A integração no sistema básico simplificará significativamente os testes de plataformas incorporadas e a interface com sistemas de integração contínua.
    • Foi lançado um projeto para otimizar o desempenho do driver de ponte de rede if_bridge, que utiliza um único mutex para bloquear dados internos, o que não permite atingir o desempenho desejado em sistemas com grande número de ambientes jail ou máquinas virtuais unidas em uma rede. Nesta fase, foram adicionados testes ao código para evitar que ocorram regressões durante a modernização do trabalho com bloqueios. A possibilidade de usar o ConcurrencyKit para paralelizar manipuladores de transferência de dados (bridge_input(), bridge_output(), bridge_forward(), ...) está sendo considerada.
    • Adicionada uma nova chamada de sistema sigfastblock para permitir que um thread especifique um bloco de memória para um manipulador de sinal rápido para melhorar o desempenho dos manipuladores de exceção.
    • O kernel adiciona suporte para instruções atômicas LSE (Large System Extension) suportadas por sistemas ARMv8.1. Estas instruções são necessárias para melhorar o desempenho ao executar em placas Cavium ThunderX2 e AWS Graviton 2. As alterações adicionadas detectam o suporte LSE e habilitam dinamicamente a implementação atômica com base nelas. Durante os testes, o uso do LSE permitiu reduzir em 15% o tempo do processador gasto na montagem do kernel.
    • A otimização do desempenho foi realizada e a funcionalidade do kit de ferramentas foi ampliada para arquivos executáveis ​​no formato ELF.
      Adicionado suporte para armazenamento em cache de informações de depuração DWARF, resolvido problemas nos utilitários elfcopy/objcopy, adicionado processamento DW_AT_ranges,
      readelf implementa a capacidade de decodificar os sinalizadores PROTMAX_DISABLE, STKGAP_DISABLE e WXNEEDED, bem como Xen e GNU Build-ID.

  • segurança
    • Para melhorar o desempenho do FreeBSD em ambientes de nuvem Azure, estão em andamento trabalhos para fornecer suporte ao mecanismo HyperV Socket, que permite o uso de uma interface de soquete para interação entre o sistema convidado e o ambiente host sem configurar uma rede.
    • Estão em andamento trabalhos para fornecer compilações repetíveis do FreeBSD, tornando possível garantir que os arquivos executáveis ​​dos componentes do sistema sejam compilados exatamente a partir dos códigos-fonte declarados e não contenham alterações estranhas.
    • A capacidade de controlar a inclusão de mecanismos de proteção adicionais (ASLR, PROT_MAX, stack gap, mapeamento W+X) no nível de processos individuais foi adicionada ao utilitário elfctl
  • Sistemas de armazenamento e arquivos
    • Estão em andamento trabalhos para implementar a capacidade do NFS operar em um canal de comunicação criptografado baseado em TLS 1.3, em vez de usar Kerberos (modo sec=krb5p), que é limitado a criptografar apenas mensagens RPC e é implementado apenas em software. A nova implementação usa a pilha TLS fornecida pelo kernel para permitir a aceleração de hardware. O código NFS sobre TLS está quase pronto para teste, mas ainda requer trabalho para suportar certificados de cliente assinados e adaptar a pilha TLS do kernel para enviar dados NFS (os patches para recebimento já estão prontos).
  • Suporte de hardware
    • Estão em andamento trabalhos para adicionar suporte para CPU Hygon x86 chinesa baseada em tecnologias AMD;
    • Como parte do CheriBSD, um fork do FreeBSD para pesquisa de arquitetura de processador CHERI (Instruções RISC aprimoradas por hardware de capacidade), continua a ser implementado suporte para o processador ARM Morello, que suportará o sistema de controle de acesso à memória CHERI baseado no modelo de segurança do projeto Capsicum. Chip Morello estão planejando lançamento em 2021. O trabalho está atualmente focado em adicionar suporte para a plataforma Arm Neoverse N1 que alimenta Morello. Uma porta inicial do CheriBSD para a arquitetura RISC-V foi apresentada. O desenvolvimento do CheriBSD continua para o protótipo de referência CHERI baseado na arquitetura MIPS64.
    • A portabilidade do FreeBSD continua para o SoC NXP LS64A de 1046 bits baseado no processador ARMv8 Cortex-A72 com um mecanismo integrado de aceleração de processamento de pacotes de rede, Ethernet de 10 Gb, PCIe 3.0, SATA 3.0 e USB 3.0. Atualmente, os drivers QorIQ e LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI estão sendo preparados para transferência para a composição principal do FreeBSD.
    • O driver ena foi atualizado para a versão 2.1.1 com suporte para a segunda geração de adaptadores de rede ENAv2 (Elastic Network Adapter) usados ​​na infraestrutura Elastic Compute Cloud (EC2) para organizar a comunicação entre nós EC2 em velocidades de até 25 Gb/ S. Uma atualização para ENA 2.2.0 está sendo preparada.
    • As melhorias na porta FreeBSD para a plataforma powerpc64 continuam. O foco está em fornecer desempenho de qualidade em sistemas com processadores IBM POWER8 e POWER9. Durante o período do relatório, o FreeBSD-CURRENT foi transferido para usar o compilador LLVM/Clang 10.0 e o vinculador lld em vez do GCC. Por padrão, os sistemas powerpc64 usam a ABI ELFv2 e o suporte para a ABI ELFv1 foi descontinuado. O FreeBSD-STABLE ainda possui o gcc 4.2.1. Problemas com drivers virtio, aacraid e ixl foram resolvidos. Em sistemas powerpc64 é possível executar QEMU sem suporte para Huge Pages.
    • O trabalho continua para implementar suporte para a arquitetura RISC-V. Na sua forma atual, o FreeBSD já inicializa com sucesso na placa SiFive Hifive Unleashed, para a qual os drivers foram preparados
      UART, SPI e PRCI, suporta firmware OpenSBI e SBI 0.2. Durante o período do relatório, o trabalho centrou-se na migração do GCC para clang e lld.

  • Aplicações e sistema portuário
    • A coleção de portas do FreeBSD ultrapassou o limite de 39 mil portas, o número de PRs não fechados ultrapassa ligeiramente 2400, dos quais 640 PRs ainda não foram classificados. Durante o período do relatório, 8146 alterações foram feitas por 173 desenvolvedores. Quatro novos participantes receberam direitos de committer (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Adicionado sinalizador USES=qca e removido sinalizador USES=zope (devido à incompatibilidade com Python 3). Estão em andamento trabalhos para remover o Python 2.7 da árvore de ports - todos os ports baseados em Python 2 devem ser portados para Python 3 ou serão removidos. O gerenciador de pacotes pkg foi atualizado para a versão 1.13.2.
    • Componentes de pilha gráfica atualizados e portas relacionadas ao xorg.
      O servidor X.org foi atualizado para a versão 1.20.8 (anteriormente enviada na ramificação 1.18), o que permitiu ao FreeBSD usar como padrão o backend udev/evdev para lidar com dispositivos de entrada. O pacote Mesa foi alterado para usar a extensão DRI3 em vez de DRI2 por padrão. O trabalho está em andamento para manter drivers gráficos, pilha de dispositivos de entrada e componentes drm-kmod (uma porta que permite a operação de módulos DRM amdgpu, i915 e radeon, usando a estrutura linuxkpi para compatibilidade com o Direct Rendering Manager do kernel Linux) até data.

    • A área de trabalho KDE Plasma, KDE Frameworks, aplicativos KDE e Qt são mantidos atualizados e atualizados com as versões mais recentes. Um novo aplicativo kstars (star atlas) foi adicionado aos ports.
    • Trabalho foi feito para eliminar alterações regressivas no gerenciador de janelas xfwm4 que apareceram após a atualização do Xfce para a versão 4.14 (por exemplo, artefatos apareceram ao decorar janelas).
    • A porta Wine foi atualizada para lançar o Wine 5.0 (anteriormente era oferecido o 4.0.3).
    • A partir da versão 1.14, o compilador da linguagem Go adicionou suporte oficial para a arquitetura ARM64 para FreeBSD 12.0.
    • O OpenSSH no sistema básico foi atualizado para a versão 7.9p1.
    • A biblioteca sysctlmibinfo2 foi implementada e colocada em portas (devel/libsysctlmibinfo2), fornecendo uma API para acessar o MIB sysctl e traduzir nomes sysctl em identificadores de objeto (OIDs).
    • Uma atualização de distribuição foi gerada NomadBSD 1.3.1, que é uma edição do FreeBSD adaptada para uso como um desktop portátil inicializável a partir de uma unidade USB. O ambiente gráfico é baseado em um gerenciador de janelas Caixa aberta. Usado para montar unidades DSBMD (montagem CD9660, FAT, HFS+, NTFS, Ext2/3/4 é suportada), para configurar uma rede sem fio - wifimgr, e para controlar o volume - DSBMixer.
    • Começado trabalho sobre como escrever documentação completa para o gerente do ambiente de prisão lata. O pote 0.11.0 está sendo preparado para lançamento, que incluirá ferramentas para gerenciamento da pilha de rede.

Fonte: opennet.ru

Adicionar um comentário