2020-yilning yanvaridan martigacha FreeBSD loyihasini ishlab chiqish boʻyicha hisobot. Oʻzgarishlar orasida quyidagilarni taʼkidlash mumkin:
- Umumiy va tizimli masalalar
- GCC kompilyatorlar to'plami, foydalanilmagan gperf, gcov va gtc (qurilma daraxti kompilyatori) bilan birga FreeBSD-CURRENT manba daraxtidan olib tashlandi. Clang-ni qo'llab-quvvatlamaydigan barcha platformalar portlardan o'rnatilgan tashqi qurish vositalariga ko'chirildi. Asosiy tizim eskirgan GCC 4.2.1 versiyasi bilan jo'natilgan va yangi versiyalarni integratsiyalash 4.2.2 ning GPLv3 litsenziyasiga o'tishi tufayli imkonsiz edi, bu FreeBSD-ning asosiy komponentlari uchun nomaqbul deb topildi. Joriy GCC relizlari, shu jumladan GCC 9, hali ham paketlar va portlardan o'rnatilishi mumkin.
- Atrof-muhit emulyatsiyasi infratuzilmasida Linux (Linuxulator) sendfile tizim chaqiruvi, TCP_CORK rejimi (nginx uchun talab qilinadi) va MAP_32BIT bayrog'i uchun qo'llab-quvvatlash qo'shildi (Mono bilan paketlarni ishga tushirish bilan bog'liq muammoni hal qiladi Ubuntu Bionic). 2.30 dan yangi glibc dan foydalanilganda DNS muammolarni hal qiladi (masalan, dan CentOS 8).
Uzluksiz integratsiya infratuzilmasi LTPni ishga tushirish uchun ishlarni bajarish imkoniyatini beradi (Linux Sinov loyihasi) tomonidan boshqariladi Linuxqo'llab-quvvatlash uchun kodga kiritilgan yaxshilanishlarni sinovdan o'tkazish uchun ulator LinuxTaxminan 400 ta test muvaffaqiyatsiz tugadi va tuzatishni talab qiladi (ba'zi xatolar noto'g'ri ijobiy natijalar tufayli yuzaga keladi, ba'zilari esa oddiy tuzatishlarni talab qiladi, boshqalari esa yangi tizim chaqiruvlari uchun qo'shimcha qo'llab-quvvatlashni talab qiladi). Kodni tozalash yakunlandi. Linuxulator va nosozliklarni tuzatishni soddalashtirish. Kengaytirilgan atributlar va fexecve tizim chaqiruvini qo'llab-quvvatlovchi yamalar tayyorlangan, ammo hali ko'rib chiqilmagan. - Manba kodini markazlashtirilgan Subversion manba kodini boshqarish tizimidan markazlashtirilmagan Git tizimiga o‘tkazish bo‘yicha tuzilgan ishchi guruhning yig‘ilishlari davom etmoqda. Migratsiya takliflari bilan hisobot tayyorlanmoqda.
- В (ish vaqti bog'lovchisi) to'g'ridan-to'g'ri bajarish rejimi yaxshilandi ("/libexec/ld-elf.so.1 {path} {argumentlar}").
- FreeBSD yadrosini syzkaller tizimidan foydalangan holda fuzzing qilish loyihasi rivojlanishda davom etmoqda. Hisobot davrida tarmoq stekidagi va syzkaller yordamida aniqlangan fayl tavsiflovchi jadvallari bilan ishlash kodidagi muammolar hal qilindi. Xato diagnostikasidan so'ng, nosozliklarni tuzatishni soddalashtirish uchun SCTP stekiga o'zgartirishlar kiritildi. Stress2 to'plamiga potentsial regressiyalarni aniqlash qoidalari qo'shildi. Copy_file_range(), __realpathat() va Capsicum quyi tizim chaqiruvlarini o'z ichiga olgan yangi tizim chaqiruvlarini fuzzing sinovidan o'tkazishni qo'llab-quvvatlash qo'shildi. Emulyatsiya qatlamini fuzzing sinovidan o'tkazish bo'yicha ishlar davom etmoqda. LinuxYaqinda o'tkazilgan Coverity Scan hisobotlarida aniqlangan xatolar tahlil qilindi va tuzatildi.
- Uzluksiz integratsiya tizimi barcha bosh tarmoq testlarini faqat clang/lld yordamida bajarishga o'tkazildi. RISC-V testi uchun endi OpenSBI yordamida QEMUda testlarni bajarish uchun to'liq disk tasviri yaratiladi. Powerpc64 tasvirlari va virtual mashinalarini (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm) sinovdan o'tkazish uchun yangi vazifalar qo'shildi.
- Emulator yoki FPGA yordamida ishlab chiqilgan yangi arxitekturalarda Kyua-dan foydalanishda yuzaga keladigan muammolarni (paketlar juda sekin joylashtiriladi) hal qilish uchun Kyua test to'plamini portlardan (devel/kyua) yadro tizimiga o'tkazish bo'yicha ishlar olib borilmoqda. Asosiy tizimga integratsiya o'rnatilgan platformalarni sinovdan o'tkazish va uzluksiz integratsiya tizimlari bilan o'zaro aloqani sezilarli darajada soddalashtiradi.
- Tarmoq ko'prigi drayverining ishlashini optimallashtirish loyihasi ishga tushirildi. , ichki ma'lumotlarni blokirovka qilish uchun bitta mutexdan foydalanadi, bu ko'p sonli qamoqxonalar yoki bitta tarmoqqa ulangan virtual mashinalarga ega tizimlarda kerakli ishlashni oldini oladi. Bloklash bilan ishlov berishni modernizatsiya qilishda regressiyalarning oldini olish uchun kodga testlar qo'shildi. Ma'lumotlarni uzatish ishlov beruvchilarini (bridge_input(), bridge_output(), bridge_forward() va boshqalar) parallellashtirish uchun ConcurrencyKit-dan foydalanish imkoniyati ko'rib chiqilmoqda.
- Yangi sigfastblock tizimi qoʻngʻiroqlari qoʻshildi, bu ipga istisnolar ishlovchilarining ish faoliyatini yaxshilash uchun tezkor signal ishlov beruvchisi uchun xotira blokini belgilash imkonini beradi.
- Endi yadro ARMv8.1 tizimlari tomonidan qo'llab-quvvatlanadigan LSE (Large System Extension) atom ko'rsatmalarini qo'llab-quvvatlaydi. Ushbu ko'rsatmalar Cavium ThunderX2 va AWS Graviton 2 platalarida ish faoliyatini yaxshilash uchun talab qilinadi. Qo'shilgan o'zgarishlar LSE qo'llab-quvvatlashini aniqlaydi va ushbu ko'rsatmalar asosida atomik amalga oshirishni dinamik ravishda faollashtiradi. Sinovda LSE dan foydalanish yadroni kompilyatsiya qilish uchun sarflangan CPU vaqtini 15% ga qisqartirdi.
- Ishlashni optimallashtirish amalga oshirildi va ELF bajariladigan fayllar uchun asboblar to'plamining funksionalligi kengaytirildi.
DWARF disk raskadrovka ma'lumotlarini keshlash uchun qo'shimcha qo'llab-quvvatlash, elfcopy/objcopy yordam dasturlaridagi muammolarni hal qilish, qo'shilgan DW_AT_ranges ishlov berish,
readelf endi PROTMAX_DISABLE, STKGAP_DISABLE va WXNEEDED bayroqlarini, shuningdek Xen va GNU Build-ID kodlarini dekodlashni qo'llab-quvvatlaydi.
- Xavfsizlik
- Azure bulutli muhitlarida FreeBSD ish faoliyatini yaxshilash uchun HyperV Socket mexanizmini qo‘llab-quvvatlash bo‘yicha ishlar olib borilmoqda, bu esa mehmon tizimining tarmoq konfiguratsiyasisiz xost muhiti bilan o‘zaro aloqasi uchun soket interfeysidan foydalanish imkonini beradi.
- Tizim komponentlarining bajariladigan fayllari e'lon qilingan manba kodidan kompilyatsiya qilinishini va hech qanday ortiqcha o'zgarishlarni o'z ichiga olmasligini ta'minlaydigan takrorlanadigan FreeBSD tuzilmalarini ta'minlash bo'yicha ishlar olib borilmoqda.
- elfctl yordam dasturi endi individual jarayon darajasida qo'shimcha himoya mexanizmlarini (ASLR, PROT_MAX, stek bo'shlig'i, W+X xaritasi) kiritishni nazorat qilish imkonini beradi.
- Saqlash va fayl tizimlari
- Kerberos (sek=krb5p rejimi) o‘rniga, faqat RPC xabarlarini shifrlash bilan chegaralangan va to‘liq dasturiy ta’minotda amalga oshirilgan NFS ishlashini TLS 1.3 asosida shifrlangan aloqa kanali orqali yoqish bo‘yicha ishlar olib borilmoqda. Yangi dastur yadro tomonidan taqdim etilgan TLS stekidan foydalanadi, bu apparat tezlashuvini ta'minlaydi. NFS-over-TLS kodi sinovga deyarli tayyor, lekin baribir imzolangan mijoz sertifikatlarini qo'llab-quvvatlashni va NFS ma'lumotlarini yuborish uchun yadro TLS stekini moslashtirishni talab qiladi (bu funksiyani olish uchun yamoqlar allaqachon mavjud).
- Uskunani qo'llab-quvvatlash
- AMD texnologiyalari asosida Xitoyning x86 Hygon protsessorlarini qo'llab-quvvatlash bo'yicha ishlar olib borilmoqda;
- CheriBSD ichida, tadqiqot protsessor arxitekturasi uchun FreeBSD vilkasi (Capability Hardware Enhanced RISC Instructions), Capsicum loyihasini himoya qilish modeliga asoslangan CHERI xotiraga kirishni boshqarish tizimini qo'llab-quvvatlaydigan ARM Morello protsessorini qo'llab-quvvatlashni amalga oshirish davom etmoqda. Morello chipi 2021-yilda chiqarilgan. Hozirda ish Morello asosidagi Arm Neoverse N1 platformasini qo‘llab-quvvatlashga qaratilgan. RISC-V arxitekturasiga CheriBSD ning dastlabki porti chiqarildi. MIPS64 arxitekturasiga asoslangan CHERI mos yozuvlar prototipi uchun CheriBSD-ni ishlab chiqish davom etmoqda.
- FreeBSD integratsiyalashgan tarmoq tezlashtirish dvigateli, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 va USB 3.0 bilan ARMv8 Cortex-A72 protsessoriga asoslangan 64-bitli NXP LS1046A SoC-ga ko'chirilishda davom etmoqda. QorIQ va LS1046A drayverlari, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC va QorIQ LS10xx SDHCI hozirda asosiy FreeBSD tarqatilishiga kiritish uchun tayyorlanmoqda.
- ena drayveri 2.1.1 versiyasiga yangilangan bo'lib, EC2 tugunlari o'rtasida 25 Gbit / s gacha tezlikda ulanishni ta'minlash uchun Elastic Compute Cloud (EC2) infratuzilmasida ishlatiladigan ikkinchi avlod ENAv2 (Elastic Network Adapter) tarmoq adapterlarini qo'llab-quvvatlaydi. ENA 2.2.0 yangilanishi tayyorlanmoqda.
- Powerpc64 platformasi uchun FreeBSD porti ustida ishlash davom etmoqda. Asosiy e'tibor IBM POWER8 va POWER9 protsessorlari bo'lgan tizimlarda yuqori sifatli ishlashni ta'minlashga qaratilgan. Hisobot davrida FreeBSD-CURRENT GCC o‘rniga LLVM/Clang 10.0 kompilyatori va lld bog‘lovchisidan foydalanish uchun ko‘chirildi. ELFv2 ABI sukut bo'yicha powerpc64 tizimlarida yoqilgan va ELFv1 ABI qo'llab-quvvatlash to'xtatilgan. FreeBSD-STABLE hali ham gcc 4.2.1 dan foydalanadi. Virtio, aacraid va ixl drayverlari bilan bog'liq muammolar hal qilindi. QEMU endi Powerpc64 tizimlarida Huge Pages yordamisiz ishlashi mumkin.
- RISC-V arxitekturasini qo'llab-quvvatlashni amalga oshirish bo'yicha ishlar davom ettirildi. Hozirgi ko'rinishida FreeBSD allaqachon drayverlar tayyorlangan SiFive Hifive Unleashed platasida muvaffaqiyatli yuklanmoqda.
UART, SPI va PRCI qo'llab-quvvatlaydi va OpenSBI va SBI 0.2 mikrodasturlarini qo'llab-quvvatlaydi. Hisobot davrida ish GCC dan clang va lld ga o'tishga qaratilgan.
- Ilovalar va port tizimi
- FreeBSD portlari to‘plami 39 000 portdan oshib ketdi, 2400 dan sal ko‘proq ochiq PR mavjud, ulardan 640 tasi hali hal etilmagan. Hisobot davrida 173 ta ishlab chiquvchi tomonidan 8146 ta o‘zgartirish kiritildi. To'rtta yangi hissa qo'shuvchi (Loik Bartoletti, Mikael Urankar, Kayl Evans va Lorenzo Salvador) komitent huquqlariga ega bo'ldi. USES=qca bayrog'i qo'shildi va USES=zope bayrog'i olib tashlandi (Python 3 bilan mos kelmasligi sababli). Python 2.7 ni portlar daraxtidan olib tashlash bo'yicha ish olib borilmoqda — Python 2 ga asoslangan barcha portlar Python 3 ga ko'chirilishi yoki olib tashlanishi kerak. Pkg paket menejeri 1.13.2 versiyasini chiqarish uchun yangilandi.
- Yangilangan grafik stek komponentlari va xorg bilan bog'liq portlar.
X.org serveri 1.20.8 versiyasiga yangilandi (avval 1.18 filiali yetkazib berilgan edi), bu FreeBSD ga kirish qurilmalarini boshqarish uchun sukut bo'yicha udev/evdev orqa qismidan foydalanishga o'tish imkonini berdi. Mesa paketi sukut bo'yicha DRI2 o'rniga DRI3 kengaytmasidan foydalanishga o'tkazildi. Grafik drayverlarni, kirish qurilmalari stekini va drm-kmod komponentlarini yangilab turish bo'yicha ishlar olib borilmoqda (yadroning Direct Rendering Manager bilan moslik uchun linuxkpi framework yordamida amdgpu, i915 va radeon uchun DRM modullarini yoqadigan port). Linux). - KDE Plazma ish stoli, KDE Frameworks, KDE ilovalari va Qt yangilanib turadi va so‘nggi versiyalarga yangilanadi. Portlarga yangi dastur, kstars (yulduzli atlas) qo'shildi.
- Xfce-ni 4.14 versiyasiga yangilagandan so'ng paydo bo'lgan xfwm4 oyna boshqaruvchisidagi regressiv o'zgarishlarni bartaraf etish bo'yicha ishlar olib borildi (masalan, derazalarni bezashda artefaktlar paydo bo'ldi).
- Wine porti Wine 5.0 (ilgari 4.0.3) ga yangilandi.
- 1.14 versiyasidan boshlab, Go kompilyatori FreeBSD 12.0 uchun ARM64 arxitekturasini rasmiy qo'llab-quvvatlaydi.
- Asosiy tizimdagi OpenSSH 7.9p1 versiyasini chiqarish uchun yangilandi.
- Sysctlmibinfo2 kutubxonasi amalga oshirildi va portlarga (devel/libsysctlmibinfo2) joylashtirildi, bu sysctl MIB ga kirish va sysctl nomlarini obyekt identifikatorlariga (OID) tarjima qilish uchun API taqdim etadi.
- Tarqatish yangilanishi yaratildi , bu USB diskdan yuklanadigan portativ ish stoli sifatida foydalanish uchun moslashtirilgan FreeBSD nashri. Grafik muhit oyna boshqaruvchisiga asoslangan . Drayvlarni o'rnatish uchun ishlatiladi (CD9660, FAT, HFS+, NTFS, Ext2/3/4 o'rnatish qo'llab-quvvatlanadi), simsiz tarmoqni sozlash uchun - , va ovoz balandligini boshqarish uchun - .
- Boshlandi qamoqxona muhiti menejeri uchun keng qamrovli hujjatlarni yozish bo'yicha Pot 0.11.0 chiqarishga tayyorlanmoqda, u tarmoq steklarini boshqarish vositalarini o'z ichiga oladi.
Manba: opennet.ru
