GCC 15.1 Released With Support For COBOL
Written by Harry Fairhead   
Monday, 05 May 2025

This major release of the GNU Compiler Collection is the first to include a COBOL front end. It also features improved support for Rust. Developers are also concerned about breaking changes.

GCCSQ

The GNU Compiler Collection (GCC) is a key component of the GNU toolchain and is distributed by the Free Software Foundation. 

You may be surprised to see new support for COBOL given it's age - but then as we keep reporting COBOL is a legacy language that refuses to fade away. The GCC COBOL project was introduced in 2022 and is a frontend for GCC. It is distinct from the existing GnuCOBOL, which is a translator and works by converting to COBOL code to C before compilation. 

GCC COBOL, which is limited to 64-bit and either x86-64 or ARM64 architectures, is based on COBOL2023 but does not yet implement object orientated features. It does include many IBM and MicroFocus extensions and supports the GNU debugger, gdb. It remains to be seen what the take up is for an open source compiler in an arena where commercial products are usually trusted.

GCC is now up to C23 and it uses this as its default but you can always ask to use an earlier standard - which most will.  The changes are small, but there are enough to make sure that something can go wrong. The fact that bool is not the same as int at the ABI level is one that is going to waste a lot of time as is the need to take out any custom definitions of bool.

C++ continues to advance and gets ever more complex and convolouted. It is complete at the C++23 level and working towards C++26.  Another change is the way that unions are initialized {0} now only initalizes the first member where it used to intialize all of the members.  A comment on this change on Hacker news notes:

Fun fact: GCC decided to adopt Clang's (old) behavior at the same time Clang decided to adopt GCC's (old) behavior. So now you have this matrix of behaviors:

* Old GCC: Initializes whole union.
* New GCC: Initializes first member only.
* Old Clang: Initializes first member only.
* New Clang: Initializes whole union.

More code broken...

GCC has been adding Rust support for a while, but it still isn't fully baked. The Rust-GCC readme notes that
“the compiler is in a very early stage and not usable yet for compiling real Rust programs.”

The standard Rust compiler, rustc, uses the LLVM backend and this is a a long standing problem in creating a GCC compiler and accounts for the slow progress. The parser is now complete, but there is no news of the borrow checker which is a core component of the language even though not actually needed for production code.

Having so many languages available as a single system is a real advantage and it means you can consider mixing languages. A key future objective of GCC is to make Rust interoperate with C/C++ with full link time optimization. Given GCC is the compiler used to create Linux this is important for the incorperation of Rust in the Kernel.  

Banner


DeepMind Plays Table Tennis
05/05/2025

At the end of last year Deep Mind did something worth noting - it combined neural networks and a robot arm to beat humans at table tennis. Now we have the paper and the details.



Akka Adds New Deployment Options
30/04/2025

Akka has announced new deployment options for its Akka platform, as well as new solutions to tackle the issues with deploying large-scale agentic AI systems for mission-critical applications.


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

 

Last Updated ( Monday, 05 May 2025 )