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


The End Of The App Store
07/05/2025

It could just be that Apple has made a big mistake and the longed for, or dreaded, dissolution of the App Store is upon us at last. Of course, Apple is appealing, but things don't look good for its po [ ... ]



The OpenAI Academy Makes AI Accessible
29/04/2025

OpenAI has provided a treasure trove of information for spreading knowledge about AI to the general public; understanding what AI is and learning how to leverage it by using tools like ChatGPT.


More News

espbook

 

Comments




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

 

Last Updated ( Monday, 05 May 2025 )