Pas dy vjet e gjysmë pas formimit të degës 12.x, është prezantuar lëshimi FreeBSD 13.0, i cili është përgatitur për arkitekturat amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 dhe riscv64. Shtesë, janë formuar imazhe për sistemet e virtualizimit (QCOW2, VHD, VMDK, raw) dhe ambientet cloud Amazon EC2, Google Compute Engine dhe Vagrant.
TĂ« rejat kryesore:
- ĂshtĂ« realizuar kalimi nĂ« implementimin e unifikuar tĂ« sistemit tĂ« skedarĂ«ve ZFS nga projekti OpenZFS. NdĂ«r veçoritĂ« qĂ« u bĂ«nĂ« tĂ« aksesueshme nĂ« FreeBSD pas kalimit nĂ« OpenZFS: sistemi i zgjeruar i kuotave, enkriptimi i grupeve tĂ« tĂ« dhĂ«nave, pĂ«rzgjedhja e veçantĂ« e klasave tĂ« alokimit tĂ« bllokimeve, pĂ«rdorimi i instruksioneve pĂ«rpunuesve vektorĂ« pĂ«r pĂ«rshpejtimin e implementimit RAIDZ dhe llogaritjes sĂ« kontrollit tĂ« shumave, mbĂ«shtetje pĂ«r algoritmin e kompresimit ZSTD, mĂ«nyra multihost (MMP, Multi Modifier Protection), instrumentaria e pĂ«rmirĂ«suar e linjĂ«s sĂ« komandave, rregullimi i shumĂ« gabimeve tĂ« lidhura me gjendjen e garĂ«s dhe bllokimet.
- Porti për arkitekturën ARM64 (AArch64) është kaluar në nivelin e parë të mbështetjes (Tier 1), i cili mbulohet nga ekipet që përgjigjen për eliminimin e dobësive, përgatitjen e lëshimeve dhe mbështetje për portet. Nivelin e parë të mbështetjes nënkupton formimin e grumbujve instalues, përditësimeve binarëve dhe paketave të gatshme, si dhe ofrimin e garancive për zgjidhjen e problemeve specifike dhe ruajtjen e qëndrueshmërisë ABI për mjedisin dhe bërthamën e përdoruesit (përveç disa nën-sistemeve).
- Arkitektura i386 është kaluar në nivelin e dytë të mbështetjes së platformave (Tier 2), ku do të vazhdojë formimi i grumbujve instalues, përditësimeve binarëve dhe paketave të gatshme, por nuk garanton zgjidhjen e problemeve specifike. Lloji i CPU-s (CPUTYPE) për arkitekturën i386 është ndryshuar nga 486 në 686 si default (nëse dëshirohet, grumbujt për i486 dhe i586 mund të formohen në mënyrë autonome).
- Komponentët clang, lld, lldb, compiler-rt, llvm, libunwind dhe libc++ janë përditësuar në versionin 11.
- Zhvillimi është kaluar nga sistemi i centralizuar i menaxhimit të kodit burimor Subversion në sistemin e decentralizuar Git.
- ĂshtĂ« bĂ«rĂ« pastrimi i sistemit tĂ« bazĂ«s nga aplikacionet e shpĂ«rndara nĂ«n licencĂ«n GPL. Nga pemĂ«t e teksteve burimore Ă«shtĂ« hequr binutils 2.17 dhe gcc 4.2.1, tĂ« gjitha arkitekturat e mbĂ«shtetura janĂ« transferuar nĂ« mjetin LLVM/clang. JanĂ« pĂ«rfshirĂ« variante tĂ« shpĂ«rndara nĂ«n licencĂ«n BSD tĂ« utiliteteve grep dhe dtc (Device Tree Compiler), tĂ« cilat zĂ«vendĂ«suan versionet nĂ«n licencĂ«n GPL. ĂshtĂ« hequr procesi i montimit automatik amd, funksionaliteti i tĂ« cilit tani realizohet pĂ«rmes autofs. ĂshtĂ« hequr utilitari ctm, pĂ«r tĂ« cilin rekomandohet tĂ« pĂ«rdoret porta misc/ctm.
- ĂshtĂ« shkruar nga e para stack-u i routing-ut, ku Ă«shtĂ« duke u mbĂ«shtetur objekti nexthop, qĂ« ruan tĂ« dhĂ«na mbi gjendjen e pĂ«rdorur pĂ«r tĂ« dĂ«rguar paketĂ«n nĂ« destinacionin e dĂ«shiruar. ĂshtĂ« shtuar mundĂ«sia e lidhjes sĂ« algoritmeve tĂ« veta tĂ« kĂ«rkimit tĂ« rrugĂ«ve. JanĂ« shtuar algoritme tĂ« kĂ«rkimit tĂ« rrugĂ«ve nga DPDK (Data Plane Development Kit) librte, qĂ« lejojnĂ« optimizimin e punĂ«s me tabela shumĂ« tĂ« mĂ«dha tĂ« routing-ut. PĂ«r kĂ«rkesat proxyarp Ă«shtĂ« angazhuar ndĂ«rfaqja fib. ĂshtĂ« shtuar mundĂ«sia e ndryshimit tĂ« numrit fib nĂ« ecje pĂ«rmes sysctl net.fibs. ĂshtĂ« realizuar mbĂ«shtetje pĂ«r rrugĂ«t e pĂ«rkohshme pĂ«r IPv4 dhe IPv6 (me periudhĂ« jetese tĂ« caktuar).
- Mbështetja për Routing-in Multi-path është rikrijuar dhe bërë më të shkallëzuar, ku koha e kërkimit nuk varet nga madhësia e listës (O(1)). Implementimi i ri i Multi-path tani është i lidhur me parametrin e bërthamës ROUTE_MPATH, i cili zëvendësoi RADIX_MPATH dhe është përfshirë si e parazgjedhur. Për menaxhimin e Multi-path është propozuar sysctl net.route.multipath.
- Framework-u kriptografik i implementuar në nivelin e bërthamës është riaranzhuar dhe tani mbështet algoritmet kriptografike moderne dhe ka thjeshtësuar ndërfaqen për përdorimin e enkriptimit në drejtorë dhe komponentët e tjerë të bërthamës. Janë hequr algoritmet e vjetra ARC4, Blowfish, CAST128, DES, MD5-HMAC dhe Skipjack. Në IPsec dhe Kerberos është ndalur mbështetja për algoritmet e shpallura të vjetra në RFC 8221 dhe RFC 6649/8429, përfshirë 3DES. Janë hequr algoritmet e shpallura të vjetra në nën-sistemin e enkriptimit të disqeve geli dhe cryptodev.
- Drejtori GENERIC përfshin mbështetje për driverët aesni dhe armv8crypto për të përshpejtuar enkriptimin e disqeve mbi bazën e geli me ndihmën e instruksioneve AES-NI për arkitekturat amd64/i386 dhe AES-XTS për ARM64.
- Shtojmë driver-in qat për akseleratorët kriptografik Intel QuickAssist (QAT) dhe driver-in ossl me implementimin e procedurave të programit të shpejtuara për enkriptim nga OpenSSL, të optimizuara me kodin në assembler. Në driver-in armv8crypto është shtuar mbështetje për AES-XTS dhe AES-GCM duke përdorur instrukcionet përkatëse të procesorëve ARMv8.
- Shtuar implementimi i TLS (kTLS), që punon në nivelin e bërthamës FreeBSD, i cili ofron një rritje të konsiderueshme të performancës së enkriptimit për TCP-sockets. Mbështeten versionet TLS nga 1.0 në 1.3. Për enkriptimin përdoren kripto-driverët e bërthamës me mbështetje për AES-CBC ose AES-GCM. Për të përdorur kTLS në hapësirën e përdoruesit kërkohet rikonstruktimi i OpenSSL me opsionin WITH_OPENSSL_KTLS.
- Shtuar një lloj të ri të bufferëve të rrjetit mbuf (network data buffer), i cili mund të përfaqësojë në një buffer disa faqe fizike të pasqyruara të memories, duke lejuar kështu një rritje të performancës së thirrjes sendfile(2) përmes reduktimit të madhësisë së listave mbuf në bufferat e socket-it.
- Në TCP-stack është integruar mbështetje për algoritmin e reduktimit të proporcionit të intensitetit të dërgesës së paketave (Proportional Rate Reduction, RFC 6937), që lejon rikuperimin më të shpejtë të parametrave optimalë të fluxit pas problemeve të përkohshme me transmetimin e të dhënave. Për të çaktivizuar PRR ekziston sysctl net.inet.tcp.do_prr.
- Zgjeruar mundësitë e hiper-vizorëve Bhyve: Shtuar mbështetje për ndarjen e skedarëve përmes VirtIO-9p (VirtFS). Realizuar mundësia e punës me snapshots. makinave virtualeShtuar mbështetje për pajisjet PCI HDAudio dhe portet seriale shtesë COM3 dhe COM4. Deleted pajisjet e vjetra bvmconsole dhe bvmdebug. Rritur stabilitetin e punës me klientët VNC, duke përfshirë aplikimin macOS "Screen Sharing."
- Në driverët e VirtIO është shtuar mbështetje për specifikimin e VirtIO V1, që përmirëson pajtueshmërinë e sistemeve bujtëse me FreeBSD me emulatorë dhe hiper-vizorë të ndryshëm.
- Për proceset e lidhura në mjediset jail, është siguruar konvertimi i lidhjeve në CPU (originalisht e lidhur me procesin cpuset do të zëvendësohet duke marrë parasysh cpuset e jail-it dhe kufizimet e vendosura).
- Shtuar mundësinë e ndërtimit të sistemit të bazës FreeBSD në mjedise të bazuara në sisteme të tjera operative. Nevoja për ndërtim në sisteme të tjera operative ka të bëjë me dëshirën për të përdorur mjete të integrimit të vazhdueshëm për testimin e FreeBSD, të lidhura me Linux ose macOS.
- Propozuar një stek të ri MMC/SD, i bazuar në kornizën CAM dhe që lejon lidhjen e pajisjeve me ndërfaqen SDIO (Secure Digital I/O). Për shembull, SDIO përdoret në modulet WiFi dhe Bluetooth për shumë pllakata, si Raspberry Pi 3. Steka e re gjithashtu lejon përdorimin e ndërfaqes CAM për dërgimin e komandave SD nga aplikacionet në hapësirën përdoruese, çka krijon mundësinë për të krijuar drejtues pajisjesh që funksionojnë në nivelin e përdoruesit.
- Përmirësuar funksionimi i shtresës përkompatibilitetin me Linux. Skedarët DTS (Device Tree Sources) janë sinkronizuar me kernelin Linux 5.8.
- Shtuar mbështetje për NFSv4.2 (RFC-7862) dhe realizuar mundësinë e funksionimit të NFS mbi një kanal komunikimi të koduar mbi TLS 1.3, në vend të përdorimit të Kerberos (modaliteti sec=krb5p), i cili ishte i kufizuar në kodimin vetëm të mesazheve RPC dhe ishte realizuar vetëm softuerikisht.
- Hequr versionin e vjetruar tĂ« debugger-it GDB, i cili ishte vendosur mĂ« parĂ« nĂ« katalogun /usr/libexec dhe pĂ«rdorej nĂ« utilitarin crashinfo. NĂ« vend tĂ« GDB tĂ« paracaktuar, pĂ«r tĂ« marrĂ« informacion tĂ« detajuar mbi arsyet e dĂ«shtimit tani ofrohet instalimi i njĂ« versioni tĂ« ri GDB nga portet ose paketat. ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetja pĂ«r depurimin e proceseve pĂ«rmes procfs. Shtuar drejtuesin netgdb, i cili lejon aksesin nĂ« debugger-in e kernelit pĂ«rmes rrjetit.
- Nga libc, është hequr funksioni i pasigurt gets (që nga standardi C11, ky funksion është përjashtuar nga specifikimi) dhe është bërë korrigjimi i porteve që ende përdorin këtë funksion. Hequr funksionet cap_random (duhet të përdoret getrandom).
- Shtuar një thirrje të re sistemike copy_file_range, e cila është e pajtueshme me realizimin në kernelin Linux dhe lejon përshpejtimin e kopjimit të të dhënave nga një skedar në tjetrin, përmes realizimit të operacionit vetëm në anën e kernelit pa e lexuar paraprakisht të dhënat në memorien e procesit. Thirrja sistemike gjithashtu përdoret në serveri NFSv4.2 për ekzekutimin lokal të operacioneve të kopjimit në server (pa e dërguar te klienti).
- Në mekanizmin e hyrjes/shkarkimit asinkron POSIX AIO është prezantuar mbështetje për funksionet e vektorizuar. Në veçanti, janë shtuar thirrjet sistemike aio_writev dhe aio_readv, që lejojnë implementimin e ekuivalenteve vektorizuara të funksioneve aio_read dhe aio_write.
- Mbështetja për komponentët e hapësirës së përdoruesit për formatin e skedarëve ekzekutues a.out në sistemet me arkitekturë i386 është ndaluar. U heq utilita elf2aout.
- Utilitat ping dhe ping6 janë bashkuar. Në ping është shtuar mundësia për të vendosur parametrat e cilësisë së shërbimit (QoS) përmes IP DSCP dhe Ethernet PCP.
- Në utilitarin freebsd-update është siguruar shfaqja e progresit të shkarkimit të skedarëve dhe janë shtuar komandat updatesready dhe showconfig për të kontrolluar nëse ka përditësime dhe për të treguar konfigurimin.
- ĂshtĂ« bĂ«rĂ« njĂ« punĂ« e madhe pĂ«r tĂ« pĂ«rmirĂ«suar mbĂ«shtetje pĂ«r sistemet NUMA (Non-Uniform Memory Access).
- Drejtuesit grafikë dhe komponentët e grumbullit grafik janë përditësuar. Janë zgjidhur problemet me funksionimin e mjediseve në bazë të protokollit Wayland.
- ĂshtĂ« shtuar nĂ«n sistemi backlight pĂ«r krijimin e drejtuesve tĂ« menaxhimit tĂ« ndriçimit. ĂshtĂ« shtuar drejtuesi pwm-backlight pĂ«r menaxhimin e ndriçimit tĂ« Pinebook dhe Pinebook Pro.
- Mbështetje për protokollin SCTP është transferuar në një modul të veçantë sctp.ko, i cili është i çaktivizuar si parazgjedhje në bërthamën GENERIC.
- Për pajisjet e hyrjes është propozuar një drejtues i ri usbhid, që përdor kornizën hid për punën me pajisjet USB HID, në vend të drejtuesve ukbd, ums dhe uhid.
- Në driverin cpufreq është realizuar mbështetje për teknologjinë Intel Speed Shift.
- është shtuar mbështetje për pllakat e reja që bazohen në CPU 64-bit ARMv8, duke përfshirë SoC Broadcom BCM5871X dhe NXP LS1046A.
- PĂ«r arkitekturĂ«n AMD64 Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r adresat virtuale 57-bit (LA57). ĂshtĂ« shtuar mbĂ«shtetje pĂ«r CPU x86 kineze Hygon Dhyana qĂ« bazohen nĂ« teknologjitĂ« AMD.
- Porti për arkitekturën powerpc64 është transferuar në përdorimin e LLVM dhe ABI ELFv2 (skedarët binarë nga versionet e kaluara FreeBSD nuk do të mund të përdoren në FreeBSD 13). Për powerpc64 janë portuar drejtuesit virtio, ixl, mrsas, aacraid, cpld.
- Drejtuesit për adaptuesit Ethernet të vjetëruar janë hequr:
- bm(4) BMAC
- cs(4) Crystal Semiconductor CS8900/CS8920
- de(4) DEC DC21x4x
- ed(4) NE-2000 dhe WD-80Ă3
- ep(4) 3Com Etherlink III (3c5x9) ISA
- ex(4) Intel EtherExpress Pro/10 dhe 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
- Drejtuesit ubsec (kriptoakseleratorët Broadcom BCM58xx), ufm (FM-tuner që përdor interfesën USB), ctau (Cronix Tau), cx (Cronix Sigma) dhe vpo (SCSI me port paralel) janë hequr.
Burimi: opennet.ru
