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

    ”`
  • Linux 6.17 RC1 är här – första testversionen släppt av Linus Torvalds

    Linus Torvalds har nu officiellt presenterat den första Release Candidate-versionen (RC1) av den kommande Linux 6.17-kärnan, vilket markerar slutet på utvecklingsfönstret och starten på testfasen inför den slutliga lanseringen.

    Det har gått två veckor sedan Linux 6.16 släpptes, och precis som traditionen bjuder innebär det att merge-fönstret för 6.17 nu är stängt. Härifrån och framåt kommer nya RC-versioner att publiceras varje söndag fram till slutversionen, som väntas om cirka två månader.

    Tidig – eller sen – release beroende på perspektiv

    Torvalds, som befann sig i Finland när han skar releasegrenen, konstaterade att tidpunkten för RC1 kan uppfattas som både tidigare och senare än vanligt.
    – Det är söndag morgon hemma i min vanliga tidszon, men nästan söndag kväll här i Finland. Jag valde att lägga mig någonstans mitt emellan min vanliga “tidig söndagseftermiddag”-plan, förklarar han.

    På grund av resor såg Torvalds till att göra huvuddelen av arbetet under den första veckan. Det visade sig vara en lyckad strategi, eftersom de sena ändringsförslagen (“stragglers”) blev hanterbara även på resande fot – även om de möttes av en något mer irriterad Linus än vanligt, enligt honom själv.

    Hälsosamt utvecklingsfönster

    Trots resorna beskriver Torvalds merge-fönstret som “ganska hälsosamt” och statistiken ligger på normala nivåer både vad gäller patchstorlek och antal commits. Som vanligt är antalet ändringar så pass stort att Torvalds endast publicerar en sammanfattad mergelog – en översikt “från 10 000 fots höjd” över utvecklingsprocessen.

    Nyheter i Linux 6.17

    Den kommande Linux 6.17-kärnan bjuder på en rad förbättringar:

    • Btrfs-förbättringar – prestandaförbättringar och optimeringar för filsystemet.
    • Intel Wildcat Lake-stöd – utökad kompatibilitet med Intels hårdvara.
    • Arm BRBE-stöd – stöd för Arm:s Branch Record Buffer Extension.
    • IPv6-förbättringar – nytt force_forwarding sysctl för att möjliggöra vidarebefordran per gränssnitt.
    • EXT4-optimeringar – bättre skalbarhet för blockallokering.
    • AMD HFI-stöd – stöd för AMD:s Hardware Feedback Interface.

    Utöver detta tillkommer som vanligt nya och uppdaterade drivrutiner, förbättrad dokumentation, filsystem- och nätverksförbättringar samt många andra ändringar som stärker kärnans funktionalitet och hårdvarustöd.

    När släpps den slutliga versionen?

    Slutversionen av Linux 6.17 förväntas anlända i slutet av september eller början av oktober 2025. Om utvecklingen går smidigt och det endast behövs sju RC-versioner landar den 28 september. Skulle det krävas åtta RC-versioner sker lanseringen istället den 5 oktober.

    För den som vill testa redan nu finns Linux 6.17 RC1 att ladda ner via Linus Torvalds Git-träd eller från kernel.org. Men kom ihåg – detta är en förhandsversion och bör inte installeras på produktionssystem.

    RC1

    Linux 6.17-rc1 – första testversionen

    Släppt: 10 augusti 2025. Merge-fönstret stängt; veckovisa RC-släpp på söndagar till finalen om ~2 månader.
    Huvudnyheter
    • Btrfs: märkbara prestandaförbättringar; cache av free-space-bitmap m.m.
    • Intel Wildcat Lake: nytt stöd (bl.a. EDAC/in-band ECC).
    • Arm BRBE: stöd för Branch Record Buffer Extension.
    • IPv6: force_forwarding sysctl för per-gränssnitt-vidarebefordran.
    • EXT4: bättre skalbarhet i blockallokering.
    • AMD HFI: stöd för Hardware Feedback Interface.
    • Stora uppdateringar av drivrutiner, dokumentation, filsystem & nätverk.
    Status & tidslinje
    • Version: 6.17-rc1 (förhandsversion – ej för produktion)
    • Nästa steg: RC-släpp varje söndag
    • Final: förväntas 28 sep (7 RC) – eller 5 okt 2025 (8 RC)
    Att testa
    • Hämta källkod från kernel.org eller Torvalds git-träd.
    • Bygg i en testmiljö; rapportera regressions på LKML/bugzilla.
    • Undvik produktion; RC kan innehålla kända/nya problem.
    Citat/summary: Linus Torvalds beskriver ett “hälsosamt” merge-fönster med normala siffror för patchstorlek och antal commits; RC1 släpptes något tidigare på dagen p.g.a. tidszoner/resor.

    Källa

Etikett: Intel Wildcat Lake

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

  • Linux 6.17 RC1 är här – första testversionen släppt av Linus Torvalds

    Linus Torvalds har nu officiellt presenterat den första Release Candidate-versionen (RC1) av den kommande Linux 6.17-kärnan, vilket markerar slutet på utvecklingsfönstret och starten på testfasen inför den slutliga lanseringen. Det har gått två veckor sedan Linux 6.16 släpptes, och precis som traditionen bjuder innebär det att merge-fönstret för 6.17 nu är stängt. Härifrån och framåt…