FreeBSD Untwikkelingsrapport foar it earste fearnsjier fan 2020

publisearre rapportearje oer de ûntwikkeling fan it FreeBSD-projekt fan jannewaris oant maart 2020. Under de feroarings kinne wy ​​​​opmerke:

  • Algemiene en systemyske problemen
    • Fuortsmite de GCC-kompilerset fan 'e FreeBSD-CURRENT boarnebeam, lykas de net brûkte gperf, gcov en gtc (devicetree compiler) nutsfoarsjenningen. Alle platfoarms dy't Clang net stypje, binne oerskeakele op it brûken fan eksterne bouwark ynstalleare fan havens. It basissysteem stjoerde in ferâldere release fan GCC 4.2.1, en yntegraasje fan nijere ferzjes wie net mooglik fanwegen de oergong fan 4.2.2 nei de GPLv3-lisinsje, dy't as net geskikt beskôge waard foar de FreeBSD-basiskomponinten. Aktuele releases fan GCC, ynklusyf GCC 9, kinne noch ynstalleare wurde fan pakketten en havens.
    • De Linux-omjouwingsemulaasje-ynfrastruktuer (Linuxulator) hat stipe tafoege foar de sendfile-systeemoprop, TCP_CORK-modus (fereaske foar nginx), en de MAP_32BIT-flagge (lost it probleem op mei it lansearjen fan pakketten mei Mono fan Ubuntu Bionic). Problemen mei DNS-resolúsje by it brûken fan glibc nijer dan 2.30 (bygelyks fan CentOS 8) binne oplost.
      De trochgeande yntegraasjeynfrastruktuer jout de mooglikheid om LTP (Linux Testing Project) banen út te fieren mei Linuxulator om ferbetteringen te testen dy't makke binne oan 'e koade om Linux te stypjen. Ungefear 400 tests mislearje en fereaskje reparaasje (guon flaters wurde feroarsake troch falske positiven, guon fereaskje triviale fixes, mar d'r binne oaren dy't it tafoegjen fan stipe nedich binne foar nije systeemoproppen om te reparearjen). Der is wurk dien om de Linuxulator-koade op te romjen en debuggen te ferienfâldigjen. Patches mei stipe foar útwreide attributen en de fexecve-systeemoprop binne taret, mar noch net hifke.

    • Gearkomsten fan 'e wurkgroep makke om de migraasje fan boarnekoades út te fieren fan it sintralisearre boarnekontrôlesysteem Subversion nei it desintralisearre systeem Git trochgean. In rapport mei útstellen foar migraasje is yn it proses fan tarieding.
    • В rtld (runtime linker) ferbettere direkte útfieringsmodus ("/libexec/ld-elf.so.1 {path} {arguminten}").
    • It projekt foar fuzzing testen fan 'e FreeBSD-kernel mei it syzkaller-systeem bliuwt te ûntwikkeljen. Yn 'e rapportaazjeperioade waarden problemen yn' e netwurkstapel en koade foar it wurkjen mei triembeskriuwingstabellen identifisearre mei syzkaller elimineare. Nei de flaterdiagnoaze binne wizigingen tafoege oan de SCTP-stapel om debuggen makliker te meitsjen. Regels binne tafoege oan de stress2-set om mooglike regressions te identifisearjen. Tafoege stipe foar fuzz testen fan nije systeem calls, ynklusyf copy_file_range (), __realpathat () en Capsicum subsystem calls. Wurk bliuwt om de Linux-emulaasjelaach te dekken mei fuzz-testen. Wy analysearren en elimineare flaters opmurken yn 'e lêste Coverity Scan-rapporten.
    • It trochgeande yntegraasjesysteem is oergien nei it útfieren fan alle tests foar koptakken allinich mei clang/lld. By it testen foar RISC-V wurdt de foarming fan in folsleine skiifôfbylding garandearre foar it útfieren fan testen yn QEMU mei OpenSBI. Nije taken tafoege foar it testen fan ôfbyldings en powerpc64 firtuele masines (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Der wurdt wurke oan it oerdragen fan de Kyua-testsuite fan 'e havens (devel/kyua) nei it basissysteem om problemen op te lossen (pakketten wurde heul stadich ynstalleare) dy't ûntsteane by it brûken fan Kyua op nije arsjitektuer, wêrfan ûntwikkeling wurdt útfierd mei in emulator of FPGA. Yntegraasje yn it basissysteem sil testen fan ynbêde platfoarms signifikant ferienfâldigje en ynterface mei trochgeande yntegraasjesystemen.
    • In projekt is lansearre om de prestaasjes fan 'e netwurkbrêgebestjoerder te optimalisearjen if_bridge, dy't in inkele mutex brûkt om ynterne gegevens te sluten, dy't net tastean om de winske prestaasjes te berikken op systemen mei in grut oantal finzenisomjouwings of firtuele masines ferienige yn ien netwurk. Op dit stadium binne tests tafoege oan de koade om foar te kommen dat regressions foarkomme by de modernisearring fan it wurkjen mei slûzen. De mooglikheid om ConcurrencyKit te brûken foar it parallellisearjen fan gegevensferfierhannelers (bridge_input (), bridge_output (), bridge_forward (), ...) wurdt beskôge.
    • In nije sigfastblock-systeemoprop tafoege om in tried te tastean in blok fan ûnthâld te spesifisearjen foar in flugge sinjaalhanneler om de prestaasjes fan útsûnderingshannelers te ferbetterjen.
    • De kernel foeget stipe ta foar LSE (Large System Extension) atoomynstruksjes stipe troch ARMv8.1-systemen. Dizze ynstruksjes binne nedich om de prestaasjes te ferbetterjen by it rinnen op boards fan Cavium ThunderX2 en AWS Graviton 2. De tafoege wizigingen detektearje LSE-stipe en skeakelje dynamysk de atomyske ymplemintaasje op basis fan har yn. Tidens testen makke it gebrûk fan LSE it mooglik om de prosessortiid te ferminderjen by it gearstallen fan de kernel mei 15%.
    • Prestaasjeoptimalisaasje is útfierd en de funksjonaliteit fan 'e toolkit is útwreide foar útfierbere bestannen yn it ELF-formaat.
      Stipe tafoege foar it cachen fan DWARF-debuggen-ynformaasje, problemen oplost yn 'e elfcopy / objcopy-hulpprogramma's, tafoege DW_AT_ranges-ferwurking,
      readelf ymplementearret de mooglikheid om de PROTMAX_DISABLE, STKGAP_DISABLE en WXNEEDED flaggen te ûntsiferjen, lykas Xen en GNU Build-ID.

  • Feiligens
    • Om de prestaasjes fan FreeBSD yn Azure-wolkomjouwings te ferbetterjen, wurdt wurk dien om stipe te jaan foar it HyperV Socket-meganisme, wêrtroch it gebrûk makket fan in socket-ynterface foar ynteraksje tusken it gastsysteem en de host-omjouwing sûnder in netwurk op te stellen.
    • Der wurdt wurke oan it leverjen fan werhellbere builds fan FreeBSD, wêrtroch it mooglik is om te soargjen dat de útfierbere bestannen fan 'e systeemkomponinten krekt binne kompilearre út 'e ferklearre boarnekoades en gjin bûtenlânske feroaringen befetsje.
    • De mooglikheid om it opnimmen fan ekstra beskermingsmeganismen (ASLR, PROT_MAX, stack gap, W + X mapping) te kontrolearjen op it nivo fan yndividuele prosessen is tafoege oan it elfctl-hulpprogramma
  • Opslach en triem systemen
    • Der wurdt wurke oan it útfieren fan de mooglikheid foar NFS om te operearjen oer in fersifere kommunikaasjekanaal basearre op TLS 1.3, ynstee fan Kerberos te brûken (sec = krb5p-modus), dy't beheind is ta it fersiferjen fan allinich RPC-berjochten en allinich yn software ymplementearre. De nije ymplemintaasje brûkt de kernel-levere TLS-stapel om hardware-fersnelling yn te skeakeljen. De NFS oer TLS-koade is hast klear foar testen, mar fereasket noch wurk om ûndertekene kliïntsertifikaten te stypjen en de kernel TLS-stapel oan te passen om NFS-gegevens te ferstjoeren (patches foar ûntfangen binne al klear).
  • Hardware stipe
    • Der wurdt wurke oan it tafoegjen fan stipe foar Sineeske x86 CPU Hygon basearre op AMD-technologyen;
    • As ûnderdiel fan CheriBSD, in foarke fan FreeBSD foar ûndersyksprosessor-arsjitektuer CHERI (Capability Hardware Enhanced RISC Instructions), stipe foar de ARM Morello-prosessor bliuwt ymplementearre, dy't it CHERI-ûnthâld tagongskontrôlesysteem sil stypje basearre op it Capsicum-projektbefeiligingsmodel. Morello chip binne fan plan release yn 2021. Wurk is op it stuit rjochte op it tafoegjen fan stipe foar it Arm Neoverse N1-platfoarm dat Morello machtet. In earste haven fan CheriBSD foar de RISC-V-arsjitektuer is presintearre. CheriBSD-ûntwikkeling giet troch foar it CHERI-referinsjeprototype basearre op de MIPS64-arsjitektuer.
    • FreeBSD-porting giet troch foar de 64-bit SoC NXP LS1046A basearre op de ARMv8 Cortex-A72-prosessor mei in yntegreare netwurkpakketferwurkingsmotor, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0. Op it stuit wurde bestjoerders QorIQ en LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI taret foar oerdracht nei de haad FreeBSD-komposysje.
    • De ena-bestjoerder is bywurke nei ferzje 2.1.1 mei stipe foar de twadde generaasje ENAv2 (Elastic Network Adapter) netwurkadapters dy't brûkt wurde yn 'e Elastic Compute Cloud (EC2) ynfrastruktuer om kommunikaasje te organisearjen tusken EC2-knooppunten mei snelheden fan maksimaal 25 Gb / s. In update nei ENA 2.2.0 wurdt taret.
    • Ferbetteringen oan 'e FreeBSD-poarte foar it powerpc64-platfoarm geane troch. De fokus leit op it leverjen fan kwaliteitsprestaasjes op systemen mei IBM POWER8- en POWER9-processors. Yn 'e rapportaazjeperioade waard FreeBSD-CURRENT oerdroegen om de LLVM / Clang 10.0-kompiler en lld-linker te brûken ynstee fan GCC. Standert brûke powerpc64-systemen de ELFv2 ABI en stipe foar de ELFv1 ABI is stopset. FreeBSD-STABLE hat noch gcc 4.2.1. Problemen mei virtio-, aacraid- en ixl-bestjoerders binne oplost. Op powerpc64-systemen is it mooglik QEMU út te fieren sûnder stipe foar Huge Pages.
    • It wurk bliuwt om stipe te ymplementearjen foar de RISC-V-arsjitektuer. Yn syn hjoeddeistige foarm bootet FreeBSD al mei súkses op it SiFive Hifive Unleashed board, wêrfoar bestjoerders binne taret
      UART, SPI en PRCI, stipet OpenSBI en SBI 0.2 firmware. Yn 'e rapportaazjeperioade waard wurk rjochte op migraasje fan GCC nei clang en lld.

  • Applikaasjes en haven systeem
    • De kolleksje fan FreeBSD-poarten hat de drompel fan 39 tûzen havens oerstutsen, it oantal net-sletten PR's is wat mear as 2400, wêrfan 640 PR's noch net binne sorteare. Yn 'e rapportaazjeperioade waarden 8146 wizigingen makke fan 173 ûntwikkelders. Fjouwer nije dielnimmers krigen committerrjochten (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Added USES = qca flagge en fuortsmite USES = zope flagge (fanwegen inkompatibiliteit mei Python 3). Der wurdt wurke oan it fuortheljen fan Python 2.7 fan 'e havenbeam - alle Python 2-basearre havens moatte wurde porteare nei Python 3 of wurde fuortsmiten. De pkg-pakketbehearder is bywurke om 1.13.2 frij te litten.
    • Bywurke graphics stack komponinten en xorg relatearre havens.
      De X.org-tsjinner is bywurke nei ferzje 1.20.8 (earder ferstjoerd op 'e 1.18-ôfdieling), wêrtroch FreeBSD standert koe brûke om de udev/evdev-backend te brûken foar it behanneljen fan ynfierapparaten. It Mesa-pakket is oerskeakele om standert de DRI3-útwreiding te brûken ynstee fan DRI2. Der wurdt wurke oan it hâlden fan de grafyske sjauffeurs, input-apparaatstapel, en drm-kmod-komponinten (in poarte dy't de wurking fan amdgpu, i915 en radeon DRM-modules mooglik makket, mei it linuxkpi-ramt foar kompatibiliteit mei de Direct Rendering Manager fan 'e Linux kernel) aktueel.

    • It KDE Plasma-buroblêd, KDE Frameworks, KDE-applikaasjes en Qt wurde bywurke en bywurke nei de lêste releases. In nije applikaasje kstars (stjer atlas) is tafoege oan de havens.
    • Der is wurk dien om regressive wizigingen te eliminearjen yn 'e xfwm4 finsterbehearder dy't ferskynde nei it bywurkjen fan Xfce nei ferzje 4.14 (bygelyks artefakten ferskynden by it dekorearjen fan finsters).
    • De wynpoarte is bywurke om Wine 5.0 frij te litten (earder waard 4.0.3 oanbean).
    • Begjin mei ferzje 1.14 hat de Go-taalkompiler offisjele stipe tafoege foar de ARM64-arsjitektuer foar FreeBSD 12.0.
    • OpenSSH op it basissysteem is bywurke om 7.9p1 frij te litten.
    • De sysctlmibinfo2-bibleteek is ymplementearre en pleatst yn havens (devel/libsysctlmibinfo2), it leverjen fan in API foar tagong ta de sysctl MIB en it oersetten fan sysctl-nammen yn objektidentifikatoren (OID's).
    • In ferdieling update is oanmakke NomadBSD 1.3.1, dat is in edysje fan FreeBSD oanpast foar gebrûk as in draachbere buroblêd bootber fan in USB-stasjon. De grafyske omjouwing is basearre op in finsterbehearder Iepen doaze. Wurdt brûkt foar mounting driuwfearren DSBMD (mounting CD9660, FAT, HFS+, NTFS, Ext2/3/4 wurdt stipe), om in draadloos netwurk te konfigurearjen - wifimgr, en om it folume te kontrolearjen - DSBMixer.
    • Begûn wurk oer it skriuwen fan folsleine dokumintaasje foar de finzenisomjouwingsmanager pot. Pot 0.11.0 wurdt taret foar frijlitting, dy't ark sil befetsje foar it behearen fan de netwurkstapel.

Boarne: opennet.ru

Add a comment