Raporti i Zhvillimit të FreeBSD T2020 XNUMX

botuar raport mbi zhvillimin e projektit FreeBSD nga janari deri në mars 2020. Ndër ndryshimet mund të vërejmë:

  • Pyetje të përgjithshme dhe të sistemit
    • U hoq grupi i përpiluesit GCC nga pema burimore FreeBSD-CURRENT, si dhe shërbimet e papërdorura gperf, gcov dhe gtc (përpiluesi i pemës së pajisjes). Të gjitha platformat që nuk mbështesin Clang janë kaluar në përdorimin e mjeteve të jashtme të ndërtimit të instaluara nga portet. Sistemi bazë dërgoi një version të vjetëruar të GCC 4.2.1 dhe integrimi i versioneve më të reja nuk ishte i mundur për shkak të kalimit të 4.2.2 në licencën GPLv3, e cila u konsiderua e papërshtatshme për komponentët bazë të FreeBSD. Publikimet aktuale të GCC, duke përfshirë GCC 9, mund të instalohen ende nga paketat dhe portet.
    • Infrastruktura e emulimit të mjedisit Linux (Linuxulator) ka shtuar mbështetje për thirrjen e sistemit sendfile, modalitetin TCP_CORK (kërkohet për nginx) dhe flamurin MAP_32BIT (zgjidh problemin me nisjen e paketave me Mono nga Ubuntu Bionic). Problemet me rezolucionin DNS kur përdorni glibc më të ri se 2.30 (për shembull nga CentOS 8) janë zgjidhur.
      Infrastruktura e integrimit të vazhdueshëm ofron mundësinë për të ekzekutuar punë LTP (Linux Testing Project) duke përdorur Linuxulator për të testuar përmirësimet e bëra në kodin për të mbështetur Linux. Rreth 400 teste dështojnë dhe kërkojnë rregullim (disa gabime shkaktohen nga pozitive false, disa kërkojnë rregullime të parëndësishme, por ka të tjera që kërkojnë shtimin e mbështetjes për thirrjet e reja të sistemit për t'u rregulluar). Është bërë punë për të pastruar kodin Linuxulator dhe për të thjeshtuar korrigjimin. Patches me mbështetje për atributet e zgjeruara dhe thirrjen e sistemit fexecve janë përgatitur, por nuk janë shqyrtuar ende.

    • Vazhdojnë takimet e grupit të punës të krijuar për të kryer migrimin e kodeve burimore nga sistemi i centralizuar i kontrollit të burimit Subversion në sistemin e decentralizuar Git. Një raport me propozime për migrimin është në proces përgatitjeje.
    • В rtld (lidhësi i kohës së ekzekutimit) përmirësoi modalitetin e ekzekutimit të drejtpërdrejtë (“/libexec/ld-elf.so.1 {rruga} {argumentet}”).
    • Projekti për testimin fuzzing të kernelit FreeBSD duke përdorur sistemin syzkaller vazhdon të zhvillohet. Gjatë periudhës së raportimit, problemet në grumbullin e rrjetit dhe kodin për të punuar me tabelat e përshkruesve të skedarëve të identifikuar duke përdorur syzkaller u eliminuan. Pas diagnozës së gabimit, ndryshimet janë shtuar në pirgun SCTP për të bërë më të lehtë korrigjimin e gabimeve. Rregullat i janë shtuar grupit të stresit2 për të identifikuar regresionet e mundshme. Mbështetje e shtuar për testimin fuzz të thirrjeve të reja të sistemit, duke përfshirë thirrjet copy_file_range(), __realpathat() dhe thirrjet e nënsistemit Capsicum. Puna vazhdon për të mbuluar shtresën e emulimit të Linux me testimin fuzz. Ne analizuam dhe eliminuam gabimet e vërejtura në raportet më të fundit të Skanimit të Mbulimit.
    • Sistemi i integrimit të vazhdueshëm ka kaluar në ekzekutimin e të gjitha testeve të degës së kokës vetëm duke përdorur clang/lld. Gjatë testimit për RISC-V, sigurohet formimi i një imazhi të plotë të diskut për ekzekutimin e testeve në QEMU duke përdorur OpenSBI. U shtuan detyra të reja për testimin e imazheve dhe makinave virtuale powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Po punohet për transferimin e grupit të testit Kyua nga portet (zhvillimi/kyua) në sistemin bazë për të zgjidhur problemet (paketat instalohen shumë ngadalë) që lindin kur përdorni Kyua në arkitekturat e reja, zhvillimi për të cilin kryhet duke përdorur një emulator ose FPGA. Integrimi në sistemin bazë do të thjeshtojë ndjeshëm testimin e platformave të integruara dhe ndërfaqen me sistemet e integrimit të vazhdueshëm.
    • Një projekt është nisur për të optimizuar performancën e drejtuesit të urës së rrjetit if_urë, i cili përdor një mutex të vetëm për të bllokuar të dhënat e brendshme, gjë që nuk lejon arritjen e performancës së dëshiruar në sistemet me një numër të madh mjedisesh burgu ose makina virtuale të bashkuara në një rrjet. Në këtë fazë, kodit i janë shtuar testet për të parandaluar shfaqjen e regresioneve gjatë modernizimit të punës me bravë. Është duke u shqyrtuar mundësia e përdorimit të ConcurrencyKit për të paralelizuar mbajtësit e transferimit të të dhënave (bridge_input(), bridge_output(), bridge_forward(), ...).
    • U shtua një thirrje e re e sistemit sigfastblock për të lejuar një thread të specifikojë një bllok memorie për një mbajtës të shpejtë sinjalesh për të përmirësuar performancën e mbajtësve të përjashtimeve.
    • Kerneli shton mbështetje për udhëzimet atomike LSE (Large System Extension) të mbështetur nga sistemet ARMv8.1. Këto udhëzime kërkohen për të përmirësuar performancën kur ekzekutohet në bordet Cavium ThunderX2 dhe AWS Graviton 2. Ndryshimet e shtuara zbulojnë mbështetjen e LSE dhe mundësojnë dinamikisht zbatimin atomik bazuar në to. Gjatë testimit, përdorimi i LSE bëri të mundur uljen e kohës së shpenzuar të procesorit gjatë montimit të kernelit me 15%.
    • Është kryer optimizimi i performancës dhe funksionaliteti i paketës së veglave është zgjeruar për skedarët e ekzekutueshëm në formatin ELF.
      Mbështetje e shtuar për memorien e informacionit të korrigjimit të DWARF, problemet e zgjidhura në shërbimet elfcopy/objcopy, shtimi i përpunimit DW_AT_ranges,
      readelf zbaton aftësinë për të deshifruar flamujt PROTMAX_DISABLE, STKGAP_DISABLE dhe WXNEEDED, si dhe Xen dhe GNU Build-ID.

  • siguri
    • Për të përmirësuar performancën e FreeBSD në mjediset cloud Azure, po punohet për të ofruar mbështetje për mekanizmin HyperV Socket, i cili lejon përdorimin e një ndërfaqeje socket për ndërveprim midis sistemit të ftuar dhe mjedisit pritës pa krijuar një rrjet.
    • Po punohet për të siguruar ndërtime të përsëritshme të FreeBSD, duke bërë të mundur sigurimin që skedarët e ekzekutueshëm të komponentëve të sistemit të përpilohen saktësisht nga kodet burimore të deklaruara dhe të mos përmbajnë ndryshime të jashtme.
    • Aftësia për të kontrolluar përfshirjen e mekanizmave shtesë të mbrojtjes (ASLR, PROT_MAX, stack gap, W+X mapping) në nivelin e proceseve individuale është shtuar në mjetin elfctl
  • Magazinimi dhe sistemet e skedarëve
    • Po punohet për të zbatuar aftësinë që NFS të operojë mbi një kanal komunikimi të koduar bazuar në TLS 1.3, në vend të përdorimit të Kerberos (modaliteti sec=krb5p), i cili është i kufizuar në enkriptimin vetëm të mesazheve RPC dhe zbatohet vetëm në softuer. Implementimi i ri përdor pirgun TLS të ofruar nga kernel për të mundësuar përshpejtimin e harduerit. Kodi NFS mbi TLS është pothuajse gati për testim, por ende kërkon punë për të mbështetur certifikatat e nënshkruara të klientit dhe për të përshtatur pirgun TLS të kernelit për të dërguar të dhëna NFS (arna për marrjen janë tashmë gati).
  • Mbështetja e harduerit
    • Po punohet për të shtuar mbështetjen për CPU kineze x86 Hygon bazuar në teknologjitë AMD;
    • Si pjesë e CheriBSD, një fork i FreeBSD për arkitekturën e procesorit kërkimor CHERI (Capability Hardware Enhanced RISC Instructions), mbështetja për procesorin ARM Morello vazhdon të zbatohet, i cili do të mbështesë sistemin e kontrollit të aksesit të memories CHERI bazuar në modelin e sigurisë së projektit Capsicum. Çip Morello janë duke planifikuar lëshimi në 2021. Puna aktualisht është e fokusuar në shtimin e mbështetjes për platformën Arm Neoverse N1 që fuqizon Morello-n. Është paraqitur një port fillestar i CheriBSD për arkitekturën RISC-V. Zhvillimi CheriBSD vazhdon për prototipin e referencës CHERI bazuar në arkitekturën MIPS64.
    • Transportimi FreeBSD vazhdon për SoC 64-bit NXP LS1046A bazuar në procesorin ARMv8 Cortex-A72 me një motor të integruar të përshpejtimit të përpunimit të paketave në rrjet, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 dhe USB 3.0. Aktualisht, drejtuesit QorIQ dhe LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI janë duke u përgatitur për transferim në përbërjen kryesore të FreeBSD.
    • Drejtuesi ena është përditësuar në versionin 2.1.1 me mbështetje për gjeneratën e dytë të përshtatësve të rrjetit ENAv2 (Elastic Network Adapter) të përdorur në infrastrukturën Elastic Compute Cloud (EC2) për të organizuar komunikimin ndërmjet nyjeve EC2 me shpejtësi deri në 25 Gb/ s. Një përditësim për ENA 2.2.0 është duke u përgatitur.
    • Përmirësimet në portën FreeBSD për platformën powerpc64 vazhdojnë. Fokusi është në ofrimin e performancës cilësore në sistemet me procesorë IBM POWER8 dhe POWER9. Gjatë periudhës së raportimit, FreeBSD-CURRENT u transferua për të përdorur përpiluesin LLVM/Clang 10.0 dhe lidhësin lld në vend të GCC. Si parazgjedhje, sistemet powerpc64 përdorin ELFv2 ABI dhe mbështetja për ELFv1 ABI është ndërprerë. FreeBSD-STABLE ka ende gcc 4.2.1. Problemet me drejtuesit virtio, aacraid dhe ixl janë zgjidhur. Në sistemet powerpc64 është e mundur të ekzekutohet QEMU pa mbështetjen e Huge Pages.
    • Puna vazhdon për zbatimin e mbështetjes për arkitekturën RISC-V. Në formën e tij aktuale, FreeBSD tashmë nis me sukses në bordin SiFive Hifive Unleashed, për të cilin drejtuesit janë përgatitur
      UART, SPI dhe PRCI, mbështet firmware OpenSBI dhe SBI 0.2. Gjatë periudhës raportuese, puna u fokusua në migrimin nga GCC në clang dhe lld.

  • Aplikacionet dhe sistemi i porteve
    • Koleksioni i porteve FreeBSD ka kaluar pragun e 39 mijë porteve, numri i PR-ve të pambyllura tejkalon paksa 2400, nga të cilat 640 PR nuk janë renditur ende. Gjatë periudhës raportuese, janë bërë 8146 ndryshime nga 173 zhvillues. Katër pjesëmarrës të rinj morën të drejta të kryerësit (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). U shtua flamuri USES=qca dhe u hoq flamuri USES=zope (për shkak të papajtueshmërisë me Python 3). Po punohet për heqjen e Python 2.7 nga pema e porteve - të gjitha portet e bazuara në Python 2 duhet të transferohen në Python 3 ose do të hiqen. Menaxheri i paketave pkg është përditësuar për të lëshuar 1.13.2.
    • Komponentët e stivës grafike të përditësuar dhe portet e lidhura me xorg.
      Serveri X.org është përditësuar në versionin 1.20.8 (i dërguar më parë në degën 1.18), i cili lejoi FreeBSD të përdorte si parazgjedhje prapavijën udev/evdev për trajtimin e pajisjeve hyrëse. Paketa Mesa është ndërruar për të përdorur shtesën DRI3 në vend të DRI2 si parazgjedhje. Puna është duke u zhvilluar për të mbajtur drejtuesit e grafikës, grupin e pajisjes hyrëse dhe komponentët drm-kmod (një port që mundëson funksionimin e moduleve amdgpu, i915 dhe radeon DRM, duke përdorur kornizën linuxkpi për pajtueshmërinë me Menaxherin e Rendering Direct të kernelit Linux) të përditësuar.

    • Desktopi i KDE Plasma, KDE Frameworks, Aplikacionet e KDE dhe Qt mbahen të përditësuara dhe përditësohen me versionet më të fundit. Një aplikacion i ri kstars (atlas i yjeve) është shtuar në porte.
    • Është bërë punë për të eliminuar ndryshimet regresive në menaxherin e dritareve xfwm4 që u shfaqën pas përditësimit të Xfce në versionin 4.14 (për shembull, artefaktet u shfaqën gjatë dekorimit të dritareve).
    • Porti Wine është përditësuar për të lëshuar Wine 5.0 (më parë ofrohej 4.0.3).
    • Duke filluar me versionin 1.14, përpiluesi i gjuhës Go shtoi mbështetje zyrtare për arkitekturën ARM64 për FreeBSD 12.0.
    • OpenSSH në sistemin bazë është përditësuar për të lëshuar 7.9p1.
    • Biblioteka sysctlmibinfo2 është implementuar dhe vendosur në porte (zhvillimi/libsysctlmibinfo2), duke ofruar një API për aksesin në sysctl MIB dhe përkthimin e emrave sysctl në identifikues objektesh (OID).
    • Është krijuar një përditësim i shpërndarjes NomadBSD 1.3.1, i cili është një botim i FreeBSD i përshtatur për t'u përdorur si një desktop portativ i bootueshëm nga një disk USB. Mjedisi grafik bazohet në një menaxher dritare Kuti e hapur. Përdoret për montimin e disqeve DSBMD (mbështetet montimi i CD9660, FAT, HFS+, NTFS, Ext2/3/4), për të konfiguruar një rrjet pa tel - wifimgr, dhe për të kontrolluar volumin - DSBMixer.
    • Filluar punë mbi shkrimin e dokumentacionit të plotë për menaxherin e mjedisit të burgut tenxhere. Pot 0.11.0 po përgatitet për lëshim, i cili do të përfshijë mjete për menaxhimin e grupit të rrjetit.

Burimi: opennet.ru

Shto një koment