FreeBSD-ontwikkelingsverslag vir die eerste kwartaal van 2020

gepubliseer verslag oor die ontwikkeling van die FreeBSD-projek van Januarie tot Maart 2020. Onder die veranderinge kan ons let op:

  • Algemene en stelselvrae
    • Het die GCC-samestellerstel van die FreeBSD-CURRENT-bronboom verwyder, sowel as die ongebruikte gperf-, gcov- en gtc (devicetree-samesteller) nutsprogramme. Alle platforms wat nie Clang ondersteun nie, is oorgeskakel na die gebruik van eksterne bounutsgoed wat vanaf poorte geïnstalleer is. Die basisstelsel het 'n verouderde vrystelling van GCC 4.2.1 gestuur, en integrasie van nuwer weergawes was nie moontlik nie as gevolg van die oorgang van 4.2.2 na die GPLv3-lisensie, wat as onvanpas vir die FreeBSD-basiskomponente beskou is. Huidige vrystellings van GCC, insluitend GCC 9, kan steeds vanaf pakkette en poorte geïnstalleer word.
    • Die Linux-omgewing-emulasie-infrastruktuur (Linuxulator) het ondersteuning bygevoeg vir die stuurlêerstelseloproep, TCP_CORK-modus (vereis vir nginx), en die MAP_32BIT-vlag (los die probleem op met die bekendstelling van pakkette met Mono vanaf Ubuntu Bionic). Probleme met DNS-resolusie wanneer glibc nuwer as 2.30 gebruik word (byvoorbeeld vanaf CentOS 8) is opgelos.
      Die deurlopende integrasie-infrastruktuur bied die vermoë om LTP (Linux Testing Project)-take met Linuxulator uit te voer om verbeterings aan die kode te toets om Linux te ondersteun. Ongeveer 400 toetse misluk en vereis regstelling (sommige foute word deur vals positiewes veroorsaak, sommige vereis onbenullige regstellings, maar daar is ander wat ondersteuning vereis vir nuwe stelseloproepe om reg te stel). Werk is gedoen om die Linuxulator-kode skoon te maak en ontfouting te vereenvoudig. Pleisters met ondersteuning vir uitgebreide eienskappe en die fexecve-stelseloproep is voorberei, maar nog nie hersien nie.

    • Vergaderings van die werkgroep wat geskep is om die migrasie van bronkodes van die gesentraliseerde bronbeheerstelsel Subversion na die gedesentraliseerde stelsel Git uit te voer, gaan voort. 'n Verslag met voorstelle vir migrasie is in die proses van voorbereiding.
    • В rtld (looptydskakelaar) verbeterde direkte uitvoeringsmodus ("/libexec/ld-elf.so.1 {pad} {argumente}").
    • Die projek vir fuzzing-toetsing van die FreeBSD-kern deur die syzkaller-stelsel te gebruik, ontwikkel steeds. Gedurende die verslagtydperk is probleme in die netwerkstapel en -kode vir die werk met lêerbeskrywertabelle wat met syzkaller geïdentifiseer is, uitgeskakel. Na die foutdiagnose is veranderinge by die SCTP-stapel gevoeg om ontfouting makliker te maak. Reëls by die stres2-stel gevoeg om moontlike regressies te identifiseer. Bygevoeg ondersteuning vir fuzz toetsing van nuwe stelsel oproepe, insluitend copy_file_range(), __realpathat() en Capsicum substelsel oproepe. Werk gaan voort om die Linux-emulasielaag met fuzz-toetsing te bedek. Ons het foute wat in die jongste Coverity Scan-verslae opgemerk is, ontleed en uitgeskakel.
    • Die deurlopende integrasiestelsel het oorgeskakel na die uitvoering van alle hooftaktoetse slegs met behulp van clang/lld. Wanneer daar vir RISC-V getoets word, word die vorming van 'n volledige skyfbeeld verseker vir die uitvoer van toetse in QEMU met behulp van OpenSBI. Bygevoeg nuwe take vir die toets van beelde en powerpc64 virtuele masjiene (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Werk is aan die gang om die Kyua-toetssuite van die poorte (devel/kyua) na die basisstelsel oor te dra om probleme op te los (pakkette word baie stadig geïnstalleer) wat ontstaan ​​wanneer Kyua op nuwe argitekture gebruik word, waarvoor ontwikkeling uitgevoer word met behulp van 'n emulator of FPGA. Integrasie in die basisstelsel sal die toetsing van ingebedde platforms en koppelvlak met deurlopende integrasiestelsels aansienlik vereenvoudig.
    • 'n Projek is van stapel gestuur om die werkverrigting van die netwerkbrugbestuurder te optimaliseer as_brug, wat 'n enkele mutex gebruik om interne data te sluit, wat nie toelaat dat die verlangde werkverrigting op stelsels met 'n groot aantal tronkomgewings of virtuele masjiene in een netwerk verenig word nie. Op hierdie stadium is toetse by die kode gevoeg om te verhoed dat regressies plaasvind tydens die modernisering van die werk met slotte. Die moontlikheid om ConcurrencyKit te gebruik om data-oordraghanteerders te paralleliseer (bridge_input(), bridge_output(), bridge_forward(), ...) word oorweeg.
    • Het 'n nuwe sigfastblock-stelseloproep bygevoeg om 'n draad toe te laat om 'n blok geheue vir 'n vinnige seinhanteerder te spesifiseer om die werkverrigting van uitsonderingshanteerders te verbeter.
    • Die kern voeg ondersteuning by vir LSE (Large System Extension) atoominstruksies wat deur ARMv8.1-stelsels ondersteun word. Hierdie instruksies word vereis om werkverrigting te verbeter wanneer dit op Cavium ThunderX2- en AWS Graviton 2-borde uitgevoer word. Die bygevoegde veranderinge bespeur LSE-ondersteuning en aktiveer die atoomimplementering op grond daarvan dinamies. Tydens toetsing het die gebruik van LSE dit moontlik gemaak om die verwerkertyd wat spandeer word tydens die samestelling van die kern met 15% te verminder.
    • Prestasie-optimalisering is uitgevoer en die funksionaliteit van die gereedskapstel is uitgebrei vir uitvoerbare lêers in die ELF-formaat.
      Bygevoeg ondersteuning vir die kas van DWARF ontfouting inligting, opgelos probleme in die elfcopy/objcopy nutsprogramme, bygevoeg DW_AT_ranges verwerking,
      readelf implementeer die vermoë om die PROTMAX_DISABLE, STKGAP_DISABLE en WXNEEDED vlae, sowel as Xen en GNU Build-ID, te dekodeer.

  • sekuriteit
    • Om die werkverrigting van FreeBSD in Azure-wolkomgewings te verbeter, word daar gewerk om ondersteuning te bied vir die HyperV Socket-meganisme, wat die gebruik van 'n socket-koppelvlak vir interaksie tussen die gasstelsel en die gasheeromgewing moontlik maak sonder om 'n netwerk op te stel.
    • Werk is aan die gang om herhaalbare weergawes van FreeBSD te verskaf, wat dit moontlik maak om te verseker dat die uitvoerbare lêers van die stelselkomponente presies saamgestel is uit die verklaarde bronkodes en nie vreemde veranderinge bevat nie.
    • Die vermoë om die insluiting van bykomende beskermingsmeganismes (ASLR, PROT_MAX, stapelgaping, W+X-kartering) op die vlak van individuele prosesse te beheer, is by die elfctl-hulpmiddel gevoeg
  • Berging en lêerstelsels
    • Werk is aan die gang om die vermoë vir NFS te implementeer om oor 'n geënkripteerde kommunikasiekanaal gebaseer op TLS 1.3 te werk, in plaas daarvan om Kerberos te gebruik (sek=krb5p-modus), wat beperk is tot die enkripteer van slegs RPC-boodskappe en slegs in sagteware geïmplementeer word. Die nuwe implementering gebruik die kern-voorsiene TLS-stapel om hardewareversnelling moontlik te maak. Die NFS oor TLS-kode is amper gereed vir toetsing, maar vereis steeds werk om ondertekende kliëntsertifikate te ondersteun en die kern TLS-stapel aan te pas om NFS-data te stuur (patches vir ontvangs is reeds gereed).
  • Hardeware ondersteuning
    • Werk is aan die gang om ondersteuning by te voeg vir Chinese x86 CPU Hygon gebaseer op AMD tegnologie;
    • As deel van CheriBSD, 'n vurk van FreeBSD vir navorsingsverwerker-argitektuur DARLING (Capability Hardware Enhanced RISC Instructions), ondersteuning vir die ARM Morello-verwerker word steeds geïmplementeer, wat die CHERI-geheuetoegangsbeheerstelsel gebaseer op die Capsicum-projeksekuriteitsmodel sal ondersteun. Morello-skyfie beplan vrystelling in 2021. Werk is tans gefokus op die toevoeging van ondersteuning vir die Arm Neoverse N1-platform wat Morello aandryf. 'n Aanvanklike poort van CheriBSD vir die RISC-V-argitektuur is aangebied. CheriBSD-ontwikkeling gaan voort vir die CHERI-verwysingsprototipe gebaseer op die MIPS64-argitektuur.
    • FreeBSD-oordrag gaan voort vir die 64-bis SoC NXP LS1046A gebaseer op die ARMv8 Cortex-A72 verwerker met 'n geïntegreerde netwerkpakketverwerkingversnellingsenjin, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 en USB 3.0. Tans word bestuurders QorIQ en LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI voorberei vir oordrag na die hoof FreeBSD-samestelling.
    • Die ena-bestuurder is opgedateer na weergawe 2.1.1 met ondersteuning vir die tweede generasie ENAv2 (Elastic Network Adapter) netwerkadapters wat in die Elastic Compute Cloud (EC2) infrastruktuur gebruik word om kommunikasie tussen EC2 nodusse te organiseer teen snelhede van tot 25 Gb/ s. 'n Opdatering vir ENA 2.2.0 word voorberei.
    • Verbeterings aan die FreeBSD-poort vir die powerpc64-platform gaan voort. Die fokus is op die verskaffing van kwaliteit prestasie op stelsels met IBM POWER8 en POWER9 verwerkers. Gedurende die verslagtydperk is FreeBSD-CURRENT oorgedra om die LLVM/Clang 10.0-samesteller en lld-skakelaar in plaas van GCC te gebruik. Powerpc64-stelsels gebruik standaard die ELFv2 ABI en ondersteuning vir die ELFv1 ABI is gestaak. FreeBSD-STABLE het steeds gcc 4.2.1. Probleme met virtio-, aacraid- en ixl-drywers is opgelos. Op powerpc64-stelsels is dit moontlik om QEMU te laat loop sonder Huge Pages-ondersteuning.
    • Werk gaan voort om ondersteuning vir die RISC-V-argitektuur te implementeer. In sy huidige vorm begin FreeBSD reeds suksesvol op die SiFive Hifive Unleashed-bord, waarvoor bestuurders voorberei is
      UART, SPI en PRCI, ondersteun OpenSBI en SBI 0.2-firmware. Gedurende die verslagtydperk is werk gefokus op migrasie van GCC na clang en lld.

  • Toepassings en hawens stelsel
    • Die FreeBSD-poortversameling het die drempel van 39 duisend poorte oorskry, die aantal ongeslote PR's oorskry effens 2400, waarvan 640 PR's nog nie gesorteer is nie. Gedurende die verslagtydperk is 8146 173 veranderinge van 3 ontwikkelaars aangebring. Vier nuwe deelnemers het committer-regte ontvang (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Het USES=qca-vlag bygevoeg en USES=zope-vlag verwyder (as gevolg van onversoenbaarheid met Python 2.7). Werk is aan die gang om Python 2 uit die poortboom te verwyder - alle Python 3-gebaseerde poorte moet na Python 1.13.2 oorgedra word of sal verwyder word. Die pkg-pakketbestuurder is opgedateer om XNUMX vry te stel.
    • Opgedateerde grafiese stapelkomponente en xorg-verwante poorte.
      Die X.org-bediener is opgedateer na weergawe 1.20.8 (voorheen gestuur op die 1.18-tak), wat FreeBSD toegelaat het om as verstek die udev/evdev-agtergrond te gebruik vir die hantering van invoertoestelle. Die Mesa-pakket is oorgeskakel om die DRI3-uitbreiding in plaas van DRI2 by verstek te gebruik. Werk is aan die gang om die grafiese drywers, invoertoestelstapel en drm-kmod-komponente te hou ('n poort wat die werking van amdgpu-, i915- en radeon DRM-modules moontlik maak, met behulp van die linuxkpi-raamwerk vir verenigbaarheid met die Direct Rendering Manager van die Linux-kern) op datum.

    • Die KDE Plasma-lessenaar, KDE-raamwerke, KDE-toepassings en Qt word op datum gehou en bygewerk na die jongste vrystellings. 'n Nuwe toepassing kstars (ster-atlas) is by die poorte gevoeg.
    • Werk is gedoen om regressiewe veranderinge in die xfwm4-vensterbestuurder wat verskyn het na die opdatering van Xfce na weergawe 4.14 uit te skakel (byvoorbeeld, artefakte het verskyn wanneer vensters versier is).
    • Die Wine port is opgedateer om Wine 5.0 vry te stel (voorheen 4.0.3 is aangebied).
    • Begin met weergawe 1.14 het die Go-taalsamesteller amptelike ondersteuning bygevoeg vir die ARM64-argitektuur vir FreeBSD 12.0.
    • OpenSSH op die basisstelsel is opgedateer om 7.9p1 vry te stel.
    • Die sysctlmibinfo2-biblioteek is geïmplementeer en in poorte geplaas (devel/libsysctlmibinfo2), wat 'n API bied vir toegang tot die sysctl MIB en om sysctl-name in objekidentifiseerders (OID's) te vertaal.
    • 'n Verspreidingsopdatering is gegenereer NomadBSD 1.3.1, wat 'n uitgawe van FreeBSD is wat aangepas is vir gebruik as 'n draagbare lessenaar wat vanaf 'n USB-stasie selflaaibaar is. Die grafiese omgewing is gebaseer op 'n vensterbestuurder Openbox. Word gebruik om aandrywers te monteer DSBMD (montering van CD9660, FAT, HFS+, NTFS, Ext2/3/4 word ondersteun), om 'n draadlose netwerk op te stel - wifimgr, en om die volume te beheer - DSBMixer.
    • Begin werk oor die skryf van volledige dokumentasie vir die tronkomgewingsbestuurder pot. Pot 0.11.0 word voorberei vir vrystelling, wat gereedskap sal insluit vir die bestuur van die netwerkstapel.

Bron: opennet.ru

Voeg 'n opmerking