• NetBSD 11.0 tar steget in i RISC-V-världen

    NetBSD 11.0 är den nittonde stora versionen av det portabla Unix-systemet. Utgåvan introducerar stabilt stöd för 64-bitars RISC-V, förbättrad Linuxkompatibilitet, snabbare virtuella maskiner och ett stort antal nya drivrutiner.

    NetBSD 11.0 är här. Den nittonde stora versionen av det klassiska Unix-liknande operativsystemet bjuder bland annat på stöd för 64-bitars RISC-V, bättre kompatibilitet med Linuxprogram, snabbare virtuella maskiner och ett stort antal nya drivrutiner.

    NetBSD är framför allt känt för sin ovanligt breda hårdvarusupport. Projektets gamla slogan, ”Of course it runs NetBSD”, syftar på att systemet kan köras på allt från moderna servrar och persondatorer till äldre arbetsstationer och mer ovanliga processorarkitekturer.

    Med NetBSD 11.0 fortsätter projektet på samma linje.

    RISC-V blir en officiellt stödd plattform

    Den största nyheten är den första stabila NetBSD-versionen för 64-bitars RISC-V-system.

    RISC-V är en öppen processorarkitektur som på senare år har fått stor uppmärksamhet. Till skillnad från exempelvis x86 och Arm kan RISC-V användas utan att en tillverkare behöver licensiera själva instruktionsuppsättningen. Det gör arkitekturen intressant för allt från utbildning och forskning till servrar, inbyggda system och framtida persondatorer.

    NetBSDs nya RISC-V-port kan inledningsvis köras i den virtuella maskinen QEMU samt på datorer baserade på StarFive JH7110-kretsen. Det omfattar bland annat enkortsdatorerna StarFive VisionFive 2 och PINE64 STAR64.

    Systemet har stöd för exempelvis:

    • PCI- och PCI Express-enheter
    • VirtIO-baserade nätverkskort och lagringsenheter
    • virtualiserat ljud
    • hårdvarubaserade slumptalsgeneratorer
    • temperatursensorer
    • felsökning av kraschade kärnor

    Det finns även ett mer grundläggande stöd för Allwinner D1, en enklare RISC-V-krets som används i bland annat MangoPi MQ Pro och Allwinner Nezha.

    Stödet är ännu inte lika komplett som för NetBSDs mer etablerade plattformar, men markerar ändå ett viktigt steg för både NetBSD och RISC-V.

    Snapdragon X Elite får tidigt stöd

    Även Arm-plattformen har fått flera förbättringar.

    NetBSD 11.0 innehåller ett första stöd för Qualcomms Snapdragon X Elite och företagets Oryon-processorkärnor. Snapdragon X Elite används framför allt i nyare bärbara Windowsdatorer och är en av de Arm-baserade plattformar som konkurrerar med traditionella x86-processorer från Intel och AMD.

    Det nya stödet omfattar bland annat drivrutiner för batteri- och laddningsövervakning, GPIO-anslutningar och I2C-styrenheter.

    Versionen innehåller också NUMA-stöd för Arm-system som använder ACPI. NUMA innebär förenklat att ett system kan hålla reda på vilket minne som ligger närmast en viss processorkärna. Det kan ge bättre prestanda i större datorer med många processorer eller processorkärnor.

    Andra förbättringar omfattar stöd för Arms SCMI-protokoll för prestandastyrning, en ny USB-C PHY-drivrutin för Rockchip samt bättre stöd för NanoPi R4S.

    Raspberry Pi 5 får också förbättrat stöd för kringutrustning när datorn startas genom UEFI.

    Virtuella maskiner kan starta på millisekunder

    NetBSD 11.0 innehåller en särskild kärna med namnet MICROVM för 32- och 64-bitars x86-system.

    Den är utformad för små virtuella maskiner som ska kunna starta mycket snabbt. Kärnan använder bland annat PVH-start, VirtIO MMIO-enheter och flera optimeringar som minskar mängden arbete under uppstarten.

    Enligt NetBSD-projektet kan en sådan virtuell maskin starta på omkring tio millisekunder på en x86-processor från ungefär 2020.

    Det är intressant för bland annat molntjänster där små virtuella maskiner kan behöva startas och stoppas automatiskt beroende på belastningen. Ett möjligt användningsområde är så kallade mikrotjänster, där varje liten funktion körs i en separat och isolerad miljö.

    NetBSD kan nu även startas med PVH utan att Xen används. Det fungerar exempelvis tillsammans med QEMUs -kernel-alternativ.

    VirtIO-enheter kan dessutom beskrivas genom parametrar på kärnans kommandorad.

    Nya drivrutiner för QEMU och VMware

    En ny drivrutin med namnet viogpu ger stöd för virtuella grafikkort som tillhandahålls av QEMU.

    Det betyder att NetBSD kan använda en mer modern virtualiserad grafiklösning i stället för att enbart förlita sig på enklare emulerade grafikkort.

    Den nya pvscsi-drivrutinen ger samtidigt stöd för VMwares paravirtualiserade SCSI-styrenheter. Paravirtualisering innebär att gästsystemet vet att det körs i en virtuell maskin och kan kommunicera mer direkt med värdsystemet. Det ger ofta bättre prestanda än fullständig hårdvaruemulering.

    Fler Linuxprogram kan köras utan ändringar

    NetBSD har sedan länge ett kompatibilitetslager som gör det möjligt att köra program som ursprungligen har kompilerats för Linux.

    NetBSD 11.0 utökar detta lager med ett stort antal Linux-kompatibla systemanrop och gränssnitt.

    Bland nyheterna finns:

    • epoll
    • clone3
    • statx
    • inotify
    • renameat2
    • close_range
    • waitid
    • syncfs
    • readahead
    • POSIX-meddelandeköer
    • sync_file_range

    Ett systemanrop är den mekanism som ett program använder för att be operativsystemets kärna utföra en uppgift. Det kan exempelvis handla om att öppna en fil, skapa en process, använda nätverket eller läsa information om systemet.

    När ett Linuxprogram använder ett systemanrop som saknas i NetBSDs kompatibilitetslager går programmet normalt inte att köra. Genom att införa fler Linux-kompatibla systemanrop kan NetBSD därför hantera fler Linuxprogram utan att programmens källkod behöver ändras.

    Versionen får även stöd för memfd_create, som gör det möjligt att skapa en fil direkt i arbetsminnet utan att den behöver få ett vanligt filnamn på disken.

    Det virtuella filsystemet procfs har samtidigt kompletterats med information om System V IPC samt Linux-liknande sökvägar för processgränser.

    Anpassningar för C23 och nya POSIX

    NetBSD 11.0 innehåller även förbättringar för nyare programmeringsstandarder.

    Verktyget lint, som används för att analysera C-kod och hitta möjliga programmeringsfel, kan nu kontrollera kod skriven enligt C23-standarden. Det har även blivit bättre på att upptäcka heltalsöverskridningar.

    En heltalsöverskridning uppstår när ett tal blir större eller mindre än vad den aktuella datatypen kan lagra. Resultatet kan bli felaktiga beräkningar, programkrascher eller i värsta fall säkerhetsproblem.

    NetBSD får också ett nytt kommando med namnet c17. Det fungerar som ett standardiserat sätt att anropa en kompilator för ISO C17, vilket krävs av POSIX.1-2024.

    Snabbare kärna och bättre stöd för flera processorer

    Flera delar av operativsystemets kärna har optimerats.

    Låsningen kring så kallade pipes har förbättrats. En pipe används när ett program skickar data direkt till ett annat program, exempelvis i följande kommandorad:

    cat fil.txt | grep sökord
    

    Minskad låskonkurrens innebär att flera processorer eller processorkärnor i mindre utsträckning behöver vänta på varandra.

    DRM-systemet, som hanterar moderna grafikkort i kärnan, har också fått bättre skalning på datorer med flera processorkärnor.

    VirtIO-drivrutinerna är nu markerade som multiprocessorsäkra. De kan därmed köras utan att hålla NetBSD-kärnans globala lås, vilket kan förbättra prestandan i virtuella maskiner.

    Även ZFS har optimerats så att borttagning av filer går snabbare.

    På SPARC-, PowerPC- och MIPS-processorer har byteväxling förbättrats. Byteväxling används när data behöver omvandlas mellan olika ordningsföljder för byte, exempelvis mellan little endian och big endian.

    Snabbare reaktion på förlorade nätverkspaket

    Den inledande väntetiden innan ett TCP-paket skickas om har sänkts från tre sekunder till en sekund.

    TCP ser till att data kommer fram i rätt ordning och att förlorade paket skickas igen. Om ett paket försvinner väntar systemet en viss tid innan det försöker på nytt.

    En kortare inledande väntetid kan göra att nätverksanslutningar återhämtar sig snabbare när de första paketen förloras. Ändringen är tillåten enligt internetstandarden RFC 6298.

    Brandväggen kan filtrera på länklagret

    NetBSD Packet Filter, NPF, kan nu filtrera trafik på lager 2 i nätverksmodellen.

    Lager 2 omfattar bland annat Ethernet-ramar och MAC-adresser. Tidigare har brandväggar främst arbetat högre upp i nätverksstacken, exempelvis med IP-adresser och TCP- eller UDP-portar.

    NPF-regler kan även göras beroende av användare och grupper. Det gör det möjligt att exempelvis tillåta nätverkstrafik för ett visst användarkonto men blockera samma trafik för andra användare.

    Kärnan håller uppsikt över sig själv

    NetBSD 11.0 introducerar också en mekanism som kallas kernel heartbeat.

    Olika processorer och avbrottsnivåer kan använda mekanismen för att kontrollera att andra delar av kärnan fortfarande gör framsteg. Om någon del av systemet fastnar kan detta upptäckas snabbare.

    Funktionen kan vara värdefull vid felsökning av svåra problem där datorn verkar frysa utan att skapa någon tydlig felrapport.

    Stort antal nya drivrutiner

    Hårdvarustödet har utökats med en omfattande samling nya och förbättrade drivrutiner.

    Bland nyheterna finns stöd för:

    • Realtek RTL8126-nätverkskort med 5 Gbit/s
    • virtuella funktioner för NVIDIA Mellanox ConnectX-6
    • ASIX AX88179A USB-nätverkskort
    • USB Audio Class 2.0
    • tangentbord som använder I2C HID
    • nyare Androidtelefoner med USB-delning via NCM
    • fler fläkt-, sensor-, serie- och lagringsstyrenheter
    • fler styrenheter för industriell utrustning

    USB Audio Class 2.0 är särskilt relevant för modernare externa ljudkort och DAC-enheter som arbetar med högre samplingsfrekvenser och fler ljudkanaler än vad den äldre USB-ljudstandarden klarar.

    Bättre övervakning av AMD-processorer

    NetBSD kan nu läsa temperaturinformation från fler moderna AMD-processorer.

    Det omfattar bland annat:

    • Siena
    • Turin Classic
    • Turin Dense
    • Strix Point
    • Zen 5

    Verktyget cpuctl känner nu även igen Intels Meteor Lake- och Emerald Rapids-processorer.

    Dessutom finns stöd för nyare varianter av Intels TCO-watchdog. En watchdog är en säkerhetsmekanism som kan starta om en dator om operativsystemet slutar fungera och inte längre skickar regelbundna livstecken.

    Uppdaterade program i grundsystemet

    NetBSD levereras som ett komplett grundsystem där både kärnan och ett stort antal centrala verktyg utvecklas och distribueras tillsammans.

    I NetBSD 11.0 har många externa komponenter uppdaterats. Några exempel är:

    • GCC 12.5
    • GDB 15.1
    • Binutils 2.42
    • OpenSSL 3.5.7
    • OpenSSH 10.3
    • Postfix 3.11.2
    • X.Org Server 21.1.24
    • tmux 3.6b
    • Unbound 1.25.1
    • BIND 9.20.24
    • wpa_supplicant 2.11

    Viktiga förändringar inför uppgradering

    Den som uppgraderar från en tidigare NetBSD-version bör vara uppmärksam på några förändringar.

    Kompatibilitetsbiblioteken för 32- och 64-bitarsprogram har flyttats till separata installationsuppsättningar med namnen:

    • base32
    • base64
    • debug32
    • debug64

    HTML-versionerna av manualsidorna ligger numera i den separata uppsättningen manhtml.

    OpenSSH har dessutom tagit bort stödet för DSA-nycklar. DSA är en äldre typ av SSH-nyckel som inte längre betraktas som tillräckligt säker.

    System som har en specialanpassad SSH-konfiguration där DSA uttryckligen har aktiverats kan behöva ändras innan SSH-servern kan startas.

    På aarch64-system anges processorfrekvensen numera i megahertz i stället för i abstrakta prestandanivåer.

    Drivrutinen hdaudio har också fått ändrade namn och en annan ordning på vissa ljudmixerreglage. Det kan påverka skript och lokala inställningar som hänvisar till reglagen med deras gamla namn.

    Ett brett lyft för ett ovanligt portabelt system

    NetBSD 11.0 är inte en utgåva som enbart fokuserar på en viss datorplattform eller användargrupp.

    Versionen förbättrar stödet för allt från moderna Arm- och RISC-V-system till äldre processorarkitekturer, virtuella servrar, nätverksutrustning och traditionella x86-datorer.

    RISC-V-stödet är den mest synliga nyheten, men de utökade Linux-kompatibilitetsfunktionerna kan på sikt bli minst lika betydelsefulla. De gör det lättare att använda program som främst har utvecklats och testats för Linux.

    Tillsammans med snabbare virtualisering, fler drivrutiner och förbättrad multiprocessorprestanda visar NetBSD 11.0 att projektet fortfarande utvecklas aktivt – samtidigt som det håller fast vid sitt ursprungliga mål: att skapa ett rent, stabilt och portabelt Unix-system som kan köras på så många typer av datorer som möjligt.

    https://blog.netbsd.org/tnf/entry/netbsd_11_0_released

    Ladda hem Netbsd

    https://netbsd.org

    > TEKNISKA FAKTA: NETBSD 11.0

    Version: NetBSD 11.0

    Utgåva: Nittonde stora NetBSD-versionen

    Systemtyp: Unix-liknande operativsystem

    Ny processorplattform: 64-bitars RISC-V

    RISC-V-enheter: QEMU, StarFive VisionFive 2 och PINE64 STAR64

    Arm-stöd: Inledande stöd för Qualcomm Snapdragon X Elite och Oryon

    Virtualisering: Ny MICROVM-kärna för amd64 och i386

    Uppstartstid: Omkring 10 millisekunder för MICROVM på lämplig x86-hårdvara

    Linuxkompatibilitet: Bland annat epoll, clone3, statx, inotify och memfd_create

    Programmeringsstandarder: Förbättrat stöd för C23 och POSIX.1-2024

    Brandvägg: NPF med lager 2-filtrering och regler för användare och grupper

    Nätverk: TCP:s första omsändningstid sänkt från tre till en sekund

    Kompilator: GCC 12.5

    Kryptering: OpenSSL 3.5.7

    SSH: OpenSSH 10.3

    Licens: BSD-licens

  • GNU nano 9.1: den lilla textredigeraren får putsad vardagsteknik

    GNU nano 9.1 är en liten men viktig uppdatering av den välkända terminalbaserade textredigeraren. Den nya versionen bjuder inte på några stora nyheter, men förbättrar sökning, backuphantering och syntaxmarkering, samtidigt som gammalt stöd för klassiska Mac-radslut tas bort. Resultatet är ett renare, stabilare och mer modernt nano för användare som ofta arbetar direkt i terminalen.

    GNU nano är kanske inte den mest glamorösa programvaran i Linuxvärlden, men den är en av de mest använda. Den lilla textredigeraren finns i terminalen, startar snabbt och används ofta när man behöver ändra en konfigurationsfil, skriva ett skript eller göra en snabb textändring direkt på en server. Nu har GNU nano 9.1 släppts, och även om uppdateringen inte förändrar programmet i grunden innehåller den flera förbättringar som gör vardagen lite smidigare.

    En av de mer synliga förändringarna gäller sökfunktionen. När man söker efter text i en fil försöker nano nu visa träffen på ett tydligare sätt i terminalfönstret. Om sökträffen får plats inom det synliga området placeras vyn så långt åt vänster som möjligt. Det kan låta som en liten detalj, men för den som arbetar i långa konfigurationsrader eller källkod kan det göra det enklare att snabbt se sammanhanget runt träffen.

    En annan förändring är att nano nu slutar stödja det gamla Mac-formatet för radslut. Förr i tiden använde klassiska Mac OS ett ensamt carriage return-tecken som radbrytning. Moderna system använder andra format, till exempel LF i Linux och andra Unix-liknande system, eller CRLF i Windows. Det gamla Mac-formatet är numera mycket ovanligt, och i nano 9.1 kan programmet varken läsa eller skriva filer med just den typen av radslut. För de flesta användare kommer detta aldrig att märkas, men det är ett tydligt tecken på att gammal teknisk ballast rensas bort.

    Filhanteringen har också förbättrats. Nano kan nu redigera en fil som faktiskt heter ~, alltså en ensam tilde. Det är ett specialtecken som ofta används som genväg till användarens hemkatalog, vilket tidigare kunde skapa problem. Programmet ger också ett tydligare felmeddelande om ett filnamn avslutas med snedstreck, eftersom det normalt antyder en katalog snarare än en vanlig fil.

    Även backupfunktionen har fått rättelser. När nano körs med alternativet --backup och skrivdialogen visar [Backup] skapas nu alltid en säkerhetskopia. Dessutom får backupfilerna numera en korrekt och komplett tidsstämpel. Det gör det lättare att förstå när en säkerhetskopia skapades och minskar risken för förvirring när flera versioner finns sparade.

    En mer teknisk förändring gäller så kallade nödsparade filer. Om nano kraschar eller avslutas oväntat kan programmet skapa en .save-fil för att rädda osparat arbete. I den nya versionen ändras inte längre filens rättigheter och ägarskap för att matcha originalfilen. Det är en liten men viktig justering som påverkar hur säkert och förutsägbart sådana räddningsfiler hanteras.

    På användargränssnittets område har vissa tangentbordsfunktioner ändrats. Växlingen med Ctrl+T mellan menyerna WhereIs och GoToLine har tagits bort. Samtidigt har Meta+Insert och Meta+Delete lagts till som giltiga tangentnamn. Det betyder att användare som anpassar nano via konfigurationsfiler nu kan binda även dessa tangentkombinationer till egna funktioner.

    Syntaxmarkeringen har också uppdaterats. För programmerare innebär det bland annat att C-definitionen nu känner igen fler nyckelord från C++23. Markeringen av hexadecimala och binära tal har förbättrats, liksom hanteringen av booleska konstanter. Även Lua-stödet har moderniserats med nyare nyckelord, borttagning av gamla föråldrade sådana och bättre hantering av flerradiga strängar och escape-tecken. Dessutom känner syntaxmarkeringen för manualsidor nu igen specialtecken skrivna i formen \[xx].

    Bakom kulisserna har utvecklarna dessutom gjort en hel del städarbete. Nano 9.1 innehåller uppdaterad gnulib-kod, säkrare felkontroller, minskad risk för minnesläckor, tydligare kommentarer och flera namnändringar i kodens variabler och funktioner. Det är sådant som vanliga användare sällan ser direkt, men som är viktigt för att programmet ska vara lättare att underhålla och stabilare på sikt.

    GNU nano 9.1 är alltså ingen dramatisk nyversion, utan snarare en vårstädning av ett välkänt verktyg. Den tar bort gammalt stöd som nästan ingen längre behöver, rättar till små men irriterande problem och förbättrar hur programmet beter sig i vardagliga situationer. För den som ofta arbetar i terminalen är det precis sådana förbättringar som gör skillnad över tid.

    Den nya versionen finns att hämta som källkod från projektets officiella webbplats. Användare som inte vill kompilera själva kan vänta tills nano 9.1 dyker upp i den egna Linuxdistributionens paketförråd.

    https://www.nano-editor.org/news.php

    Fakta: GNU nano 9.1

    Program: GNU nano

    Version: 9.1

    Typ: Textredigerare för terminalen

    Miljö: Linux, Unix-liknande system och terminalmiljöer

    Viktiga nyheter:

    • Förbättrad visning vid sökning i filer.
    • Stöd för gamla Mac-radslut har tagits bort.
    • Bättre hantering av backupfiler.
    • Ändrat beteende för nödsparade .save-filer.
    • Uppdaterad syntaxmarkering för C, C++23, Lua och manualsidor.
    • Intern kodstädning och förbättrad felhantering.

    Sammanfattning:
    GNU nano 9.1 är en underhållsversion som gör textredigeraren modernare, renare och mer förutsägbar i vardagligt terminalarbete.

  • GCC 16.1 är här – och C++ tar ett stort kliv in i 2020-talet

    GCC 16.1 är här och markerar början på en ny fas för GNU Compiler Collection. Med C++20 som nytt standardläge, experimentellt stöd för kommande C++26-funktioner och förbättringar för både diagnostik, optimering och modern hårdvara är detta en release som kan få stor betydelse för utvecklare. Samtidigt kan äldre kodbaser behöva ses över när kompilatorn tar ett tydligt steg bort från C++17-eran.

    Den fria kompilatorsamlingen GCC har fått en ny storversion. Med GCC 16.1 startar den nya GCC 16-serien, och även om en kompilatorrelease kanske inte låter som något som får pulsen att rusa hos alla, är detta en version som många utvecklare kommer att märka av.

    Den största nyheten är att GCC nu byter standardläge för C++: från GNU C++17 till GNU C++20.

    Det betyder att den som kompilerar C++-kod utan att själv ange språkversion nu automatiskt får C++20 som utgångspunkt. För moderna projekt är det goda nyheter. För äldre kodbaser kan det däremot innebära att vissa saker behöver justeras.

    C++20 blir det nya normala

    C++20 var ett stort steg för programmeringsspråket C++. Det introducerade bland annat nya sätt att skriva generisk kod, förbättrade standardbibliotek och funktioner som gör språket mer uttrycksfullt. Att GCC nu gör GNU C++20 till standard är därför en tydlig signal: C++20 är inte längre något framtidsläge, utan något utvecklare bör räkna med i vardagen.

    För de flesta projekt innebär det inte nödvändigtvis katastrof. Men kod som byggts med antagandet att kompilatorn använder C++17 kan börja bete sig annorlunda eller ge nya felmeddelanden. Lösningen är ofta enkel: ange uttryckligen vilken standard projektet ska byggas med, till exempel med flaggan -std=gnu++17, eller uppdatera koden så att den fungerar bra med C++20.

    GCC-utvecklarna meddelar också att stödet för C++20:s standardbibliotek nu räknas som stabilt. Däremot är C++20-moduler fortfarande experimentella och kräver särskild aktivering med -fmodules.

    En försmak av C++26

    GCC 16.1 blickar också framåt. Versionen innehåller experimentellt stöd för flera funktioner som är på väg in i C++26, alltså en kommande version av C++-standarden.

    Bland nyheterna finns stöd för reflection, där program kan undersöka delar av sin egen struktur, contracts, som kan användas för att uttrycka krav och garantier i kod, constexpr exceptions, vilket stärker möjligheterna att göra beräkningar vid kompilering, samt nya bibliotekstyper som std::simd, std::inplace_vector, std::copyable_function och std::function_ref.

    Det här är inte funktioner man bör kasta in i produktionskritisk kod hur som helst. De är fortfarande experimentella. Men för språkintresserade utvecklare och verktygsmakare är GCC 16.1 ett viktigt steg mot nästa generation C++.

    Algol 68 gör oväntad entré

    En av de mer oväntade nyheterna är att GCC nu får en experimentell frontend för Algol 68, kallad ga68.

    Algol 68 är ett klassiskt programmeringsspråk från datorhistoriens mer akademiska hörn. Det hade stort inflytande på senare språk, även om det aldrig blev lika vardagligt använt som C, Pascal eller Fortran. Att GCC nu får stöd för Algol 68 är därför både tekniskt intressant och lite nostalgiskt.

    Frontend:en bygger på språket så som det beskrivs i den reviderade rapporten, inklusive godkända rättelser, och innehåller dessutom vissa GNU-utökningar samt en POSIX-prelude.

    Bättre felmeddelanden och modernare analys

    Kompilatorer handlar inte bara om att omvandla kod till körbara program. De är också ett av utvecklarens viktigaste verktyg för att förstå vad som gått fel.

    I GCC 16.1 har diagnostiken förbättrats. GCC kan nu generera fel- och varningsmeddelanden i ett experimentellt HTML-format, vilket kan göra rapporter mer lättlästa i webbläsare eller utvecklingsverktyg.

    Samtidigt förbättras SARIF-stödet med ny information om kontrollflöde. SARIF är ett format som används för maskinläsbara analysrapporter, till exempel i säkerhetsverktyg och CI-system.

    Det äldre JSON-formatet för diagnostik har tagits bort. Användare som behöver maskinläsbara felrapporter hänvisas i stället till SARIF.

    Mer stöd för moderna språkfunktioner

    På C-sidan utökas stödet för C23 och typen _BitInt till fler processorarkitekturer, bland annat RISC-V, Arm, S/390 och LoongArch. Det gör det enklare att skriva kod som arbetar med heltal av mer exakt definierade bitstorlekar.

    C-frontend:en får också stöd för så kallad counted-by-attribution för pekarfält, vilket kan hjälpa kompilatorn och analysverktyg att förstå hur stora vissa datastrukturer är.

    Fortran-användare får dessutom förbättringar i coarray-stödet. På system med en enda nod finns nu stöd för delat minne med flera trådar, vilket kan förbättra parallella Fortran-program.

    Snabbare kod genom bättre optimeringar

    Som vanligt i en ny GCC-version finns även en rad optimeringsförbättringar. GCC 16.1 har bland annat bättre vektorisering, alltså förmågan att omvandla kod så att processorn kan utföra flera operationer parallellt.

    Kompilatorn kan nu också vektorisera vissa loopar där antalet varv inte är känt i förväg, och hanteringen av reduktioner och tidiga loopavbrott har förbättrats.

    Även Link-Time Optimization, LTO, har fått förbättringar. LTO gör det möjligt för kompilatorn att optimera över flera källfiler när programmet länkas ihop. I GCC 16.1 hanteras top-level assembly bättre med hjälp av flaggan -flto-toplevel-asm-heuristics.

    Dessutom har spekulativ devirtualisering byggts ut, vilket kan hjälpa kompilatorn att optimera indirekta funktionsanrop när den kan göra kvalificerade gissningar om vilken funktion som faktiskt kommer att köras.

    Nya processorer och mer hårdvarustöd

    GCC 16.1 uppdaterar också stödet för ny hårdvara.

    På x86-sidan tillkommer stöd för AMD Zen 6 med -march=znver6, Intel Wildcat Lake med -march=wildcatlake och Intel Nova Lake med -march=novalake.

    För AMD GPU-offloading finns nu experimentellt stöd för MI300, och även LoongArch och IBM Z får ytterligare förbättringar.

    För vanliga användare märks detta kanske inte direkt. Men för den som bygger program för nya servrar, superdatorer eller specialiserad hårdvara kan kompilatorstöd vara avgörande för att få ut maximal prestanda.

    En version som kan kräva städning

    Som med många stora kompilatoruppdateringar finns en hake: kod som fungerade i tidigare GCC-versioner kan behöva ändras.

    Det beror både på den nya C++20-standarden som standardläge och på att kompilatorn blivit bättre på att upptäcka problem. I praktiken kan detta leda till fler varningar eller kompileringsfel i projekt som tidigare byggde utan problem.

    För utvecklare är rådet enkelt: testa tidigt, ange språkstandard tydligt i byggsystemet och läs igenom varningarna. Många av dem kan peka på verkliga problem som tidigare bara råkade passera obemärkt.

    Sammanfattning

    GCC 16.1 är mer än bara ännu en versionssiffra. Det är en tydlig markering om vart C++-världen är på väg. Med C++20 som nytt standardläge, experimentellt stöd för C++26, förbättrad diagnostik, bättre optimeringar och stöd för ny hårdvara är detta en viktig release för både systemutvecklare och språkentusiaster.

    För den som arbetar med äldre C++-kod gäller det att vara uppmärksam. För den som vill använda modernare språkfunktioner är GCC 16.1 däremot ett välkommet steg framåt.

    ”`html

    Faktaruta: GCC 16.1

    > Release: GCC 16.1 är den första stabila versionen i GCC 16-serien.

    > Största nyheten: C++ använder nu GNU C++20 som standard i stället för GNU C++17.

    > För utvecklare: Äldre projekt kan behöva ange språkstandard med exempelvis -std=gnu++17.

    > Framtidsstöd: Experimentellt stöd finns för flera C++26-funktioner.

    > Övrigt: GCC 16.1 innehåller även bättre diagnostik, optimeringar och stöd för ny hårdvara.

    ”`

Etikett: C23

  • NetBSD 11.0 tar steget in i RISC-V-världen

    NetBSD 11.0 är den nittonde stora versionen av det portabla Unix-systemet. Utgåvan introducerar stabilt stöd för 64-bitars RISC-V, förbättrad Linuxkompatibilitet, snabbare virtuella maskiner och ett stort antal nya drivrutiner. NetBSD 11.0 är här. Den nittonde stora versionen av det klassiska Unix-liknande operativsystemet bjuder bland annat på stöd för 64-bitars RISC-V, bättre kompatibilitet med Linuxprogram, snabbare…

  • GNU nano 9.1: den lilla textredigeraren får putsad vardagsteknik

    GNU nano 9.1 är en liten men viktig uppdatering av den välkända terminalbaserade textredigeraren. Den nya versionen bjuder inte på några stora nyheter, men förbättrar sökning, backuphantering och syntaxmarkering, samtidigt som gammalt stöd för klassiska Mac-radslut tas bort. Resultatet är ett renare, stabilare och mer modernt nano för användare som ofta arbetar direkt i terminalen.…

  • GCC 16.1 är här – och C++ tar ett stort kliv in i 2020-talet

    GCC 16.1 är här och markerar början på en ny fas för GNU Compiler Collection. Med C++20 som nytt standardläge, experimentellt stöd för kommande C++26-funktioner och förbättringar för både diagnostik, optimering och modern hårdvara är detta en release som kan få stor betydelse för utvecklare. Samtidigt kan äldre kodbaser behöva ses över när kompilatorn tar…