FreeBSD Development Report para sa unang quarter ng 2020

Nai-publish ulat sa pagbuo ng proyekto ng FreeBSD mula Enero hanggang Marso 2020. Kabilang sa mga pagbabagong mapapansin natin:

  • Pangkalahatan at mga tanong sa sistema
    • Inalis ang GCC compiler set mula sa FreeBSD-CURRENT source tree, pati na rin ang hindi nagamit na gperf, gcov at gtc (devicetree compiler) na mga utility. Ang lahat ng mga platform na hindi sumusuporta sa Clang ay inilipat sa paggamit ng mga panlabas na tool sa pagbuo na naka-install mula sa mga port. Nagpadala ang base system ng hindi napapanahong release ng GCC 4.2.1, at hindi posible ang pagsasama ng mga mas bagong bersyon dahil sa paglipat ng 4.2.2 sa lisensya ng GPLv3, na itinuturing na hindi naaangkop para sa mga bahagi ng base ng FreeBSD. Ang mga kasalukuyang release ng GCC, kabilang ang GCC 9, ay maaari pa ring i-install mula sa mga package at port.
    • Ang Linux environment emulation infrastructure (Linuxulator) ay nagdagdag ng suporta para sa sendfile system call, TCP_CORK mode (kinakailangan para sa nginx), at ang MAP_32BIT na watawat (lulutas ang problema sa paglulunsad ng mga package sa Mono mula sa Ubuntu Bionic). Ang mga problema sa paglutas ng DNS kapag gumagamit ng glibc na mas bago sa 2.30 (halimbawa mula sa CentOS 8) ay nalutas na.
      Ang tuluy-tuloy na imprastraktura ng pagsasama ay nagbibigay ng kakayahang magpatakbo ng mga trabaho sa LTP (Linux Testing Project) na nagpapatakbo ng Linuxulator upang subukan ang mga pagpapahusay na ginawa sa code upang suportahan ang Linux. Humigit-kumulang 400 na pagsubok ang nabigo at nangangailangan ng pag-aayos (ang ilang mga error ay sanhi ng mga maling positibo, ang ilan ay nangangailangan ng mga walang kabuluhang pag-aayos, ngunit may iba pa na nangangailangan ng pagdaragdag ng suporta para sa mga bagong tawag sa system upang ayusin). Ang trabaho ay ginawa upang linisin ang Linuxulator code at pasimplehin ang pag-debug. Ang mga patch na may suporta para sa mga pinahabang katangian at ang fexecve system call ay inihanda na, ngunit hindi pa nasusuri.

    • Ang mga pagpupulong ng working group na nilikha upang isagawa ang paglipat ng mga source code mula sa sentralisadong source control system Ang pagbabagsak sa desentralisadong sistema na Git ay nagpapatuloy. Ang isang ulat na may mga panukala para sa paglipat ay nasa proseso ng paghahanda.
    • Π’ rtld (runtime linker) pinahusay na direct execution mode (β€œ/libexec/ld-elf.so.1 {path} {arguments}”).
    • Ang proyekto para sa fuzzing testing ng FreeBSD kernel gamit ang syzkaller system ay patuloy na umuunlad. Sa panahon ng pag-uulat, ang mga problema sa network stack at code para sa pagtatrabaho sa mga file descriptor table na natukoy gamit ang syzkaller ay inalis. Kasunod ng diagnosis ng error, idinagdag ang mga pagbabago sa stack ng SCTP upang gawing mas madali ang pag-debug. Ang mga panuntunan ay idinagdag sa set ng stress2 upang matukoy ang mga posibleng pagbabalik. Nagdagdag ng suporta para sa fuzz testing ng mga bagong system call, kabilang ang copy_file_range(), __realpathat() at Capsicum subsystem na tawag. Ang trabaho ay patuloy na sumasakop sa Linux emulation layer na may fuzz testing. Sinuri namin at inalis ang mga error na nabanggit sa pinakabagong mga ulat ng Coverity Scan.
    • Ang tuluy-tuloy na sistema ng pagsasama ay lumipat sa pagsasagawa ng lahat ng mga pagsubok sa head branch gamit lamang ang clang/lld. Kapag sinusubukan para sa RISC-V, ang pagbuo ng isang kumpletong disk image ay sinisiguro para sa pagpapatakbo ng mga pagsubok sa QEMU gamit ang OpenSBI. Nagdagdag ng mga bagong gawain para sa pagsubok ng mga imahe at powerpc64 virtual machine (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Ang trabaho ay isinasagawa upang ilipat ang Kyua test suite mula sa mga port (devel/kyua) patungo sa base system upang malutas ang mga problema (ang mga package ay na-install nang napakabagal) na lumitaw kapag ginagamit ang Kyua sa mga bagong arkitektura, ang pag-develop kung saan ay isinasagawa gamit ang isang emulator o FPGA. Ang pagsasama sa base system ay makabuluhang magpapasimple sa pagsubok ng mga naka-embed na platform at interface na may tuluy-tuloy na mga sistema ng pagsasama.
    • Ang isang proyekto ay inilunsad upang i-optimize ang pagganap ng network bridge driver if_bridge, na gumagamit ng isang solong mutex upang i-lock ang panloob na data, na hindi nagpapahintulot sa pagkamit ng ninanais na pagganap sa mga system na may malaking bilang ng mga jail environment o virtual machine na pinagsama sa isang network. Sa yugtong ito, ang mga pagsubok ay idinagdag sa code upang maiwasan ang mga regression na mangyari sa panahon ng modernisasyon ng pagtatrabaho sa mga lock. Ang posibilidad ng paggamit ng ConcurrencyKit upang iparallelize ang mga humahawak ng data transfer (bridge_input(), bridge_output(), bridge_forward(), ...) ay isinasaalang-alang.
    • Nagdagdag ng bagong tawag sa sistema ng sigfastblock upang payagan ang isang thread na tumukoy ng isang bloke ng memorya para sa isang mabilis na tagapangasiwa ng signal upang mapabuti ang pagganap ng mga humahawak ng exception.
    • Ang kernel ay nagdaragdag ng suporta para sa LSE (Large System Extension) atomic na mga tagubilin na sinusuportahan ng ARMv8.1 system. Ang mga tagubiling ito ay kinakailangan upang mapabuti ang pagganap kapag tumatakbo sa mga board ng Cavium ThunderX2 at AWS Graviton 2. Ang mga karagdagang pagbabago ay nakakakita ng suporta sa LSE at dynamic na pinapagana ang atomic na pagpapatupad batay sa mga ito. Sa panahon ng pagsubok, ang paggamit ng LSE ay naging posible upang bawasan ang oras ng processor na ginugol sa pag-assemble ng kernel ng 15%.
    • Ang pag-optimize ng pagganap ay naisagawa at ang paggana ng toolkit ay pinalawak para sa mga executable na file sa ELF na format.
      Nagdagdag ng suporta para sa pag-cache ng impormasyon sa pag-debug ng DWARF, nalutas ang mga problema sa mga utility ng elfcopy/objcopy, idinagdag ang pagproseso ng DW_AT_ranges,
      Ang readelf ay nagpapatupad ng kakayahang mag-decode ng PROTMAX_DISABLE, STKGAP_DISABLE at WXNEEDED na mga flag, pati na rin ang Xen at GNU Build-ID.

  • katiwasayan
    • Upang mapabuti ang pagganap ng FreeBSD sa Azure cloud environment, isinasagawa ang trabaho upang magbigay ng suporta para sa mekanismo ng HyperV Socket, na nagbibigay-daan sa paggamit ng interface ng socket para sa pakikipag-ugnayan sa pagitan ng guest system at ng host environment nang hindi nagse-set up ng network.
    • Ang trabaho ay isinasagawa upang magbigay ng mga paulit-ulit na build ng FreeBSD, na ginagawang posible upang matiyak na ang mga executable na file ng mga bahagi ng system ay eksaktong pinagsama-sama mula sa ipinahayag na source code at hindi naglalaman ng mga extraneous na pagbabago.
    • Ang kakayahang kontrolin ang pagsasama ng mga karagdagang mekanismo ng proteksyon (ASLR, PROT_MAX, stack gap, W+X mapping) sa antas ng mga indibidwal na proseso ay naidagdag sa elfctl utility
  • Storage at mga file system
    • Ang trabaho ay isinasagawa upang ipatupad ang kakayahan para sa NFS na gumana sa isang naka-encrypt na channel ng komunikasyon batay sa TLS 1.3, sa halip na gumamit ng Kerberos (sec=krb5p mode), na limitado sa pag-encrypt lamang ng mga mensahe ng RPC at ipinapatupad lamang sa software. Ang bagong pagpapatupad ay gumagamit ng kernel-provided TLS stack upang paganahin ang hardware acceleration. Ang NFS over TLS code ay halos handa na para sa pagsubok, ngunit nangangailangan pa rin ng trabaho upang suportahan ang mga pinirmahang sertipiko ng kliyente at iakma ang kernel TLS stack upang magpadala ng data ng NFS (handa na ang mga patch para sa pagtanggap).
  • Suporta sa Hardware
    • Ang trabaho ay isinasagawa upang magdagdag ng suporta para sa Chinese x86 CPU Hygon batay sa mga teknolohiya ng AMD;
    • Bilang bahagi ng CheriBSD, isang tinidor ng FreeBSD para sa arkitektura ng processor ng pananaliksik CHERI (Capability Hardware Enhanced RISC Instructions), patuloy na ipinapatupad ang suporta para sa processor ng ARM Morello, na susuportahan ang CHERI memory access control system batay sa modelo ng seguridad ng proyekto ng Capsicum. Morello chip ay nagpaplano ipalabas sa 2021. Kasalukuyang nakatuon ang trabaho sa pagdaragdag ng suporta para sa Arm Neoverse N1 platform na nagpapagana kay Morello. Isang paunang daungan ng CheriBSD para sa arkitektura ng RISC-V ay ipinakita. Ang CheriBSD development ay nagpapatuloy para sa CHERI reference prototype batay sa MIPS64 architecture.
    • Ang FreeBSD porting ay nagpapatuloy para sa 64-bit SoC NXP LS1046A batay sa ARMv8 Cortex-A72 processor na may pinagsamang network packet processing acceleration engine, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 at USB 3.0. Sa kasalukuyan, ang mga driver na QorIQ at LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI ay inihahanda para sa paglipat sa pangunahing komposisyon ng FreeBSD.
    • Ang driver ng ena ay na-update sa bersyon 2.1.1 na may suporta para sa ikalawang henerasyon ng mga ENAv2 (Elastic Network Adapter) network adapter na ginagamit sa imprastraktura ng Elastic Compute Cloud (EC2) upang ayusin ang komunikasyon sa pagitan ng mga EC2 node sa bilis na hanggang 25 Gb/ s. Ang isang update sa ENA 2.2.0 ay inihahanda.
    • Patuloy ang mga pagpapabuti sa FreeBSD port para sa powerpc64 platform. Ang focus ay sa pagbibigay ng kalidad ng pagganap sa mga system na may IBM POWER8 at POWER9 processors. Sa panahon ng pag-uulat, inilipat ang FreeBSD-CURRENT upang gamitin ang LLVM/Clang 10.0 compiler at lld linker sa halip na GCC. Bilang default, ginagamit ng mga powerpc64 system ang ELFv2 ABI at hindi na ipinagpatuloy ang suporta para sa ELFv1 ABI. Ang FreeBSD-STABLE ay mayroon pa ring gcc 4.2.1. Ang mga problema sa virtio, aacraid at ixl driver ay nalutas na. Sa mga sistema ng powerpc64 posible na magpatakbo ng QEMU nang walang suporta sa Huge Pages.
    • Ang trabaho ay patuloy na nagpapatupad ng suporta para sa arkitektura ng RISC-V. Sa kasalukuyang anyo nito, matagumpay na nag-boot ang FreeBSD sa SiFive Hifive Unleashed board, kung saan inihanda ang mga driver
      Ang UART, SPI at PRCI, ay sumusuporta sa OpenSBI at SBI 0.2 firmware. Sa panahon ng pag-uulat, ang trabaho ay nakatuon sa paglipat mula sa GCC patungo sa clang at lld.

  • Mga application at port system
    • Ang koleksyon ng mga port ng FreeBSD ay tumawid sa threshold ng 39 libong mga port, ang bilang ng mga hindi nakasarang PR ay bahagyang lumampas sa 2400, kung saan 640 na mga PR ay hindi pa naayos. Sa panahon ng pag-uulat, 8146 na pagbabago ang ginawa mula sa 173 developer. Apat na bagong kalahok ang nakatanggap ng committer rights (LoΓ―c Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Nagdagdag ng USES=qca flag at tinanggal ang USES=zope flag (dahil sa hindi pagkakatugma sa Python 3). Ginagawa ang trabaho upang alisin ang Python 2.7 mula sa ports tree - lahat ng Python 2-based na port ay dapat ma-port sa Python 3 o aalisin. Ang pkg package manager ay na-update para ilabas ang 1.13.2.
    • Na-update na mga bahagi ng graphics stack at mga port na nauugnay sa xorg.
      Ang X.org server ay na-update sa bersyon 1.20.8 (dating ipinadala sa 1.18 branch), na nagbigay-daan sa FreeBSD na mag-default sa paggamit ng udev/evdev backend para sa paghawak ng mga input device. Ang Mesa package ay inilipat upang gamitin ang DRI3 extension sa halip na DRI2 bilang default. Ang trabaho ay isinasagawa upang panatilihin ang mga graphics driver, input device stack, at drm-kmod na mga bahagi (isang port na nagbibigay-daan sa pagpapatakbo ng mga module ng amdgpu, i915 at radeon DRM, gamit ang linuxkpi framework para sa pagiging tugma sa Direct Rendering Manager ng Linux kernel) napapanahon.

    • Ang KDE Plasma desktop, KDE Frameworks, KDE Applications at Qt ay pinananatiling napapanahon at ina-update sa mga pinakabagong release. Ang isang bagong application kstars (star atlas) ay naidagdag sa mga port.
    • Ang trabaho ay ginawa upang alisin ang mga umuurong pagbabago sa xfwm4 window manager na lumitaw pagkatapos i-update ang Xfce sa bersyon 4.14 (halimbawa, ang mga artifact ay lumitaw kapag nagdedekorasyon ng mga bintana).
    • Ang Wine port ay na-update upang i-release ang Wine 5.0 (dating 4.0.3 ay inaalok).
    • Simula sa bersyon 1.14, nagdagdag ang Go language compiler ng opisyal na suporta para sa ARM64 architecture para sa FreeBSD 12.0.
    • Ang OpenSSH sa base system ay na-update upang ilabas ang 7.9p1.
    • Ang sysctlmibinfo2 library ay ipinatupad at inilagay sa mga port (devel/libsysctlmibinfo2), na nagbibigay ng API para sa pag-access sa sysctl MIB at pagsasalin ng mga pangalan ng sysctl sa mga object identifier (OIDs).
    • Nabuo ang isang update sa pamamahagi NomadBSD 1.3.1, na isang edisyon ng FreeBSD na inangkop para sa paggamit bilang isang portable desktop bootable mula sa isang USB drive. Ang graphical na kapaligiran ay batay sa isang window manager Openbox. Ginagamit para sa pag-mount ng mga drive DSBMD (Suportado ang pag-mount ng CD9660, FAT, HFS+, NTFS, Ext2/3/4), para mag-configure ng wireless network - wifimgr, at upang kontrolin ang volume - DSBMixer.
    • Nagsimula magtrabaho sa pagsulat ng kumpletong dokumentasyon para sa jail environment manager palayok. Inihahanda ang Pot 0.11.0 para sa pagpapalabas, na magsasama ng mga tool para sa pamamahala ng network stack.

Pinagmulan: opennet.ru

Magdagdag ng komento