Rapportu di Sviluppu FreeBSD per u primu trimestre di u 2020

publicatu rapportu nantu à u sviluppu di u prughjettu FreeBSD da ghjennaghju à marzu 2020. Trà i cambiamenti pudemu nutà:

  • Problemi generali è sistemichi
    • Eliminatu u compilatore GCC da l'arbulu di fonte FreeBSD-CURRENT, è ancu l'utilità gperf, gcov è gtc (devicetree compiler) inutilizate. Tutte e piattaforme chì ùn supportanu micca Clang sò state cambiate à l'usu di strumenti di custruzzione esterni installati da i porti. U sistema di basa hà speditu una versione obsoleta di GCC 4.2.1, è l'integrazione di e versioni più recenti ùn era micca pussibule per via di a transizione di 4.2.2 à a licenza GPLv3, chì era cunsiderata inappropriata per i cumpunenti di basa FreeBSD. I versioni attuali di GCC, cumpresu GCC 9, ponu sempre esse installati da pacchetti è porti.
    • L'infrastruttura di emulazione di l'ambiente Linux (Linuxulator) hà aghjustatu u supportu per a chjama di u sistema di sendfile, u modu TCP_CORK (necessariu per nginx), è a bandiera MAP_32BIT (risolve u prublema cù u lanciu di pacchetti cù Mono da Ubuntu Bionic). I prublemi cù a risoluzione DNS quandu si usa glibc più recente di 2.30 (per esempiu da CentOS 8) sò stati risolti.
      L'infrastruttura d'integrazione cuntinuu furnisce l'abilità di eseguisce LTP (Linux Testing Project) travaglii chì eseguenu Linuxulator per pruvà e migliure fatte à u codice per sustene Linux. Circa 400 teste fallenu è necessitanu riparazioni (alcuni errori sò causati da falsi pusitivi, alcuni necessitanu correzioni triviali, ma ci sò altri chì necessitanu aghjunghje supportu per i novi chjamati di sistema per risolve). U travagliu hè statu fattu per pulisce u codice Linuxulator è simplificà a debugging. Patchs cù supportu per attributi estesi è a chjama di u sistema fexecve sò stati preparati, ma ùn anu micca rivisu.

    • Reunione di u gruppu di travagliu creatu per fà a migrazione di i codici fonte da u sistema di cuntrollu di fonte centralizatu Subversion à u sistema decentralizatu Git continuà. Un rapportu cù pruposte per a migrazione hè in prucessu di preparazione.
    • В rtld (runtime linker) hà migliuratu u modu di esecuzione diretta ("/libexec/ld-elf.so.1 {path} {arguments}").
    • U prughjettu per a prova fuzzing di u kernel FreeBSD utilizendu u sistema syzkaller cuntinueghja à sviluppà. Duranti u periodu di rapportu, i prublemi in a pila di rete è u codice per travaglià cù e tabelle di descrittori di file identificate cù syzkaller sò stati eliminati. Dopu à u diagnosticu d'errore, i cambiamenti sò stati aghjunti à a pila SCTP per fà a debugging più faciule. Aghjunghjite regule à u stress2 set per identificà e regressioni pussibuli. Aghjunghje supportu per a prova fuzz di novi chjamati di u sistema, cumprese copy_file_range (), __realpathat () è e chiamate di sottosistema Capsicum. U travagliu cuntinueghja à copre a strata di emulazione Linux cù fuzz testing. Avemu analizatu è eliminatu l'errori nutati in l'ultimi rapporti di Coverity Scan.
    • U sistema d'integrazione cuntinuu hà cambiatu à eseguisce tutti i testi di u ramu di a testa solu usendu clang/lld. Quandu teste per RISC-V, a furmazione di una maghjina di discu cumpleta hè assicurata per eseguisce testi in QEMU cù OpenSBI. Aggiunti novi travaglii per pruvà l'imaghjini è e macchine virtuali powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • U travagliu hè in corso per trasfirià a suite di prova Kyua da i porti (devel / kyua) à u sistema di basa per risolve i prublemi (i pacchetti sò stallati assai lentamente) chì si sviluppanu quandu si usa Kyua in novi architetture, u sviluppu per quale hè realizatu cù un emulatore o FPGA. L'integrazione in u sistema di basa simplificà significativamente a prova di e plataforme integrate è l'interfaccia cù i sistemi di integrazione cuntinuu.
    • Un prughjettu hè statu lanciatu per ottimisà u rendiment di u driver di u ponte di rete se_ponte, chì usa un unicu mutex per chjappà e dati internu, chì ùn permettenu micca di ottene u rendiment desideratu in sistemi cù un gran numaru di ambienti di prigiò o di macchine virtuali uniti in una rete. In questa tappa, i testi sò stati aghjunti à u codice per impediscenu a regressione durante a mudernizazione di u travagliu cù chjusi. A pussibilità d'utilizà ConcurrencyKit per parallelizà i gestori di trasferimentu di dati (bridge_input(), bridge_output(), bridge_forward(), ...) hè cunsideratu.
    • Aghjunghje una nova chjama di u sistema sigfastblock per permette à un filu di specificà un bloccu di memoria per un gestore di signale veloce per migliurà u rendiment di i gestori di eccezzioni.
    • U kernel aghjunghjenu supportu per l'istruzzioni atomichi LSE (Large System Extension) supportati da i sistemi ARMv8.1. Queste struzzioni sò richiesti per migliurà a prestazione quandu eseguite nantu à i tavulini Cavium ThunderX2 è AWS Graviton 2. I cambiamenti aghjunti dettanu u supportu LSE è attivanu dinamicamente l'implementazione atomica basata nantu à elli. Durante a prova, l'usu di LSE hà permessu di riduce u tempu di u processatore spentu quandu assemble u kernel da 15%.
    • L'optimizazione di u rendiment hè stata realizata è a funziunalità di u toolkit hè stata allargata per i fugliali eseguibili in u formatu ELF.
      Aggiuntu supportu per a cache di l'infurmazioni di debugging DWARF, risolve i prublemi in l'utilità elfcopy/objcopy, aghjustatu u processu DW_AT_ranges,
      readelf implementa a capacità di decodificà i bandieri PROTMAX_DISABLE, STKGAP_DISABLE è WXNEEDED, è ancu Xen è GNU Build-ID.

  • Seguretat
    • Per migliurà a prestazione di FreeBSD in l'ambienti di nuvola Azure, u travagliu hè in corso per furnisce un supportu per u mecanismu HyperV Socket, chì permette l'usu di una interfaccia di socket per l'interazzione trà u sistema d'ospiti è l'ambienti di l'ospiti senza stabilisce una rete.
    • U travagliu hè in corso per furnisce custruzzioni ripetibili di FreeBSD, facendu pussibule di assicurà chì i fugliali eseguibili di i cumpunenti di u sistema sò compilati esattamente da i codici fonte dichjarati è ùn cuntenenu micca cambiamenti estranei.
    • A capacità di cuntrullà l'inclusione di miccanismi di prutezzione supplementari (ASLR, PROT_MAX, stack gap, W + X mapping) à u livellu di i prucessi individuali hè stata aghjunta à l'utilità elfctl.
  • Sistemi di archiviazione è file
    • U travagliu hè in corso per implementà l'abilità di NFS per operare nantu à un canale di cumunicazione criptatu basatu in TLS 1.3, invece di utilizà Kerberos (sec = modu krb5p), chì hè limitatu à criptà solu i missaghji RPC è hè implementatu solu in u software. A nova implementazione usa a pila TLS furnita da u kernel per attivà l'accelerazione hardware. U codice NFS nantu à TLS hè quasi prontu per a prova, ma hè sempre bisognu di travagliu per supportà i certificati di u cliente firmati è adattà a pila di TLS di u kernel per mandà dati NFS (patch per riceve sò digià pronti).
  • Supportu hardware
    • U travagliu hè in corso per aghjunghje supportu per u CPU Hygon x86 Chinese basatu nantu à e tecnulugia AMD;
    • Cum'è parte di CheriBSD, una furchetta di FreeBSD per l'architettura di processore di ricerca CHERI (Capability Hardware Enhanced RISC Instructions), u supportu per u processatore ARM Morello cuntinueghja à esse implementatu, chì sustene u sistema di cuntrollu d'accessu di memoria CHERI basatu annantu à u mudellu di sicurità di u prughjettu Capsicum. chip Morello sò pianificatu liberazione in 2021. U travagliu hè attualmente focu annantu à aghjunghje supportu per a piattaforma Arm Neoverse N1 chì alimenta Morello. Un portu iniziale di CheriBSD per l'architettura RISC-V hè statu prisentatu. U sviluppu di CheriBSD cuntinueghja per u prototipu di riferimentu CHERI basatu annantu à l'architettura MIPS64.
    • U porting FreeBSD cuntinueghja per u 64-bit SoC NXP LS1046A basatu annantu à u processore ARMv8 Cortex-A72 cù un mutore di accelerazione di processazione di pacchetti di rete integrata, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 è USB 3.0. Attualmente, i driver QorIQ è LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI sò stati preparati per u trasferimentu à a cumpusizioni principali di FreeBSD.
    • U driver ena hè statu aghjurnatu à a versione 2.1.1 cù supportu per a seconda generazione di adattatori di rete ENAv2 (Elastic Network Adapter) utilizati in l'infrastruttura Elastic Compute Cloud (EC2) per urganizà a cumunicazione trà i nodi EC2 à velocità di finu à 25 Gb/ s. Un aghjurnamentu di ENA 2.2.0 hè in preparazione.
    • I migliuramentu di u portu FreeBSD per a piattaforma powerpc64 cuntinueghjanu. L'enfasi hè nantu à furnisce prestazioni di qualità in sistemi cù processori IBM POWER8 è POWER9. Durante u periodu di rapportu, FreeBSD-CURRENT hè statu trasferitu per utilizà u compilatore LLVM/Clang 10.0 è lld linker invece di GCC. Per automaticamente, i sistemi powerpc64 utilizanu l'ELFv2 ABI è u supportu per l'ELFv1 ABI hè statu discontinuatu. FreeBSD-STABLE hà sempre gcc 4.2.1. I prublemi cù i driver virtio, aacraid è ixl sò stati risolti. In i sistemi powerpc64 hè pussibule di eseguisce QEMU senza supportu Huge Pages.
    • U travagliu cuntinueghja à implementà u supportu per l'architettura RISC-V. In a so forma attuale, FreeBSD hà digià avviatu cù successu nantu à a tavola SiFive Hifive Unleashed, per quale i cunduttori sò stati preparati.
      UART, SPI è PRCI, supporta i firmware OpenSBI è SBI 0.2. Duranti u periodu di rapportu, u travagliu era focu annantu à a migrazione da GCC à clang è lld.

  • Applicazioni è sistema portu
    • A cullezzione di porti FreeBSD hà attraversatu u limitu di 39 mila porti, u numeru di PR unclosed supira ligeramente 2400, di quale 640 PRs ùn sò micca stati ordenati. Durante u periodu di rapportu, 8146 cambiamenti sò stati fatti da 173 sviluppatori. Quattru novi participanti anu ricevutu i diritti di cummitter (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Aggiuntu USES = bandiera qca è eliminatu USES = bandiera zope (per via di incompatibilità cù Python 3). U travagliu hè in corso per caccià Python 2.7 da l'arburu di i porti - tutti i porti basati in Python 2 devenu esse purtati à Python 3 o seranu eliminati. U gestore di pacchetti pkg hè statu aghjurnatu per liberà 1.13.2.
    • Cumpunenti di stack di gràfiche aghjurnati è porti ligati à xorg.
      U servitore X.org hè statu aghjurnatu à a versione 1.20.8 (previamente spedita nantu à a filiera 1.18), chì hà permessu à FreeBSD di utilizà u backend udev/evdev per a gestione di i dispositi di input. U pacchettu Mesa hè statu cambiatu per utilizà l'estensione DRI3 invece di DRI2 per difettu. U travagliu hè in corso per mantene i drivers grafichi, a pila di dispositivi di input, è i cumpunenti drm-kmod (un portu chì permette l'operazione di i moduli amdgpu, i915 è radeon DRM, utilizendu u framework linuxkpi per a cumpatibilità cù u Manager di Rendering Direttu di u kernel Linux) attualizatu.

    • U desktop KDE Plasma, i Frameworks KDE, l'applicazioni KDE è Qt sò mantenuti aghjurnati è aghjurnati à l'ultime versioni. Una nova applicazione kstars (star atlas) hè stata aghjunta à i porti.
    • U travagliu hè statu fattu per eliminà i cambiamenti regressivi in ​​u gestore di finestra xfwm4 chì apparsu dopu l'aghjurnà Xfce à a versione 4.14 (per esempiu, l'artefatti apparsu quandu decoranu Windows).
    • U portu Wine hè statu aghjurnatu per liberà Wine 5.0 (previamente 4.0.3 hè stata offerta).
    • Partendu da a versione 1.14, u compilatore di lingua Go hà aghjustatu supportu ufficiale per l'architettura ARM64 per FreeBSD 12.0.
    • OpenSSH nantu à u sistema di basa hè statu aghjurnatu per liberà 7.9p1.
    • A libreria sysctlmibinfo2 hè stata implementata è posta in porti (devel/libsysctlmibinfo2), chì furnisce una API per accede à u sysctl MIB è traduce i nomi sysctl in identificatori d'ughjettu (OID).
    • Un aghjurnamentu di distribuzione hè statu generatu NomadBSD 1.3.1, chì hè una edizione di FreeBSD adattata per l'usu cum'è un desktop portable bootable da un USB drive. L'ambiente graficu hè basatu annantu à un gestore di finestra Openbox. Adupratu per a stallazione di unità DSBMD (montaggio CD9660, FAT, HFS+, NTFS, Ext2/3/4 hè supportatu), per cunfigurà una rete wireless - wifimgr, è per cuntrullà u voluminu - DSBMixer.
    • Principiatu travagliu à scrive una documentazione cumpleta per u gestore di l'ambiente di prigiò pignata. Pot 0.11.0 hè preparatu per a liberazione, chì includerà strumenti per gestisce a pila di rete.

Source: opennet.ru

Add a comment