Kaks ja pool aastat pärast haru 12.x loomist esitati FreeBSD 13.0, mis on ette valmistatud arhitektuuridele amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 ja riscv64. Lisaks on valmis pildid virtualiseerimise süsteemide jaoks (QCOW2, VHD, VMDK, raw) ning pilvealade jaoks Amazon EC2, Google Compute Engine ja Vagrant.
Peamised uuendused:
- On üleminekut alustatud Linuxi ühtse ZFS failisüsteemi elluviimisele projekti OpenZFS poolt. Võimalused, mis on nüüd saadaval FreeBSD-s pärast OpenZFS-le üleminekut, hõlmavad laiemat kvotihaldussüsteemi, andmekogude krüpteerimist, eraldi plokkide jaotumise klasside (allocation classes) valikut, vektorprotsessorite instruktsioonide kasutamist RAIDZ ja kontrollsummade arvutamise kiirendamiseks, ZSTD kokkusurumisalgoritmi toetust, multihost (MMP, Multi Modifier Protection) režiimi, täiustatud käsurea tööriistade komplekti, paljude rikkeolukordade ja lukustustega seotud vigade parandamise.
- Port arhitektuurile ARM64 (AArch64) on viidud esimesesse toetuse tasemesse (Tier 1), mis tähendab, et seda hooldavad rühmad, kes vastutavad haavatavuste kõrvaldamise, väljalaskude ettevalmistamise ja portide hooldamise eest. Esimese taseme tugi hõlmab paigalduspakettide, binaarsete uuenduste ja valmis pakettide koostamist ning konkreetsete probleemide lahendamise ja ABI muutumatuse säilitamise kohustust kasutajakeskkonna ja tuuma jaoks (va mõned alamsüsteemid).
- Arhitektuur i386 on edastatud teise toetuse tasemesse (Tier 2), kus paigalduspakettide, binaarsete uuenduste ja valmis pakettide loomine jätkub, kuid konkreetsete probleemide lahendamist ei garanteerita. CPU tüüp (CPUTYPE) arhitektuurile i386 on vaikimisi muudetud 486-lt 686-le (soovi korral saab ise koostada versioone i486 ja i586 jaoks).
- Komponendid clang, lld, lldb, compiler-rt, llvm, libunwind ja libc++ on uuendatud versioonile 11.
- Arendustööd on ülemineku teel tsentraliseeritud allikakoodi haldamise süsteemist Subversion hajusale süsteemile Git.
- Baaskeskkonna rakenduste eemaldamine, mis levitatakse GPL-litsentsi all, on teostatud. Algtekstide puust on eemaldatud binutils 2.17 ja gcc 4.2.1; kõik toetatud arhitektuurid on viidud LLVM/clang tööriistadele. Lisatud BSD-litsentsi all levitatavad utiliidid grep ja dtc (Device Tree Compiler), mis asendasid GPL-litsentsi all olevad versioonid. Eemaldatud on automaatse mountimise protsess amd, mille funktsionaalsust rakendatakse nüüd autofs kaudu. Eemaldatud on utiliit ctm, mille asemel soovitatakse kasutada porti misc/ctm.
- Marshrutimise tõukesüsteem on ümber kirjutatud, et toetada nexthop objekte, mis salvestavad teavet, mida kasutatakse paketi saatmiseks soovitud sihtkohta. Lisatud on võimalus ühendada enda marsruutimisalgoritme. Lisatud on DPDK (Data Plane Development Kit) librte marsruutimisalgoritmid, mis võimaldavad optimeerida töö suuremate marsruudilauaga. Proxyarp päringute jaoks on kaasatud fib liides. Lisatud on võimalus muutuda fib kogust kaugelt sysctl net.fibs kaudu. Ajutiste marsruutide tugi IPv4 ja IPv6 jaoks (kehtivuse ajaga) on teostatud.
- Multipath-marshrutimise tugi on ümber kirjutatud ja tehtud skaleeritavamaks, kus otsimise aeg ei sõltu nimekirja suurusest (O(1)). Uus Multipath rakendus on nüüd seotud kerneliparameetriga ROUTE_MPATH, mis asendas RADIX_MPATH ja mis on vaikimisi sisse lülitatud. Multipath'i haldamiseks on pakutud sysctl net.route.multipath.
- Kerneli tasemel krüptograafiline raamistiku on ümber tehtud, et toetada kaasaegseid krüptograafia algoritme ja lihtsustada liidest krüptimise kasutamiseks draiverites ja teistes kerneli komponentides. Eemaldatud on aegunud algoritmid ARC4, Blowfish, CAST128, DES, MD5-HMAC ja Skipjack. IPsec-is ja Kerberoses on lõpetatud toetamine algoritmidele, mis on kuulutatud aegunuks RFC 8221 ja RFC 6649/8429 alusel, sealhulgas 3DES. Eemaldatud on varasemalt kuulutatud aegunud algoritmid diskikodeerimise alamsüsteemis geli ja cryptodev.
- Kerneli GENERIC on lisatud aesni ja armv8crypto draiverite tugi, et kiirendada geli põhinevat diskikodeerimise tööd AES-NI käskude abil amd64/i386 arhitektuuride jaoks ja AES-XTS ARM64 jaoks.
- Lisatud on Intel QuickAssist (QAT) krüptoakseleraatorite draiver ja ossl draiver, mis sisaldab kiirendatud krüpteerimisprotseduuride teostusi OpenSSL-is, optimeeritud assembleri koodi abil. ARMv8Crypto draiverisse on lisatud AES-XTS ja AES-GCM tugi, kasutades ARMv8 protsessorite vastavaid käske.
- Tsüklilisele tasandile FreeBSD tuumale on lisatud TLS (kTLS) teostus, mis võimaldab märkimisväärset jõudluse suurenemist TCP-socketite krüpteerimisel. Toetatakse TLS versioone 1.0 kuni 1.3. Krüpteerimiseks kasutatakse tuuma krüptodraivereid, mis toetavad AES-CBC või AES-GCM. kTLS kasutamiseks kasutajaruumi tasemel on vajalik OpenSSL uuesti üles ehitada WITH_OPENSSL_KTLS valikuga.
- Uus tüüpi võrgupuhvrid mbuf (võrguteabe puhver) on lisatud, mis võivad ühes puhveres esindada mitut füüsiliselt mittepeegeldatud mälu lehekülge, mis aitab suurendada sendfile(2) funktsiooni jõudlust, vähendades mbuf nimede suurust socket-puhvrites.
- TCP-steki on integreeritud pakettide saatmise intensiivsuse proportsionaalset vähendamist toestav algoritm (Proportional Rate Reduction, RFC 6937), mis võimaldab kiiremini taastada optimaalsed vooguparametrid pärast ajutisi andmeedastuse probleeme. PRR-i keelamiseks on ette nähtud sysctl net.inet.tcp.do_prr.
- Bhyve hüpervisiitori võimalusi on laiendatud: lisatud on failide jagamise tugi VirtIO-9p (VirtFS) kaudu. Teostatud on töösnapshotide korraldamine. virtuaalmasinate. Lisatud on PCI HDAudio seadmete tugi ja täiendavad seeriapordid COM3 ja COM4. Vananenud seadmemudelite bvmconsole ja bvmdebug tugi on eemaldatud. VNC klientidega suhtlemise stabiilsust on tõhustatud, sealhulgas macOS-i rakenduses "Screen Sharing".
- VirtIO draiveritesse on lisatud VirtIO V1 spetsiifikatsioonitoe tugi, mis on parandanud FreeBSD külalisüsteemide ühilduvust erinevate emulaatorite ja hüperviisoritega.
- Jail-ümbristele kinnitatud protsesside puhul on tagatud CPU otsimise seotud muundamine (päris protsessile eelnevalt määratud cpuset vahetatakse jail-i cpuseti ja seatud piirangute arvestamiseks).
- Lisatud on võimalus koostada FreeBSD põhiseid süsteeme teiste operatsioonisüsteemide keskkondades. Koostamise vajadus teistes operatsioonisüsteemides tuleneb soovist kasutada FreeBSD testimiseks Linuxi või macOSi põhiseid pideva integreerimise tööriistu.
- Pakutud on uus MMC/SD stack, mis põhineb CAM raamil ja võimaldab ühendada seadmeid SDIO (Secure Digital I/O) liidese kaudu. Näiteks kasutatakse SDIO-d WiFi ja Bluetooth moodulites paljude emaplaatide, sealhulgas Raspberry Pi 3, jaoks. Uus stack võimaldab kasutada CAM liidest SD-käskude edastamiseks kasutajaruumi rakendustest, mis võimaldab luua seadme draivereid, mis töötavad kasutaja tasemel.
- Parandatud on Linuxiga ühilduvust tagava kihtide toimivust. DTS-failid (Device Tree Sources) on sünkroonitud Linuxi tuumaga 5.8.
- Lisatud on NFSv4.2 (RFC-7862) toetus ja rakendatud on võimalus kasutada NFS-i krüpteeritud suhtluskanali kaudu TLS 1.3 baasil, asendades Kerberose (sec=krb5p režiim), mis piirdus ainult RPC-sõnumite krüpteerimisega ja viidi ellu ainult tarkvaras.
- Eemaldatud on vananenud GDB tõrkejõud, mis varem oli installitud kataloogi /usr/libexec ja mida kasutati crashinfo utiliidis. Senise eelinstallitud GDB asemel soovitatakse saada üksikasjaliku teabe saamiseks kokku uus GDB versioon sadamatest või paketidest. Protsesside tõrgete tõrje tugi procfs kaudu on lõpetatud. Lisatud on netgdb draiver, mis võimaldab juurdepääsu tuuma tõrkeotsijale üle võrgu.
- Libc-st on eemaldatud ebaturvaline funktsioon gets (alates C11 standardist on see funktsioon spetsiifikatsioonist välja jäetud) ja kohandatud on sadamaid, mis seda funktsiooni veel kasutavad. Eemaldatud on funktsioonid cap_random (kasutage getrandom).
- Lisatud on uus süsteemikutsung copy_file_range, mis on ühilduv Linuxi tuuma rakendusega ja võimaldab kiirendada andmete kopeerimist ühe faili seest teise, võimaldades operatsiooni teostada ainult tuuma tasemel ilma andmete eelneva lugemiseta protsessi mälu. Süsteemikutsungit kasutatakse ka serveris NFSv4.2 kohalike kopeerimise toimingute täitmiseks serveris (ilma kliendile edastamata).
- POSIX AIO asünkroonse sisendi/väljaande mehhanismis on esitatud vektoreeritud funktsioonide tugi. Eelkõige on lisatud süsteemikutsed aio_writev ja aio_readv, mis võimaldavad ellu viia vektoreeritud vasteid funktsioonidele aio_read ja aio_write.
- Kasutajaruumi komponentide tugi a.out täitevfailide formaadi jaoks arvutisüsteemides i386 on lõpetatud. Tööriist elf2aout on eemaldatud.
- Ping ja ping6 tööriistad on ühendatud. Pingi on lisatud kvaliteedi teenuse (QoS) parameetrite seadistamise võimalus IP DSCP ja Ethernet PCP kaudu.
- Tööriistas freebsd-update on tagatud failide allalaadimise edenemise kuvamine ning lisatud käsud updatesready ja showconfig, et kontrollida värskenduste olemasolu ja näidata konfiguratsiooni.
- On tehtud suur töö NUMA (Non-Uniform Memory Access) süsteemide toe parendamiseks.
- Graafikadriverid ja graafikaalased komponendid on uuendatud. Probleemid Waylandi protokoolil põhinevate keskkondade tööga on lahendatud.
- On lisatud tagasihoidliku juhtimise alamsüsteem, et luua taustavalguse juhtimiseks draivereid. Lisatud on pwm-backlight draiver Pinebooki ja Pinebook Pro taustavalguse juhtimiseks.
- SCTP protokolli tugi on viidud eraldi moodulisse sctp.ko, mis on vaikimisi GENERIC tuumas keelatud.
- Sisendi seadmete jaoks on pakutud uus usbhid draiver, mis kasutab HID raamistikku USB HID seadmetega töötamiseks, asendades draiverid ukbd, ums ja uhid.
- cpufreq draiveris on rakendatud Intel Speed Shift tehnoloogia toetus.
- On lisatud tugi uutele 64-bitiste CPU ARMv8 baasil põhinevatele plaatidele, sealhulgas SoC Broadcom BCM5871X ja NXP LS1046A.
- AMD64 arhitektuuri jaoks on rakendatud 57-bitiste virtuaalsete aadresside (LA57) tugi. On lisatud Hiina x86 CPU Hygon Dhyana, mis põhineb AMD tehnoloogial.
- Powerpc64 arhitektuuri sadam on viidud LLVM ja ABI ELFv2 (varasemate FreeBSD versioonide binaarfailid ei tohi FreeBSD 13-s kasutada). Powerpc64 jaoks on portitud draiverid virtio, ixl, mrsas, aacraid, cpld.
- Eemaldatud on draiverid vananenud Etherneti adapteritele:
- bm(4) BMAC
- cs(4) Crystal Semiconductor CS8900/CS8920
- de(4) DEC DC21x4x
- ed(4) NE-2000 ja WD-80×3
- ep(4) 3Com Etherlink III (3c5x9) ISA
- ex(4) Intel EtherExpress Pro/10 ja Pro/10+
- fe(4) Fujitsu MB86960A/MB86965A
- hme(4) Sun Microelectronics STP2002-STQ
- pcn(4) AMD PCnet
- sf(4) Starfire
- sn(4) SMC 91Cxx
- tl(4) Texas Instruments ThunderLAN
- tx(4) SMC 83c17x
- txp(4) 3Com 3XP Typhoon/Sidewinder (3CR990)
- vx(4) 3Com EtherLink III / Fast EtherLink III (3c59x) PCI
- wb(4) Winbond W89C840F
- xe(4) Xircom PCMCIA
- Eemaldatud on draiverid ubsec (kryptoakseleraatorid Broadcom BCM58xx), ufm (USB interfaašiga FM-dünerid), ctau (Cronix Tau), cx (Cronix Sigma) ja vpo (paralleelport SCSI).
Allikas: opennet.ru
