2020-ci ilin birinci rübü üçün FreeBSD İnkişaf Hesabatı

nəşr edilmişdir 2020-ci ilin yanvar-mart aylarında FreeBSD layihəsinin inkişafı haqqında hesabat. Dəyişikliklər arasında qeyd edə bilərik:

  • Ümumi və sistemli məsələlər
    • FreeBSD-CURRENT mənbə ağacından GCC kompilyator dəsti, həmçinin istifadə olunmamış gperf, gcov və gtc (devicetree compiler) utilitləri silindi. Clang-ı dəstəkləməyən bütün platformalar portlardan quraşdırılmış xarici qurma alətlərindən istifadə etməyə keçib. Baza sistem GCC 4.2.1-in köhnəlmiş buraxılışını göndərdi və 4.2.2-nin FreeBSD baza komponentləri üçün uyğun olmayan GPLv3 lisenziyasına keçidi səbəbindən daha yeni versiyaların inteqrasiyası mümkün olmadı. GCC 9 daxil olmaqla, GCC-nin cari buraxılışları hələ də paketlərdən və portlardan quraşdırıla bilər.
    • Linux mühitinin emulyasiya infrastrukturu (Linuxulator) sendfile sistemi çağırışı, TCP_CORK rejimi (nginx üçün tələb olunur) və MAP_32BIT bayrağı (Ubuntu Bionic-dən Mono ilə paketlərin işə salınması ilə bağlı problemi həll edir) üçün dəstəyi əlavə etdi. 2.30-dan daha yeni glibc (məsələn, CentOS 8-dən) istifadə edərkən DNS həlli ilə bağlı problemlər həll edildi.
      Davamlı inteqrasiya infrastrukturu Linux-u dəstəkləmək üçün kodda edilən təkmilləşdirmələri sınaqdan keçirmək üçün Linuxulator ilə işləyən LTP (Linux Testing Project) işlərini icra etmək imkanı verir. Təxminən 400 test uğursuz olur və düzəliş tələb edir (bəzi səhvlər yanlış pozitivlərdən qaynaqlanır, bəziləri əhəmiyyətsiz düzəlişlər tələb edir, lakin düzəltmək üçün yeni sistem zəngləri üçün dəstək əlavə edilməsini tələb edən başqaları var). Linuxulator kodunu təmizləmək və sazlamanı sadələşdirmək üçün işlər görülüb. Genişləndirilmiş atributları və fexecve sistem çağırışını dəstəkləyən yamaqlar hazırlanıb, lakin hələ nəzərdən keçirilməyib.

    • Mənbə kodlarının mərkəzləşdirilmiş mənbə idarəetmə sistemindən Subversion mərkəzləşdirilməmiş sistem Git-ə miqrasiyasını həyata keçirmək üçün yaradılmış işçi qrupun iclasları davam edir. Miqrasiya ilə bağlı təklifləri özündə əks etdirən hesabat hazırlanma mərhələsindədir.
    • В rtld (işləmə vaxtı əlaqələndiricisi) təkmilləşdirilmiş birbaşa icra rejimi (“/libexec/ld-elf.so.1 {path} {arqumentlər}”).
    • Syzkaller sistemindən istifadə edərək FreeBSD nüvəsinin fuzzing testi layihəsi inkişaf etməkdə davam edir. Hesabat dövründə şəbəkə stekində və syzkaller vasitəsilə müəyyən edilmiş fayl deskriptor cədvəlləri ilə işləmək üçün kodda problemlər aradan qaldırılıb. Səhv diaqnozundan sonra, sazlamanı asanlaşdırmaq üçün SCTP yığınına dəyişikliklər əlavə edildi. Mümkün reqressiyaları müəyyən etmək üçün stress2 dəstinə qaydalar əlavə edilmişdir. copy_file_range(), __realpathat() və Capsicum altsistem zəngləri daxil olmaqla, yeni sistem zənglərinin qeyri-səlis testi üçün əlavə dəstək. Linux emulyasiya qatını fuzz testi ilə əhatə etmək üçün işlər davam edir. Ən son Coverity Scan hesabatlarında qeyd olunan səhvləri təhlil etdik və aradan qaldırdıq.
    • Davamlı inteqrasiya sistemi yalnız clang/lld istifadə edərək bütün baş şöbə testlərini yerinə yetirməyə keçdi. RISC-V üçün sınaqdan keçirilərkən, OpenSBI istifadə edərək QEMU-da testlərin aparılması üçün tam disk təsvirinin formalaşması təmin edilir. Şəkillərin və powerpc64 virtual maşınlarının sınaqdan keçirilməsi üçün yeni tapşırıqlar əlavə edildi (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Yeni arxitekturalarda Kyua-dan istifadə zamanı yaranan problemlərin (paketlər çox ləng quraşdırılır) həlli üçün Kyua test paketinin portlardan (devel/kyua) baza sistemə köçürülməsi üzərində iş aparılır, emulyator və ya emulyatordan istifadə etməklə. FPGA. Baza sistemə inteqrasiya daxili platformaların sınaqdan keçirilməsini və davamlı inteqrasiya sistemləri ilə interfeysi əhəmiyyətli dərəcədə sadələşdirəcək.
    • Şəbəkə körpüsü sürücüsünün işini optimallaşdırmaq üçün layihə işə salınıb əgər_körpü, daxili məlumatları kilidləmək üçün tək mutexdən istifadə edir, bu, çox sayda həbsxana mühiti və ya bir şəbəkədə birləşmiş virtual maşınları olan sistemlərdə istənilən performansa nail olmağa imkan vermir. Bu mərhələdə kilidlərlə işin modernləşdirilməsi zamanı reqressiyaların baş verməməsi üçün koda testlər əlavə edilmişdir. Məlumat ötürmə işləyicilərini (bridge_input(), bridge_output(), bridge_forward(), ...) paralelləşdirmək üçün ConcurrencyKit-dən istifadə etmək imkanı nəzərdən keçirilir.
    • İstisna işləyicilərinin işini təkmilləşdirmək üçün ipə sürətli siqnal işləyicisi üçün yaddaş blokunu təyin etməyə icazə vermək üçün yeni sigfastblock sistemi çağırışı əlavə edildi.
    • Kernel ARMv8.1 sistemləri tərəfindən dəstəklənən LSE (Böyük Sistem Genişləndirilməsi) atom təlimatlarına dəstək əlavə edir. Bu təlimatlar Cavium ThunderX2 və AWS Graviton 2 lövhələrində işləyərkən performansı yaxşılaşdırmaq üçün tələb olunur.Əlavə edilmiş dəyişikliklər LSE dəstəyini aşkar edir və onların əsasında atomik tətbiqi dinamik şəkildə aktivləşdirir. Sınaq zamanı LSE-dən istifadə nüvənin yığılması zamanı prosessorun vaxtını 15% azaltmağa imkan verdi.
    • Performansın optimallaşdırılması həyata keçirilmiş və ELF formatında icra olunan fayllar üçün alətlər dəstinin funksionallığı genişləndirilmişdir.
      DWARF sazlama məlumatının keşləşdirilməsi üçün əlavə dəstək, elfcopy/objcopy utilitlərindəki problemləri həll etdi, əlavə DW_AT_ranges emal,
      readelf PROTMAX_DISABLE, STKGAP_DISABLE və WXNEEDED bayraqlarını, həmçinin Xen və GNU Build-ID kodlarını deşifrə etmək qabiliyyətini həyata keçirir.

  • təhlükəsizlik
    • Azure bulud mühitlərində FreeBSD-nin işini yaxşılaşdırmaq üçün şəbəkə qurmadan qonaq sistemi ilə host mühiti arasında qarşılıqlı əlaqə üçün soket interfeysindən istifadə etməyə imkan verən HyperV Socket mexanizminin dəstəyinin təmin edilməsi üzrə işlər aparılır.
    • Sistem komponentlərinin icra edilə bilən fayllarının elan edilmiş mənbə kodlarından tam olaraq tərtib edilməsini və kənar dəyişiklikləri ehtiva etməməsini təmin etməyə imkan verən FreeBSD-nin təkrarlana bilən quruluşlarını təmin etmək üçün işlər aparılır.
    • Fərdi proseslər səviyyəsində əlavə mühafizə mexanizmlərinin (ASLR, PROT_MAX, yığın boşluğu, W+X xəritələşdirilməsi) daxil edilməsinə nəzarət etmək imkanı elfctl yardım proqramına əlavə edilmişdir.
  • Saxlama və fayl sistemləri
    • NFS-nin yalnız RPC mesajlarının şifrlənməsi ilə məhdudlaşan və yalnız proqram təminatında həyata keçirilən Kerberos (sec=krb1.3p rejimi) istifadə etmək əvəzinə TLS 5 əsasında şifrələnmiş rabitə kanalı üzərində işləmə qabiliyyətinin tətbiqi istiqamətində işlər aparılır. Yeni tətbiq, aparat sürətləndirilməsini təmin etmək üçün nüvə ilə təmin edilmiş TLS yığınından istifadə edir. TLS kodu üzərindən NFS sınaq üçün demək olar ki, hazırdır, lakin imzalanmış müştəri sertifikatlarını dəstəkləmək və nüvə TLS yığınını NFS məlumatlarını göndərmək üçün uyğunlaşdırmaq üçün hələ də iş tələb olunur (qəbul etmək üçün yamaqlar artıq hazırdır).
  • Aparat dəstəyi
    • AMD texnologiyalarına əsaslanan Çin x86 CPU Hygon üçün dəstəyin əlavə edilməsi üzrə işlər aparılır;
    • CheriBSD-nin bir hissəsi kimi, tədqiqat prosessoru arxitekturası üçün FreeBSD çəngəlidir CHERI (Capability Hardware Enhanced RISC Instructions), Capsicum layihəsinin təhlükəsizlik modelinə əsaslanan CHERI yaddaşa girişə nəzarət sistemini dəstəkləyəcək ARM Morello prosessoruna dəstək həyata keçirilməkdə davam edir. Morello çipi planlaşdırırıq 2021-ci ildə buraxılır. Hazırda iş Morelloya güc verən Arm Neoverse N1 platformasına dəstəyin əlavə edilməsinə yönəlib. RISC-V arxitekturası üçün CheriBSD-nin ilkin portu təqdim edilmişdir. MIPS64 arxitekturasına əsaslanan CHERI istinad prototipi üçün CheriBSD inkişafı davam edir.
    • ARMv64 Cortex-A1046 prosessoruna əsaslanan 8 bitlik SoC NXP LS72A üçün FreeBSD portinqi inteqrasiya olunmuş şəbəkə paketinin emal sürətləndirilməsi mühərriki, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 və USB 3.0 ilə davam edir. Hazırda QorIQ və LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI drayverləri əsas FreeBSD kompozisiyasına keçid üçün hazırlanır.
    • ena drayveri EC2.1.1 qovşaqları arasında 2 Gb/dək sürətlə əlaqəni təşkil etmək üçün Elastic Compute Cloud (EC2) infrastrukturunda istifadə edilən ikinci nəsil ENAv2 (Elastic Network Adapter) şəbəkə adapterlərinin dəstəyi ilə 25 versiyasına yeniləndi. s. ENA 2.2.0 yeniləməsi hazırlanır.
    • Powerpc64 platforması üçün FreeBSD portunda təkmilləşdirmələr davam edir. Əsas diqqət IBM POWER8 və POWER9 prosessorları olan sistemlərdə keyfiyyətli performansın təmin edilməsinə yönəlib. Hesabat dövründə FreeBSD-CURRENT GCC əvəzinə LLVM/Clang 10.0 kompilyatoru və lld linkerindən istifadə etmək üçün köçürüldü. Defolt olaraq, powerpc64 sistemləri ELFv2 ABI-dən istifadə edir və ELFv1 ABI üçün dəstək dayandırılıb. FreeBSD-STABLE hələ də gcc 4.2.1-ə malikdir. Virtio, aacraid və ixl sürücüləri ilə bağlı problemlər həll edildi. Powerpc64 sistemlərində QEMU-nu Huge Pages dəstəyi olmadan işə salmaq mümkündür.
    • RISC-V arxitekturasına dəstəyin həyata keçirilməsi üzrə işlər davam edir. İndiki formada FreeBSD artıq sürücülərin hazırlanmış SiFive Hifive Unleashed lövhəsində uğurla yüklənir.
      UART, SPI və PRCI, OpenSBI və SBI 0.2 proqram təminatını dəstəkləyir. Hesabat dövründə iş GCC-dən clang və lld-ə miqrasiyaya yönəldilib.

  • Proqramlar və port sistemi
    • FreeBSD port kolleksiyası 39 min port həddini keçib, bağlanmamış PR-lərin sayı 2400-ü bir qədər ötür, onlardan 640 PR hələ çeşidlənməyib. Hesabat dövründə 8146 tərtibatçıdan 173 dəyişiklik edilib. Dörd yeni iştirakçı (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) icraçı hüquqları aldı. USES=qca bayrağı əlavə edildi və USES=zope bayrağı silindi (Python 3 ilə uyğunsuzluğa görə). Python 2.7-nin portlar ağacından çıxarılması üçün işlər aparılır - bütün Python 2 əsaslı portlar Python 3-ə köçürülməlidir və ya silinəcəkdir. pkg paket meneceri 1.13.2-ni buraxmaq üçün yeniləndi.
    • Yenilənmiş qrafik yığını komponentləri və xorg ilə əlaqəli portlar.
      X.org serveri 1.20.8 versiyasına (əvvəllər 1.18 filialında göndərilmişdi) yeniləndi ki, bu da FreeBSD-yə giriş cihazlarını idarə etmək üçün udev/evdev backendindən istifadə etməyə imkan verdi. Mesa paketi defolt olaraq DRI3 əvəzinə DRI2 genişlənməsindən istifadə etməyə dəyişdirilib. Qrafik drayverlərin, daxiletmə qurğusu yığınının və drm-kmod komponentlərinin (Linuxkpi çərçivəsini Linux nüvəsinin Direct Rendering Manager ilə uyğunluqdan istifadə edərək, amdgpu, i915 və radeon DRM modullarının işləməsini təmin edən port) saxlamaq üçün iş aparılır. bu günə qədər.

    • KDE Plazma masa üstü, KDE Çərçivələri, KDE Proqramları və Qt yenilənir və ən son buraxılışlara yenilənir. Limanlara yeni proqram kstars (ulduz atlası) əlavə edildi.
    • Xfce-ni 4 versiyasına yenilədikdən sonra yaranan xfwm4.14 pəncərə menecerində reqressiv dəyişikliklərin aradan qaldırılması üçün işlər görülüb (məsələn, pəncərələri bəzəyərkən artefaktlar yaranıb).
    • Wine portu Wine 5.0-ni (əvvəllər 4.0.3 təklif olunurdu) buraxmaq üçün yeniləndi.
    • 1.14 versiyasından başlayaraq Go dili kompilyatoru FreeBSD 64 üçün ARM12.0 arxitekturasına rəsmi dəstək əlavə etdi.
    • Əsas sistemdəki OpenSSH 7.9p1 versiyasını buraxmaq üçün yeniləndi.
    • Sysctlmibinfo2 kitabxanası sysctl MIB-ə daxil olmaq və sysctl adlarını obyekt identifikatorlarına (OID) çevirmək üçün API təmin edən portlarda (devel/libsysctlmibinfo2) tətbiq edilib və yerləşdirilib.
    • Dağıtım yeniləməsi yaradıldı NomadBSD 1.3.1, USB sürücüsündən yüklənə bilən portativ masaüstü kompüter kimi istifadə üçün uyğunlaşdırılmış FreeBSD nəşridir. Qrafik mühit pəncərə menecerinə əsaslanır Openbox. Sürücüləri quraşdırmaq üçün istifadə olunur DSBMD (CD9660, FAT, HFS+, NTFS, Ext2/3/4 quraşdırılması dəstəklənir), simsiz şəbəkəni konfiqurasiya etmək üçün - wifimgrvə səsi idarə etmək üçün - DSBMixer.
    • Started həbsxana mühiti meneceri üçün tam sənədlərin yazılması haqqında qazan. Pot 0.11.0 buraxılış üçün hazırlanır, bura şəbəkə yığınını idarə etmək üçün alətlər daxildir.

Mənbə: opennet.ru

Добавить комментарий