Dear GCC maintainers,
I have written the GCC 15 changelog for Ada. I am attaching the patch to
the email. It has already had an initial review by Marc, but feel free
to comment on it and request any changes.
Best regards,
Fernando Oleo Blanco
From 733eeb430068eb59982c28c43c321db5866685d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Poulhi=C3=A8s?= <poulh...@adacore.com>
Date: Thu, 20 Mar 2025 14:44:26 +0100
Subject: [PATCH] gcc-15/changes: Document Ada changes
Co-authored-by: Fernando Oleo Blanco <irv...@irvise.xyz>
---
htdocs/gcc-15/changes.html | 112 ++++++++++++++++++++++++++++++++++++-
1 file changed, 111 insertions(+), 1 deletion(-)
diff --git a/htdocs/gcc-15/changes.html b/htdocs/gcc-15/changes.html
index 7e5da369..830d45ad 100644
--- a/htdocs/gcc-15/changes.html
+++ b/htdocs/gcc-15/changes.html
@@ -125,7 +125,117 @@ a work-in-progress.</p>
</li>
</ul>
-<!-- <h3 id="ada">Ada</h3> -->
+<h3 id="ada">Ada</h3>
+<ul>
+ <li>
+ GNAT now allows
+ the <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/Attribute-Round.html#index-Round"><code>'Round</code></a>
+ attribute also for fixed point types.
+ </li>
+ <li>
+ The new GNAT
+ attribute <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/Attribute-Super.html#index-Super"><code>'Super</code></a>
+ can be applied to objects of tagged types in order to obtain a view
+ conversion to the most immediate specific parent type.
+ </li>
+ <li>
+ <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/Mutably-Tagged-Types-with-Size_2019Class-Aspect.html">Mutably <code>tagged</code> types</a> with a defined size are now available
+ through the use of <code>Size'Class</code>. This allows defining a maximum
+ size for the tagged. Example:
+<pre>
+type Base is tagged null record with Size'Class => 16 * 8;
+ -- Size in bits (128 bits, or 16 bytes)
+
+type Derived_Type is new Base with record Data_Field : Integer; end record;
+ -- ERROR if Derived_Type exceeds 16 bytes
+</pre>
+ </li>
+ <li>
+ New <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/Generalized-Finalization.html"><code>Finalizable</code>
+ aspect</a>. It is a GNAT language extension which serves as a lightweight
+ alternative to <code>controlled</code> types. They have been designed with
+ provability in mind.
+<pre>
+type Ctrl is record
+ Id : Natural := 0;
+end record with Finalizable => (Initialize => Initialize,
+ Adjust => Adjust,
+ Finalize => Finalize,
+ Relaxed_Finalization => True);
+
+procedure Adjust (Obj : in out Ctrl);
+procedure Finalize (Obj : in out Ctrl);
+procedure Initialize (Obj : in out Ctrl);
+</pre>
+ </li>
+ <li>
+ The
+ aspect <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/No_005fRaise-aspect.html"><code>No_Raise</code></a>
+ has been added, it is the same as <code>Pragma No_Raise</code>.
+ </li>
+ <li>
+ The
+ aspect <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/External_005fInitialization-Aspect.html"><code>External_Initialization</code></a>
+ has been added, it allows for data to be initialized using an external file
+ which is loaded during compilation time.
+ </li>
+ <li>
+ The
+ aspect <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Exit_005fCases.html#index-Exit_005fCases"><code>Exit_Cases</code></a>
+ has been added to annotate functions and procedures with side effects in
+ SPARK
+ (see <a href="https://docs.adacore.com/spark2014-docs/html/lrm/subprograms.html#program-exit-aspects">SPARK
+ reference manual</a>) . It can be used to partition the input state into a
+ list of cases and specify, for each case, how the subprogram is allowed to
+ terminate.
+ </li>
+ <li>
+ Language extensions are enabled through the use of <code>pragma
+ Extensions_Allowed (On | Off | All_Extensions);</code> which has had its
+ syntax changed. An argument of <code>All_Extensions</code> has the same
+ effect as <code>On</code>, except
+ that <a href="https://gcc.gnu.org/onlinedocs/gnat_rm/Experimental-Language-Extensions.html">some
+ extra experimental extensions are enabled</a>.
+ </li>
+ <li>
+ Several new compilation flags have been added, some examples
+ include <a href="https://gcc.gnu.org/onlinedocs/gnat_ugn/Info-message-Control.html"><code>-gnatis</code></a>, <a href="https://gcc.gnu.org/onlinedocs/gnat_ugn/Warning-Message-Control.html#index--gnatw_002en-_0028gcc_0029"><code>-gnatw.n</code></a>, <a href="https://gcc.gnu.org/onlinedocs/gnat_ugn/Warning-Message-Control.html#index--gnatw_005fl-_0028gcc_0029"><code>-gnatw_l</code></a>
+ and <a href="https://gcc.gnu.org/onlinedocs/gnat_ugn/Warning-Message-Control.html#index--gnatw_002ev-_0028gcc_0029"><code>-gnatw.v</code></a>.
+ The internal debugging utilities for the compiler have also received a lot
+ of new options, please refer
+ to <a href="https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/ada/debug.adb"><code>debug.adb</code></a>
+ for more information.
+ </li>
+ <li>
+ The diagnostics code has seen a major refactor, it now supports the sarif
+ format <code>-fdiagnostics-format=sarif-file</code> among other
+ improvements. More changes are expected in following releases.
+ </li>
+ <li>
+ <code>System.Image_A</code> has now printing routines to output address
+ information in HEX.
+ </li>
+ <li>
+ Several program units have had contracts added to them and SPARK analysis
+ has been enabled.
+ </li>
+ <li>
+ Support for FreeBSD, Android and aarch64 targets has been improved.
+ </li>
+ <li>
+ Task priorities on MinGW have been reworked.
+ </li>
+ <li>
+ The documentation has been rearanged for clarity, mainly the sections
+ related to tasking and platform dependent information.
+ </li>
+ <li>
+ REMOVAL: <code>Generic_Formal_Hash_Table</code> has been removed,
+ the <a href="https://docs.adacore.com/spark2014-docs/html/ug/en/source/spark_libraries.html#">SPARK
+ Library</a> is recommended as a substitute.
+ </li>
+</ul>
+
<h3 id="c-family">C family</h3>
<ul>
--
2.43.0