• 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.

    ”`
  • Fedora Linux 44 är här – snabbare, modernare och bättre för spel

    Fedora Linux 44 har nu släppts, och den nya versionen bjuder på en rejäl uppdatering för både vanliga datoranvändare, utvecklare och spelintresserade. Fedora är en av de mest inflytelserika Linux-distributionerna och fungerar ofta som en försmak av teknik som senare dyker upp i andra Linux-system.

    Den nya versionen bygger på Linux-kärnan 6.19, vilket innebär bättre stöd för modern hårdvara, förbättrad prestanda och nya funktioner under huven. För användare av Fedora Workstation är en av de största nyheterna att systemet nu levereras med GNOME 50, den senaste versionen av den populära skrivbordsmiljön. KDE-användare får samtidigt KDE Plasma 6.6, där Fedora KDE Plasma Desktop dessutom går över till Plasma Login Manager som standard.

    Bättre stöd för spel och Wine

    En av de mest intressanta nyheterna är att Fedora 44 aktiverar NTSYNC-kärnmodulen för Wine och spelpaket. Det här kan låta tekniskt, men i praktiken handlar det om att Windows-program och spel som körs via Wine kan få bättre synkronisering och potentiellt högre prestanda.

    För Linux-spelare är detta extra viktigt. Många Windows-spel körs i dag på Linux med hjälp av Wine, Proton och liknande tekniker. Förbättringar på den här nivån kan därför göra spelupplevelsen jämnare och mer responsiv.

    Fedora har också moderniserat sin Games Lab-version, som nu byter från Xfce till KDE Plasma. Det ger spelutgåvan ett mer modernt gränssnitt och bättre integration med dagens grafiska Linux-miljöer.

    Enklare på ARM-datorer och USB-minnen

    Fedora 44 förbättrar även stödet för AArch64, alltså ARM64-system. Det blir nu enklare för systemet att automatiskt välja rätt DTB-fil vid uppstart på ARM-baserade EFI-maskiner. Det kan göra Fedora mer smidig att använda på exempelvis utvecklingskort, små datorer och annan ARM-hårdvara.

    En annan praktisk förbättring gäller Fedora som körs från USB-minnen. Systemet kan nu automatiskt aktivera persistenta överlagringar när det skrivs till ett USB-minne. Det betyder att ändringar, filer och inställningar lättare kan sparas mellan omstarter, i stället för att allt försvinner när datorn stängs av.

    Nya verktyg för utvecklare

    Fedora är särskilt populärt bland utvecklare, och Fedora 44 fortsätter på den linjen. Systemet innehåller uppdaterade versioner av många viktiga programmerings- och byggverktyg, bland annat:

    VerktygNy version
    GCC16.1
    GNU Binutils2.46
    GNU C Library2.43
    LLVM22
    Go1.26
    Ruby4.0
    PHP8.5
    RPM6.0
    CMake4.0

    Det här gör Fedora 44 attraktivt för den som vill arbeta med modern programvaruutveckling utan att behöva vänta länge på nya versioner av viktiga komponenter.

    Fedora 44 lägger dessutom till stöd för Nix-pakethanteraren, vilket ger användare ytterligare ett sätt att installera och hantera program. Nix är känt för att göra det lättare att skapa reproducerbara och isolerade programmiljöer.

    Mer reproducerbara paket

    En viktig men mindre synlig nyhet är att Fedora 44 är den första Fedora-versionen där alla paketbyggen levereras som reproducerbara. Det innebär att samma källkod ska kunna byggas om och ge samma resultat.

    Detta är viktigt för säkerhet och transparens. Om program kan byggas på ett reproducerbart sätt blir det lättare att kontrollera att inga oväntade ändringar eller manipulationer har smugit sig in i paketen.

    Förbättringar i installation och skrivbord

    Installationsprogrammet Anaconda har också justerats. Det skapar inte längre nätverksprofiler för alla nätverksenheter som standard, vilket kan ge en renare och mer förutsägbar installation.

    För KDE-varianterna introduceras även en ny Plasma Setup-app efter installationen. Den ska hjälpa användaren att komma igång och göra de första inställningarna på ett enklare sätt.

    Fedora Budgie-utgåvan får dessutom Budgie 10.10, som nu är helt inriktad på Wayland. Det visar tydligt hur Linux-världen fortsätter att röra sig bort från det äldre X11-systemet och mot modernare grafikhantering.

    Många utgåvor att välja mellan

    Fedora 44 finns att ladda ned som live-ISO med flera olika skrivbordsmiljöer. Förutom GNOME och KDE Plasma finns bland annat Xfce, LXQt, Cinnamon, Budgie och MATE.

    Den som redan kör Fedora Linux 43 kommer att kunna uppgradera till Fedora Linux 44 via DNF system-upgrade.

    Sammanfattning

    Fedora Linux 44 är en bred och tekniskt stark uppdatering. För vanliga användare märks nyheterna främst genom modernare skrivbordsmiljöer, bättre installation och förbättrat hårdvarustöd. För spelare är NTSYNC-stödet en spännande förbättring, medan utvecklare får tillgång till en mycket uppdaterad verktygskedja.

    Fedora fortsätter därmed att vara en distribution för den som vill ligga nära Linux-världens tekniska framkant, men samtidigt ha ett stabilt och välpaketerat system för vardagsbruk.

    https://fedoraproject.org

    Fedora hemsida i vår wiki.

    https://wiki.linux.se/Fedora

    $ teknisk_faktaruta –fedora-linux-44

    Distribution: Fedora Linux 44

    Kärna: Linux 6.19

    Skrivbordsmiljöer: GNOME 50, KDE Plasma 6.6, Xfce, LXQt, Cinnamon, Budgie och MATE

    Spelnyhet: NTSYNC-kärnmodulen aktiveras för Wine och gamingpaket

    Pakethantering: Stöd för Nix och DNF5-backend i PackageKit

    Utvecklarverktyg: GCC 16.1, LLVM 22, Go 1.26, Ruby 4.0, PHP 8.5 och RPM 6.0

    Extra: Alla paketbyggen levereras som reproducerbara

Etikett: GCC 16.1

  • 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…

  • Fedora Linux 44 är här – snabbare, modernare och bättre för spel

    Fedora Linux 44 har nu släppts, och den nya versionen bjuder på en rejäl uppdatering för både vanliga datoranvändare, utvecklare och spelintresserade. Fedora är en av de mest inflytelserika Linux-distributionerna och fungerar ofta som en försmak av teknik som senare dyker upp i andra Linux-system. Den nya versionen bygger på Linux-kärnan 6.19, vilket innebär bättre…