raporti mbi zhvillimin e projektit FreeBSD nga janari deri në mars 2020. Ndër ndryshimet mund të theksohet:
- ĂĂ«shtje tĂ« pĂ«rgjithshme dhe sistemore
- Nga druri i teksteve burimore FreeBSD-CURRENT është hequr pack-i i kompilerëve GCC, si dhe utilitetet e papërdorura 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ë instaluar nga portet. Në sistemin bazë është dorëzuar një version i vjetër i 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 se nuk është e pranueshme për komponentët bazë të FreeBSD. Versionet aktuale të GCC, duke përfshirë GCC 9, si më parë, mund të instalohen nga pakot dhe portet.
- Në infrastrukturën e emulimit të ambientit Linux (Linuxulator) është shtuar mbështetje për thirrjen sistemore sendfile, modalitetin TCP_CORK (i nevojshëm për nginx), flamurin MAP_32BIT (çmon problemimin e nisjes së paketave me Mono nga Ubuntu Bionic). Janë zgjidhur problemet me zgjidhjen e DNS kur përdoret glibc mbi 2.30 (p.sh. nga CentOS 8).
NĂ« infrastrukturĂ«n e integrimit tĂ« vazhdueshĂ«m Ă«shtĂ« siguruar ekzekutimi i detyrave pĂ«r tĂ« drejtuar LTP (Projekti i Testimit tĂ« Linux) nĂ«n menaxhimin e Linuxulator pĂ«r testimin e pĂ«rmirĂ«simeve qĂ« po bĂ«hen nĂ« kod pĂ«r mbĂ«shtetje tĂ« Linux. Rreth 400 teste pĂ«rfundojnĂ« me gabim dhe kĂ«rkojnĂ« korrigjim (disa gabime shkaktohen nga aktivizime tĂ« gabuara, disa kĂ«rkojnĂ« korrigjime triviale, por ka edhe ato qĂ« pĂ«r zgjidhjen e tyre duhet tĂ« shtohet mbĂ«shtetje pĂ«r thirrje tĂ« reja sistemore). ĂshtĂ« punuar nĂ« pastrimin e kodit tĂ« Linuxulator dhe nĂ« thjeshtimin e depurimit. JanĂ« pĂ«rgatitur, por ende nuk janĂ« rishikuar, patch-e me mbĂ«shtetje pĂ«r atribute tĂ« zgjeruara dhe thirrjen sistemore fexecve. - Vazhdon takimet e grupit tĂ« punĂ«s, i krijuar pĂ«r tĂ« kryer migrimin e teksteve burimore nga sistemi i centralizuar i menaxhimit tĂ« teksteve Subversion nĂ« njĂ« sistem tĂ« decentralizuar Git. Raporti me propozimet pĂ«r migrim Ă«shtĂ« nĂ« proces pĂ«rgatitjeje.
- Në (linkuesi në runtime) është përmirësuar modaliteti i ekzekutimit direkt ("/libexec/ld-elf.so.1 {rruga} {argumentet}").
- Projekti pĂ«r testimin e fuzzing-ut tĂ« bĂ«rthamĂ«s FreeBSD vazhdon tĂ« zhvillohet duke pĂ«rdorur sistemin syzkaller. GjatĂ« periudhĂ«s sĂ« raportit janĂ« zgjidhur problemet nĂ« grilĂ«n rrjet dhe kodin pĂ«r punĂ«n me tabelat e descriptorĂ«ve tĂ« skedarĂ«ve, identifikuar me ndihmĂ«n e syzkaller. Pas diagnostikimit tĂ« gabimeve nĂ« grilĂ«n SCTP janĂ« shtuar ndryshime qĂ« thjeshtojnĂ« depurimin. NĂ« grupin stress2 janĂ« shtuar rregulla pĂ«r tĂ« zbuluar regresione tĂ« mundshme. ĂshtĂ« shtuar mbĂ«shtetje pĂ«r testimin e fuzzing-ut tĂ« thirrjeve tĂ« reja sistemore, duke pĂ«rfshirĂ« copy_file_range(), __realpathat() dhe thirrjet e nĂ«n-sistemit Capsicum. Vazhdon puna pĂ«r tĂ« mbuluar fuzzing-un e shtresĂ«s sĂ« emulimit tĂ« Linux. JanĂ« bĂ«rĂ« shqyrtime dhe janĂ« zgjidhur gabimet e raportuara nĂ« raportet e reja tĂ« Coverity Scan.
- Sistemi i integrimit të vazhdueshëm ka kaluar në ekzekutimin e të gjitha testeve të degës kryesore 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ë ekzekutuar testet në QEMU me përdorimin e OpenSBI. Janë shtuar detyra të reja për testimin e imazheve dhe makinave virtuale powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
- ĂshtĂ« duke u punuar pĂ«r transferimin e setit tĂ« testeve Kyua nga portet (devel/kyua) nĂ« sistemin bazĂ« pĂ«r tĂ« zgjidhur problemet (paketat instalohen shumĂ« ngadalĂ«) qĂ« shfaqen gjatĂ« pĂ«rdorimit tĂ« Kyua nĂ« arkitekturĂ« tĂ« reja, pĂ«r zhvillimin e tĂ« cilave po punohet me emulues ose FPGA. Integrimi nĂ« sistemin bazĂ« do tĂ« thjeshtĂ«sojĂ« ndjeshĂ«m testimin e platformave tĂ« integruara dhe lidhjen me sistemet e integrimit tĂ« vazhdueshĂ«m.
- Ka nisur një projekt për optimizimin e performancës së driverit të urave rrjetësore. , 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 të ostrëve jail ose makinave virtuale të bashkuara në një rrjet. Në këtë fazë janë shtuar teste në kod për të parandaluar lindjen e regresioneve gjatë modernizimit të funksionimit me bllokime. Po shqyrtohet mundësia e përdorimit të ConcurrencyKit për të paralelizuar trajtuesit e transfertës së të dhënave (bridge_input(), bridge_output(), bridge_forward(), ...).
- ĂshtĂ« shtuar njĂ« thirrje e re sistemore sigfastblock, e cila lejon njĂ« fije tĂ« pĂ«rcaktojĂ« njĂ« bllok memorie pĂ«r trajtues mĂ« tĂ« shpejtĂ« tĂ« sinjaleve pĂ«r tĂ« rritur performancĂ«n e trajtuesve tĂ« pĂ«rjashtimeve.
- Në bërthamë është shtetur mbështetje për instruksionet atomike LSE (Large System Extension), të mbështetur nga sistemet ARMv8.1. Këto instruksione janë të nevojshme për të rritur performancën gjatë punës në bordet Cavium ThunderX2 dhe AWS Graviton 2. Ndryshimet e shtuara përkufizojnë disponueshmërinë e mbështetjes LSE dhe aktivizojnë dinamikisht implementimin e atomic mbi bazën e tyre. Gjatë testimit, përdorimi i LSE ka lejuar një reduktim prej 15% të kohës së përdorimit të procesorit gjatë ndërtimit të bërthamës.
- ĂshtĂ« realizuar optimizimi i performancĂ«s dhe Ă«shtĂ« zgjeruar funksionaliteti i mjeteve pĂ«r skedarĂ«t ekzekutivĂ« nĂ« formatin ELF.
ĂshtĂ« shtuar mbĂ«shtetje pĂ«r ruajtjen e informacionit pĂ«r optimizimin DWARF, janĂ« zgjidhur problemet nĂ« utilitatet elfcopy/objcopy, Ă«shtĂ« shtuar trajtimi i DW_AT_ranges,
në readelf është implementuar mundësia e dekodimit të flamujve 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, është duke u punuar për sigurimin e mbështetjes për mekanizmin Hyper-V Socket, i cili lejon përdorimin e ndërfaqes së soketeve për komunikimin e sistemit mysafir me mjedisin host pa konfiguruar rrjetin.
- Po punohet puna për sigurimin e ndërtimeve të përsëritshme FreeBSD, duke iu mundësuar që të sigurohet se skedarët ekzekutues të komponentëve të sistemit janë ndërtuar pikërisht nga tekstet burimore të deklaruara dhe nuk përmbajnë ndryshime të rastit.
- Në utilitarin elfctl është shtuar mundësia për të menaxhuar aktivizimin e mekanizmave të shtesës së mbrojtjes (ASLR, PROT_MAX, hapësira e stack, hartimi W+X) në nivelin e proceseve individuale.
- Sistem storage dhe sisteme skedarësh
- Po punohet për realizimin e mundësisë së funksionimit NFS mbi një kanal komunikimi të enkriptuar në bazë të TLS 1.3, në vend të përdorimit të Kerberos (modi sec=krb5p), i cili kufizohet vetëm në enkriptimin e mesazheve RPC dhe implementohet vetëm softuerikisht. Realizimi i ri përdor stack-un TLS të ofruar nga bërthama, që lejon përdorimin e mjeteve të përshpejtimit harduerik. Kodi NFS mbi TLS është gati pothuajse për testim, por ende kërkon punë për të mbështetur certifikatat e nënshkruara të klientëve dhe për të përshtatur stack-un TLS të bërthamës për dërgimin e të dhënave NFS (patch-t për pranim tashmë janë gati).
- Mbështetje për pajisjet
- Po punohet për shtimin e mbështetjes për procesorët x86 kinezë Hygon mbi baza teknologjike AMD.
- NĂ« kuadĂ«r tĂ« CheriBSD, njĂ« degĂ« e FreeBSD pĂ«r arkitekturĂ«n kĂ«rkimore tĂ« procesorĂ«ve. (Instruksionet e RISC tĂ« Krijuara nga Kapaciteti), vazhdon realizimi i mbĂ«shtetjes pĂ«r procesorin ARM Morello, i cili do tĂ« mbĂ«shtesĂ« sistemin e menaxhimit tĂ« aksesit nĂ« memorie CHERI, i bazuar nĂ« modelin mbrojtĂ«s tĂ« projektit Capsicum. Ăipi Morello pritet tĂ« lĂ«shohet nĂ« vitin 2021. Aktualisht puna Ă«shtĂ« e fokusuar nĂ« shtimin e mbĂ«shtetjes pĂ«r platformĂ«n Arm Neoverse N1, nĂ« themel tĂ« Morello. ĂshtĂ« paraqitur portimi fillestar CheriBSD pĂ«r arkitekturĂ«n RISC-V. Vazhdon zhvillimi i CheriBSD pĂ«r prototipin referencĂ« CHERI mbi bazĂ«n e arkitekturĂ«s MIPS64.
- Vazhdon portimi i FreeBSD për SoC NXP LS1046A 64-bit mbi bazën e procesorit ARMv8 Cortex-A72 me motor të integruar për përshpejtimin e përpunimit të paketave të rrjetit, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 dhe USB 3.0. Aktualisht për kalimin në strukturën kryesore të FreeBSD janë duke u përgatitur driverat për QorIQ dhe LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI.
- Derisa në versionin 2.1.1 është azhurnuar driver-i ena me mbështetje për gjeneratën e dytë të adaptatorëve rrjetë ENAv2 (Elastic Network Adapter), të përdorur në infrastrukturën Elastic Compute Cloud (EC2) për organizimin e komunikimit midis nyjave EC2 në shpejtësi deri në 25 Gb/s. Po përgatitet azhurnimi në ENA 2.2.0.
- Vazhdojnë përmirësimet e portit FreeBSD për platformën powerpc64. Vëmendja kryesore është dhënë sigurisë së performancës së lartë në sistemet me procesorë IBM POWER8 dhe POWER9. Gjatë periudhës raportuese është realizuar kalimi i FreeBSD-CURRENT në përdorimin e kompilatorit LLVM/Clang 10.0 dhe linker-it lld në vend të GCC. Nga ana tjetër, për sistemet powerpc64 është aktivizuar ELFV2 ABI, ndërsa mbështetja për ELFv1 ABI është ndërprerë. Në FreeBSD-STABLE ende vazhdon të ndodhet gcc 4.2.1. Janë zgjidhur probleme me driverat virtio, aacraid dhe ixl. Në sistemet powerpc64 është mundësuar nisja e QEMU pa mbështetje për Huge Pages.
- Puna vazhdon për të realizuar mbështetje për arkitekturën RISC-V. Në formën aktuale, FreeBSD tashmë ngarkohet me sukses në bordin SiFive Hifive Unleashed, për të cilin janë përgatitur drejtoritë.
UART, SPI dhe PRCI, mbështesin programimin OpenSBI dhe SBI 0.2. Gjatë periudhës raportuese, puna u përqendrua në migrimin nga GCC në clang dhe lld.
- Aplikacionet dhe sistemi i porteve
- Koleksioni i porteve të FreeBSD kaloi 39,000 porte, numri i PR-ve të hapura është pak mbi 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) morën të drejtat e komitimit. U shtua flamuri USES=qca dhe u hoq flamuri 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 varura nga Python 2 duhet të portohen në Python 3 ose do të hiqen. Menaxheri i paketave pkg u azhurnua në versionin 1.13.2.
- Pjesët e stakut grafik dhe portet e lidhura me xorg janë azhurnuar.
Serveri X.org është azhurnuar në versionin 1.20.8 (më parë ishte versioni 1.18), që lejon kalimin e FreeBSD në përdorimin e backend-it udev/evdev për përpunimin e pajisjeve të input-it. Paketa Mesa është kalur në përdorim të zgjerimit DRI3 në vend të DRI2. Po punohet për mbajtjen në përputhje të drejtuesve grafikë, stack të pajisjeve të input-it dhe komponenteve drm-kmod (porti që siguron funksionimin e moduleve DRM si amdgpu, i915 dhe radeon, duke përdorur arkitekturën linuxkpi për përputhshmërinë me Managerin e Renderimit të Drejtë të kernel-it Linux). - Desktop-i KDE Plasma, KDE Frameworks, KDE Applications dhe Qt janë mbajtur në gjendje të përditësuar dhe janë azhurnuar në versionet më të fundit. Në porte është shtuar një aplikacion i ri kstars (atlas yjesh).
- ĂshtĂ« punuar pĂ«r tĂ« eliminuar ndryshimet regresive nĂ« menaxherin e dritareve xfwm4, qĂ« u shfaqĂ«n pas azhurnimit tĂ« Xfce nĂ« versionin 4.14 (p.sh., u shfaqĂ«n artefakte gjatĂ« dekorimit tĂ« dritareve).
- Porti me Wine është azhurnuar në versionin Wine 5.0 (më parë ishte versioni 4.0.3).
- Që nga versioni 1.14, kompajleri i gjuhës Go ka shtuar mbështetje zyrtare për arkitekturën ARM64 për FreeBSD 12.0.
- OpenSSH në sistemin bazë është azhurnuar në versionin 7.9p1.
- ĂshtĂ« realizuar dhe vendosur nĂ« porte (devel/libsysctlmibinfo2) biblioteka sysctlmibinfo2, qĂ« ofron njĂ« API pĂ«r aksesin nĂ« sysctl MIB dhe bĂ«n pĂ«rkthimin e emrave sysctl nĂ« identifikatorĂ«t e objekteve (OID).
- PĂ«rditĂ«simi i distribucionit Ă«shtĂ« formuar , qĂ« pĂ«rfaqĂ«son njĂ« edicion tĂ« FreeBSD, i adaptuar pĂ«r pĂ«rdorim si njĂ« desktop portativ, i ngarkuar nga njĂ« USB. Mjedisi grafik bazohet nĂ« menaxherin e dritareve . PĂ«r montimin e disqeve pĂ«rdoret (pĂ«rfshihet mbĂ«shtetje pĂ«r montimin e CD9660, FAT, HFS+, NTFS, Ext2/3/4), pĂ«r konfigurimin e rrjeteve wireless â , ndĂ«rsa pĂ«r menaxhimin e volumit â .
- Ka filluar për ndihmën në hartimin e dokumentacionit të plotë për menaxherin e mjediseve jail. . Po përgatitet për lëshim pot 0.11.0, në të cilin do të jenë në dispozicion mjetet për menaxhimin e stack-ut të rrjetit.
Burimi: opennet.ru
