raporti mbi zhvillimin e projektit FreeBSD nga janari deri në mars 2020. Ndër ndryshimet mund të veçohet:
- Çështje të përgjithshme dhe sistemore
- Nga kodi burimor FreeBSD-CURRENT është marrë jashtë grupi i kompilerëve GCC, si dhe utilitetet e panevojshme gperf, gcov dhe gtc (kompileri devicetree). Të gjitha platformat që nuk mbështesin Clang, janë kaluar në përdorimin e mjeteve të jashtme të ndërtimit, të instaluara nga porto. Në sistemin bazë është ofruar një version i vjetëruar GCC 4.2.1, dhe integrimi i versioneve më të reja ka qenë i pamundur për shkak të kalimit të 4.2.2 në licencën GPLv3, e cila është pranuar si e papranueshme për komponentët bazë të FreeBSD. Versionet aktuale të GCC, përfshirë GCC 9, mund të instalohen si më parë nga paketat dhe portet.
- Në infrastrukturën e emulimit të ambientit Linux (Linuxulator) është shtuar mbështetje për thirrjen e sistemit sendfile, modalitetin TCP_CORK (kërkohet për nginx), flamurin MAP_32BIT (zgjidh problemin me ekzekutimin e pakove me Mono nga Ubuntu Bionic). Janë zgjidhur problemet me zgjidhjen e DNS-së duke përdorur glibc më të re se 2.30 (për shembull nga CentOS 8).
Në infrastrukturën e integrimit të vazhdueshëm është siguruar ekzekutimi i detyrave për të ekzekutuar LTP (Projekti i Testimit të Linux) nën menaxhimin e Linuxulator për të testuar përmirësimet që bëhen në kod për mbështetje të Linux. Rreth 400 teste përfundojnë me gabime dhe kërkojnë korrigjim (disa gabime shkaktohen nga njoftime të rreme, disa kërkojnë korrigjime triviale, por ka edhe disa për të cilat duhet të shtohet mbështetje për thirrje të reja të sistemit). Është punuar për pastrimin e kodit të Linuxulator dhe thjeshtimin e debugimit. Janë përgatitur, por ende nuk janë rishikuar, patch-e me mbështetje për atributet e zgjeruara dhe thirrjen e sistemit fexecve. - Vazhdon puna e grupit të punës, i krijuar për të realizuar migrimin e kodit burimor nga sistemi i centralizuar i menaxhimit të kodit Subversion në sistemin e decentralizuar Git. Raporti me propozime për migrimin është në proces përgatitjeje.
- Në (linkuesi në ekzekutim) është përmirësuar modaliteti i ekzekutimit të drejtpërdrejtë ("/libexec/ld-elf.so.1 {rruga} {argumentet}").
- Projektin e fuzzing-testimit të kernelit FreeBSD po zhvillohet duke përdorur sistemin syzkaller. Gjatë periudhës raportuese, janë eliminuar problemet në stakun rrjetë dhe në kodin për punën me tabelat e descriptorëve të skedarëve, të identifikuara me ndihmën e syzkaller. Pas diagnostikimit të gabimeve në stakun SCTP janë shtuar ndryshime që e thjeshtojnë depurimin. Rregulla janë shtuar në grupin stress2 për të identifikuar regresionet e mundshme. Është shtuar mbështetje për fuzzing-testimin e thirrjeve të reja sistemore, duke përfshirë copy_file_range(), __realpathat() dhe thirrjet e nën-sistemit Capsicum. Puna për të përfshirë fuzzing-testimin e shtresës së emulimit Linux vazhdon. Është bërë analiza dhe eliminimi i gabimeve të raportuara në raportet e fundit të Coverity Scan.
- Në sistemin e integrimit të vazhdueshëm është bërë kalimi në ekzekutimin e të gjitha testeve të degës head vetëm me përdorimin e clang/lld. Gjatë testimit për RISC-V, është siguruar formimi i një imazhi të plotë të diskut për të nisur testet në QEMU duke përdorur OpenSBI. Janë shtuar detyra të reja për të testuar imazhet dhe makinat virtuale powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
- Puna për transferimin e grupit të testimit Kyua nga portet (devel/kyua) në sistemin bazë po vazhdon për të zgjidhur problemet (paketat instalohen shumë ngadalë) që dalin nga përdorimi i Kyua në arkitektura të reja, për zhvillimin e të cilave po punohet duke përdorur emulatorin ose FPGA. Integrimi në sistemin bazë do të thjeshtojë ndjeshëm testimin e platformave të integruara dhe lidhjen me sistemet e integrimit të vazhdueshëm.
- Ka filluar projekti për optimizimin e performancës së drejtorit të urave rrjetë. , i cili përdor një mutex për të bllokuar të dhënat e brendshme, që nuk lejon arritjen e performancës së dëshiruar në sistemet me një numër të madh jail-ësh ose makinash virtuale, të cilat janë të gjitha në një rrjet. Në këtë fazë, janë shtuar teste në kod për të parandaluar shfaqjen e regresioneve gjatë modernizimit të punës me bllokimet. Po shqyrtohet mundësia e përdorimit të ConcurrencyKit për të paralelizuar manipuluesit e transferimit të të dhënave (bridge_input(), bridge_output(), bridge_forward(), …).
- Është shtuar një thirrje e re sistemore sigfastblock, që lejon një rrjedhë të përcaktojë një bllok të kujtesës për një menaxher të shpejtë sinjalesh me qëllim përmirësimin e performancës së menaxherëve të përjashtimeve.
- Në bërthamë është shtuar mbështetje për instrukcionet atomike LSE (Large System Extension), të mbështetura nga sistemet ARMv8.1. Këto instrukcione janë të nevojshme për të rritur performancën kur punoni në plakat Cavium ThunderX2 dhe AWS Graviton 2. Ndryshimet e shtuar përcaktojnë praninë e mbështetjes LSE dhe përfshijnë dinamikisht zbatimin e atomike mbi bazën e tyre. Gjatë testimit, përdorimi i LSE ka lejuar një ulje prej 15% të kohës së procesorit të shpenzuar gjatë ndërtimit të bërthamës.
- Është optimizuar performanca dhe është zgjeruar funksionaliteti i veglave për skedarët ekzekutivë në formatin ELF.
Është shtuar mbështetje për caching të informacionit për debug DWARF, janë zgjidhur problemet në utilitat elfcopy/objcopy, është shtuar përpunimi DW_AT_ranges,
në readelf është realizuar mundësia e dekodimit të flagjeve PROTMAX_DISABLE, STKGAP_DISABLE dhe WXNEEDED, si dhe Xen dhe GNU Build-ID.
- Siguria
- Për të përmirësuar funksionimin e FreeBSD në mjediset cloud Azure, po punojmë për të siguruar mbështetje për mekanizmin HyperV Socket, i cili lejon përdorimin e ndërfaqeve të soketëve për bashkëpunim midis sistemit mik dhe mjedisit mik në mungesë të konfigurimit të rrjetit.
- Po punohet për sigurimin e ndërtimeve të ripërsëritshme të FreeBSD, të cilat lejojnë të konfirmohet që skedarët ekzekutivë të komponenteve të sistemit janë ndërtuar saktësisht nga kodet burimore të deklaruara dhe nuk përmbajnë ndryshime të jashtme.
- Në utilitarin elfctl është shtuar mundësia e menaxhimit të aktivizimit të mekanizmave të tjera të mbrojtjes (ASLR, PROT_MAX, stack gap, W+X mapping) në nivelin e proceseve të veçanta
- Sistemet e ruajtjes dhe skedarët e sistemeve
- Po punohet për realizimin e mundësisë së funksionimit të NFS mbi një kanalin e enkriptuar të komunikimit mbi bazën e TLS 1.3, në vend të përdorimit të Kerberos (modi sec=krb5p), i cili kufizohet në enkriptimin e vetëm RPC-mesazheve dhe realizohet vetëm në mënyrë programore. Implementimi i ri përdor stakun TLS të ofruar nga bërthama, duke lejuar përdorimin e mjeteve të përshpejtimit të harduerit. Kodi NFS mbi TLS është gati pothuajse për testim, por kërkon ende punë për të mbështetur certifikatat e klientëve të nënshkruara dhe për adaptimin e TLS-stakut të bërthamës për dërgimin e të dhënave NFS (patch-e për marrjen janë gati).
- Mbështetje për pajisjet
- Po punohet për shtimin e mbështetjes për procesorët x86 Hygon të Kinës bazuar në teknologjitë AMD;
- Në kuadër të CheriBSD, një dege nga FreeBSD për arkitekturën kërkimore të procesorëve (Kapaciteti Hardware Enhanced RISC Instructions), vazhdon zbatimi i mbështetjes për procesorin ARM Morello, i cili do të mbështesë sistemin e menaxhimit të hyrjes në kujtesë CHERI, i bazuar në modelin e mbrojtjes së projektit Capsicum. Çipi Morello pritet të lëshohet në vitin 2021. Aktualisht, puna përqendrohet në shtimin e mbështetjes për platformën Arm Neoverse N1, që është themeli i Morello. Është prezantuar një port fillestar i CheriBSD për arkitekturën RISC-V. Vazhdon zhvillimi i CheriBSD për prototipin referencë CHERI mbi arkitekturën MIPS64.
- Vazhdon portimi i FreeBSD për SoC 64-bit NXP LS1046A mbi procesorin ARMv8 Cortex-A72 me një motor të integruar për përshpejtimin e përpunimit të pacoveve të rrjetit, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 dhe USB 3.0. Aktualisht, po përgatiten drejtuesit për QorIQ dhe LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI për transmetim në versionin kryesor të FreeBSD.
- Derisa versioni 2.1.1 është përditësuar drejtuesi ena me mbështetje për gjeneratën e dytë të adaptatorëve të rrjetit ENAv2 (Elastic Network Adapter), të përdorur në infrastrukturën Elastic Compute Cloud (EC2) për të organizuar komunikimin midis nyjave EC2 me shpejtësi deri në 25 Gb/s. Përgatitet një përditësim në ENA 2.2.0.
- Vazhdon përmirësimi i portit FreeBSD për platformën powerpc64. Vëmendja kryesore është për të siguruar funksionim të mirë në sistemet me procesorë IBM POWER8 dhe POWER9. Gjatë periudhës raportuese, është realizuar kalimi i FreeBSD-CURRENT për të përdorur kompiluesin LLVM/Clang 10.0 dhe lidhësin lld në vend të GCC. Për sistemet powerpc64, ABI-ja ELFv2 është aktivizuar si e paracaktuar, dhe mbështetje për ELFv1 ABI është ndërprerë. Në FreeBSD-STABLE, ende mbetet gcc 4.2.1. Janë zgjidhur problemet me drejtuesit virtio, aacraid dhe ixl. Në sistemet powerpc64 është mundësuar ekzekutimi i QEMU pa mbështetje për Huge Pages.
- Vazhdon puna për zbatimin e mbështetjes për arkitekturën RISC-V. Në formën aktuale, FreeBSD tashmë ngarkohet me sukses në pllakën SiFive Hifive Unleashed, për të cilën janë përgatitur drejtuesit
UART, SPI dhe PRCI, mbështet firmuerin OpenSBI dhe SBI 0.2. Gjatë periudhës raportuese, puna ishte përqendruar në migrimin nga GCC në clang dhe lld.
- Aplikacione dhe sistemi i porteve
- Koleksioni i porteve FreeBSD ka kaluar mbi 39 mijë porte, numri i PR-ve të hapura tejkalon paksa 2400, nga të cilat 640 PR ende nuk janë shqyrtuar. Gjatë periudhës raportuese janë bërë 8146 ndryshime nga 173 zhvillues. Katër pjesëmarrës të rinj (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) kanë marrë të drejtat e komituesit. Është shtuar flagu USES=qca dhe është hequr flagu USES=zope (për shkak të moskompatibilitetit me Python 3). Po punohet për heqjen e Python 2.7 nga struktura e porteve — të gjitha portet e lidhura me Python 2 duhet të portohen në Python 3 ose do të hiqen. Menaxheri i paketave pkg është përditësuar në versionin 1.13.2.
- Janë përditësuar komponentët e grumbullit grafik dhe portet që lidhen me xorg.
serveri X.org është përditësuar në versionin 1.20.8 (më parë ishte versioni 1.18), çka e lejon FreeBSD të kalojë si standard në përdorimin e backend-it udev/evdev për përpunimin e pajisjeve të hyrjes. Paketa Mesa është kaluar si standard në përdorimin e shtrirjes DRI3 në vend të DRI2. Po punohet për të mbajtur të azhurnuara drejtoritë e grafikëve, grumbullin e pajisjeve të hyrjes dhe komponentët drm-kmod (port që siguron funksionimin e moduleve DRM amdgpu, i915 dhe radeon, duke përdorur kornizën linuxkpi për kompatibilitet me Menaxherin e Renderimit Direct të bërthamës Linux). - Desktopi KDE Plasma, KDE Frameworks, KDE Applications dhe Qt janë mbajtur të azhurnuara dhe përditësuar në versionet e fundit. Një aplikacion i ri kstars (atlas yjesh) është shtuar në porte.
- Janë bërë punë për të eliminuar ndryshimet regresive në menaxherin e dritareve xfwm4, të cilat u shfaqën pas përditësimit të Xfce në versionin 4.14 (p.sh., u shfaqën artefakte gjatë dekorimit të dritareve).
- Porti me Wine është përditësuar në versionin Wine 5.0 (më parë ishte versioni 4.0.3).
- Prej versionit 1.14, kompilatori i gjuhës Go ka shtuar mbështetje zyrtare për arkitekturën ARM64 për FreeBSD 12.0.
- OpenSSH në sistemin bazë është përditësuar në versionin 7.9p1.
- Është realizuar dhe përfshirë në porte (devel/libsysctlmibinfo2) biblioteka sysctlmibinfo2, e cila ofron API për qasje në sysctl MIB dhe kryen transkriptimin e emrave të sysctl në identifikuesit e objekteve (OID).
- Është formuar një përditësim i distribucionit , që përbën një redaktim të FreeBSD, i përshtatur për t'u përdorur si një desktop i lëvizshëm, duke u ngarkuar nga një disku USB. Mjedisi grafik bazohet në menaxherin e dritareve . Për montimin e disqeve përdoret (mbështet montimin CD9660, FAT, HFS+, NTFS, Ext2/3/4), për konfigurimin e rrjetit pa tel — , dhe për menaxhimin e volumit — .
- Ka filluar në shkruan e dokumentacionit të plotë për menaxherin e mjediseve jail . Po përgatitet për lëshimin e pot 0.11.0, në të cilin do të ketë mjete për menaxhimin e stekës rrjet.
Burimi: opennet.ru
