FreeBSD attÄ«stÄ«bas pÄrskats par 2020. gada pirmo ceturksni
publicÄts ziÅojums par FreeBSD projekta attÄ«stÄ«bu no 2020. gada janvÄra lÄ«dz martam. Starp izmaiÅÄm mÄs varam atzÄ«mÄt:
VispÄrÄ«gi un sistÄmas jautÄjumi
No FreeBSD-CURRENT avota koka tika noÅemta GCC kompilatoru kopa, kÄ arÄ« neizmantotÄs gperf, gcov un gtc (devicetree kompilators) utilÄ«tas. Visas platformas, kas neatbalsta Clang, ir pÄrslÄgtas uz ÄrÄjo veidoÅ”anas rÄ«ku izmantoÅ”anu, kas instalÄti no portiem. BÄzes sistÄma nosÅ«tÄ«ja novecojuÅ”u GCC 4.2.1 versiju, un jaunÄku versiju integrÄcija nebija iespÄjama, jo 4.2.2 pÄreja uz GPLv3 licenci, kas tika uzskatÄ«ta par nepiemÄrotu FreeBSD bÄzes komponentiem. PaÅ”reizÄjos GCC laidienus, tostarp GCC 9, joprojÄm var instalÄt no pakotnÄm un portiem.
Linux vides emulÄcijas infrastruktÅ«ra (Linuxulator) ir pievienojusi atbalstu sendfile sistÄmas izsaukumam, TCP_CORK režīmam (nepiecieÅ”ams nginx) un karodziÅam MAP_32BIT (atrisina problÄmu ar pakotÅu palaiÅ”anu ar Mono no Ubuntu Bionic). ProblÄmas ar DNS izŔķirtspÄju, izmantojot glibc, kas jaunÄkas par 2.30 (piemÄram, no CentOS 8), ir atrisinÄtas.
NepÄrtrauktÄs integrÄcijas infrastruktÅ«ra nodroÅ”ina iespÄju palaist LTP (Linux Testing Project) darbus, kuros darbojas Linuxulator, lai pÄrbaudÄ«tu koda uzlabojumus Linux atbalstam. Aptuveni 400 testu neizdodas un ir jÄlabo (dažas kļūdas izraisa kļūdaini pozitÄ«vi rezultÄti, dažÄm ir nepiecieÅ”ami nenozÄ«mÄ«gi labojumi, bet ir arÄ« citi, kuru laboÅ”anai ir jÄpievieno atbalsts jauniem sistÄmas izsaukumiem). Ir veikts darbs, lai notÄ«rÄ«tu Linuxulator kodu un vienkÄrÅ”otu atkļūdoÅ”anu. Ir sagatavoti ielÄpi ar paplaÅ”inÄto atribÅ«tu un fexecve sistÄmas izsaukuma atbalstu, bet vÄl nav pÄrskatÄ«ti.
TurpinÄs avota kodu migrÄcijas veikÅ”anai no centralizÄtÄs avota kontroles sistÄmas Subversion uz decentralizÄto sistÄmu Git izveidotÄs darba grupas sÄdes. Tiek gatavots ziÅojums ar priekÅ”likumiem migrÄcijai.
FreeBSD kodola izplÅ«des testÄÅ”anas projekts, izmantojot sistÄmu syzkaller, turpina attÄ«stÄ«ties. PÄrskata periodÄ tika novÄrstas problÄmas tÄ«kla stekÄ un kodÄ darbam ar failu deskriptoru tabulÄm, kas identificÄtas, izmantojot syzkaller. PÄc kļūdu diagnostikas SCTP stekam ir pievienotas izmaiÅas, lai atvieglotu atkļūdoÅ”anu. Stress2 kopai ir pievienoti noteikumi, lai identificÄtu iespÄjamÄs regresijas. Pievienots atbalsts jaunu sistÄmas izsaukumu fuzz testÄÅ”anai, tostarp copy_file_range(), __realpathat() un Capsicum apakÅ”sistÄmas izsaukumiem. TurpinÄs darbs, lai Linux emulÄcijas slÄni pÄrklÄtu ar izplÅ«des testÄÅ”anu. MÄs analizÄjÄm un novÄrsÄm jaunÄkajos Coverity Scan pÄrskatos norÄdÄ«tÄs kļūdas.
NepÄrtrauktÄs integrÄcijas sistÄma ir pÄrgÄjusi uz visu galvas zaru testu izpildi, tikai izmantojot clang/lld. PÄrbaudot RISC-V, tiek nodroÅ”inÄta pilnÄ«ga diska attÄla veidoÅ”ana, lai veiktu testus QEMU, izmantojot OpenSBI. Pievienoti jauni uzdevumi attÄlu un powerpc64 virtuÄlo maŔīnu testÄÅ”anai (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
Notiek darbs pie Kyua testa komplekta pÄrsÅ«tÄ«Å”anas no portiem (devel/kyua) uz bÄzes sistÄmu, lai atrisinÄtu problÄmas (pakotnes tiek instalÄtas ļoti lÄni), kas rodas, izmantojot Kyua jaunÄm arhitektÅ«rÄm, kuru izstrÄde tiek veikta, izmantojot emulatoru vai FPGA. IntegrÄcija bÄzes sistÄmÄ ievÄrojami vienkÄrÅ”os iegulto platformu testÄÅ”anu un saskarni ar nepÄrtrauktas integrÄcijas sistÄmÄm.
Ir uzsÄkts projekts, lai optimizÄtu tÄ«kla tilta draivera veiktspÄju ja_tilts, kas iekÅ”Äjo datu bloÄ·ÄÅ”anai izmanto vienu mutex, kas neļauj sasniegt vÄlamo veiktspÄju sistÄmÄs ar lielu skaitu cietuma vidi vai virtuÄlo maŔīnu, kas apvienotas vienÄ tÄ«klÄ. Å ajÄ posmÄ kodam ir pievienoti testi, lai novÄrstu regresiju raÅ”anos darba ar slÄdzenÄm modernizÄcijas laikÄ. Tiek apsvÄrta iespÄja izmantot ConcurrencyKit datu pÄrsÅ«tÄ«Å”anas apdarinÄtÄju (bridge_input(), bridge_output(), bridge_forward(), ...) paralÄlizÄÅ”anai.
Pievienots jauns sigfastblock sistÄmas izsaukums, lai ļautu pavedienam norÄdÄ«t atmiÅas bloku Ätram signÄlu apstrÄdÄtÄjam, lai uzlabotu izÅÄmumu apstrÄdÄtÄju veiktspÄju.
Kodols pievieno atbalstu LSE (Large System Extension) atomu instrukcijÄm, ko atbalsta ARMv8.1 sistÄmas. Å Ä«s instrukcijas ir nepiecieÅ”amas, lai uzlabotu veiktspÄju, darbojoties uz Cavium ThunderX2 un AWS Graviton 2 paneļiem. PievienotÄs izmaiÅas nosaka LSE atbalstu un dinamiski iespÄjo uz tÄm balstÄ«to atomu ievieÅ”anu. TestÄÅ”anas laikÄ LSE izmantoÅ”ana ļÄva par 15% samazinÄt procesora laiku, kas pavadÄ«ts kodola montÄžÄ.
Ir veikta veiktspÄjas optimizÄcija un paplaÅ”inÄta rÄ«kkopas funkcionalitÄte izpildÄmajiem failiem ELF formÄtÄ.
Pievienots atbalsts DWARF atkļūdoÅ”anas informÄcijas saglabÄÅ”anai keÅ”atmiÅÄ, atrisinÄtas problÄmas elfcopy/objcopy utilÄ«tprogrammÄs, pievienota DW_AT_ranges apstrÄde,
readelf ievieÅ” iespÄju atÅ”ifrÄt karogus PROTMAX_DISABLE, STKGAP_DISABLE un WXNEEDED, kÄ arÄ« Xen un GNU Build-ID.
DroŔība
Lai uzlabotu FreeBSD veiktspÄju Azure mÄkoÅa vidÄs, notiek darbs pie HyperV Socket mehÄnisma atbalsta nodroÅ”inÄÅ”anas, kas ļauj izmantot ligzdas interfeisu mijiedarbÄ«bai starp viesu sistÄmu un saimniekdatora vidi, neveidojot tÄ«klu.
Notiek darbs pie atkÄrtojamu FreeBSD bÅ«vÄjumu nodroÅ”inÄÅ”anas, kas ļauj nodroÅ”inÄt, ka sistÄmas komponentu izpildÄmie faili tiek kompilÄti tieÅ”i no deklarÄtajiem pirmkodiem un nesatur ÄrÄjas izmaiÅas.
Elfctl utilÄ«tai ir pievienota iespÄja kontrolÄt papildu aizsardzÄ«bas mehÄnismu (ASLR, PROT_MAX, stack gap, W+X kartÄÅ”ana) iekļauÅ”anu atseviŔķu procesu lÄ«menÄ«.
UzglabÄÅ”anas un failu sistÄmas
Notiek darbs, lai ieviestu iespÄju NFS darboties pa Å”ifrÄtu sakaru kanÄlu, kura pamatÄ ir TLS 1.3, nevis izmantot Kerberos (sec=krb5p režīms), kas aprobežojas ar tikai RPC ziÅojumu Å”ifrÄÅ”anu un ir ieviests tikai programmatÅ«rÄ. JaunÄ ievieÅ”ana izmanto kodola nodroÅ”inÄto TLS steku, lai iespÄjotu aparatÅ«ras paÄtrinÄjumu. NFS over TLS kods ir gandrÄ«z gatavs testÄÅ”anai, taÄu joprojÄm ir jÄstrÄdÄ, lai atbalstÄ«tu parakstÄ«tos klientu sertifikÄtus un pielÄgotu kodola TLS steku NFS datu sÅ«tÄ«Å”anai (saÅemÅ”anas ielÄpi jau ir gatavi).
Aparatūras atbalsts
Notiek darbs, lai pievienotu atbalstu Ķīnas x86 CPU Hygon, kura pamatÄ ir AMD tehnoloÄ£ijas;
KÄ daļa no CheriBSD, FreeBSD dakÅ”a pÄtniecÄ«bas procesoru arhitektÅ«rai ÄERI (Capability Hardware Enhanced RISC Instructions), turpinÄs ARM Morello procesora atbalsta ievieÅ”ana, kas atbalstÄ«s CHERI atmiÅas piekļuves kontroles sistÄmu, kuras pamatÄ ir Capsicum projekta droŔības modelis. Morello Äips plÄno izlaidums 2021. gadÄ. PaÅ”laik darbs ir vÄrsts uz atbalsta pievienoÅ”anu Arm Neoverse N1 platformai, kas nodroÅ”ina Morello darbÄ«bu. Ir prezentÄts sÄkotnÄjais CheriBSD ports RISC-V arhitektÅ«rai. CheriBSD izstrÄde turpinÄs CHERI atsauces prototipam, kura pamatÄ ir MIPS64 arhitektÅ«ra.
FreeBSD pÄrneÅ”ana turpinÄs 64 bitu SoC NXP LS1046A, kuras pamatÄ ir ARMv8 Cortex-A72 procesors ar integrÄtu tÄ«kla pakeÅ”u apstrÄdes paÄtrinÄÅ”anas dzinÄju, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 un USB 3.0. Å obrÄ«d tiek gatavoti draiveri QorIQ un LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI pÄrejai uz galveno FreeBSD sastÄvu.
ena draiveris ir atjauninÄts uz versiju 2.1.1 ar atbalstu otrÄs paaudzes tÄ«kla adapteriem ENAv2 (ElastÄ«gais tÄ«kla adapteris), ko izmanto Elastic Compute Cloud (EC2) infrastruktÅ«rÄ, lai organizÄtu komunikÄciju starp EC2 mezgliem ar Ätrumu lÄ«dz 25 Gb/ s. Tiek gatavots ENA 2.2.0 atjauninÄjums.
Powerpc64 platformas FreeBSD porta uzlabojumi turpinÄs. GalvenÄ uzmanÄ«ba tiek pievÄrsta kvalitatÄ«vas veiktspÄjas nodroÅ”inÄÅ”anai sistÄmÄs ar IBM POWER8 un POWER9 procesoriem. PÄrskata periodÄ FreeBSD-CURRENT tika pÄrcelts uz LLVM/Clang 10.0 kompilatoru un lld saiti, nevis GCC. PÄc noklusÄjuma powerpc64 sistÄmas izmanto ELFv2 ABI, un ELFv1 ABI atbalsts ir pÄrtraukts. FreeBSD-STABLE joprojÄm ir gcc 4.2.1. ProblÄmas ar virtio, aacraid un ixl draiveriem ir atrisinÄtas. Powerpc64 sistÄmÄs ir iespÄjams palaist QEMU bez milzÄ«go lapu atbalsta.
TurpinÄs darbs, lai ieviestu atbalstu RISC-V arhitektÅ«rai. PaÅ”reizÄjÄ formÄ FreeBSD jau veiksmÄ«gi sÄk darboties SiFive Hifive Unleashed platÄ, kurai ir sagatavoti draiveri
UART, SPI un PRCI atbalsta OpenSBI un SBI 0.2 programmaparatÅ«ru. PÄrskata periodÄ darbs bija vÄrsts uz migrÄciju no GCC uz clang un lld.
Lietojumprogrammas un portu sistÄma
FreeBSD portu kolekcija ir pÄrkÄpusi 39 tÅ«kstoÅ”u portu slieksni, neslÄgto PR skaits nedaudz pÄrsniedz 2400, no kuriem vÄl nav sakÄrtoti 640 PR. PÄrskata periodÄ veiktas 8146 izmaiÅas no 173 izstrÄdÄtÄjiem. Äetri jauni dalÄ«bnieki saÅÄma apÅemÅ”anÄs tiesÄ«bas (Loiks Bartoleti, Mikaels Urankars, Kails Evanss, Lorenco Salvadore). Pievienots USES=qca karodziÅÅ” un noÅemts USES=zope karogs (nesaderÄ«bas ar Python 3 dÄļ). Notiek darbs pie Python 2.7 noÅemÅ”anas no portu koka ā visi uz Python 2 balstÄ«tie porti ir jÄpÄrnes uz Python 3 vai arÄ« tie tiks noÅemti. Pkg pakotÅu pÄrvaldnieks ir atjauninÄts, lai atbrÄ«votu 1.13.2.
AtjauninÄti grafikas steka komponenti un ar xorg saistÄ«tie porti.
X.org serveris ir atjauninÄts uz versiju 1.20.8 (iepriekÅ” piegÄdÄts 1.18 filiÄlei), kas ļÄva FreeBSD pÄc noklusÄjuma izmantot udev/evdev aizmugursistÄmu ievades ierÄ«Äu apstrÄdei. Mesa pakotne ir pÄrslÄgta, lai pÄc noklusÄjuma izmantotu paplaÅ”inÄjumu DRI3, nevis DRI2. Notiek darbs, lai saglabÄtu grafikas draiverus, ievades ierÄ«Äu steku un drm-kmod komponentus (portu, kas nodroÅ”ina amdgpu, i915 un radeon DRM moduļu darbÄ«bu, izmantojot linuxkpi ietvaru saderÄ«bai ar Linux kodola tieÅ”Äs renderÄÅ”anas pÄrvaldnieku) aktuÄls.
KDE Plasma darbvirsma, KDE Frameworks, KDE lietojumprogrammas un Qt tiek atjauninÄtas un atjauninÄtas lÄ«dz jaunÄkajÄm versijÄm. Portiem ir pievienota jauna aplikÄcija kstars (zvaigžÅu atlants).
Ir veikts darbs, lai novÄrstu regresÄ«vÄs izmaiÅas xfwm4 logu pÄrvaldniekÄ, kas parÄdÄ«jÄs pÄc Xfce atjauninÄÅ”anas uz versiju 4.14 (piemÄram, artefakti parÄdÄ«jÄs, dekorÄjot logus).
Wine ports ir atjauninÄts, lai atbrÄ«votu Wine 5.0 (iepriekÅ” tika piedÄvÄta versija 4.0.3).
SÄkot ar versiju 1.14, Go valodas kompilators pievienoja oficiÄlu atbalstu ARM64 arhitektÅ«rai FreeBSD 12.0.
OpenSSH bÄzes sistÄmÄ ir atjauninÄts, lai atbrÄ«votu versiju 7.9p1.
Sysctlmibinfo2 bibliotÄka ir ieviesta un ievietota portos (devel/libsysctlmibinfo2), nodroÅ”inot API piekļuvei sysctl MIB un sysctl nosaukumu tulkoÅ”anai objektu identifikatoros (OID).
Ir izveidots izplatÄ«Å”anas atjauninÄjums NomadBSD 1.3.1, kas ir FreeBSD izdevums, kas pielÄgots lietoÅ”anai kÄ pÄrnÄsÄjama darbvirsma, kuru var sÄknÄt no USB diska. GrafiskÄs vides pamatÄ ir logu pÄrvaldnieks Openbox. Izmanto piedziÅu montÄžai DSBMD (tiek atbalstÄ«ts montÄžas CD9660, FAT, HFS+, NTFS, Ext2/3/4), lai konfigurÄtu bezvadu tÄ«klu - wifimgrun lai kontrolÄtu skaļumu - DSBMixer.
SÄkÄs strÄdÄt par pilnÄ«gas dokumentÄcijas rakstÄ«Å”anu cietuma vides pÄrvaldniekam var. IzlaiÅ”anai tiek gatavots Pot 0.11.0, kurÄ bÅ«s iekļauti rÄ«ki tÄ«kla steka pÄrvaldÄ«bai.