2. AdaCore GNAT Pro 24 Roadmap¶
This roadmap represents the current stage of AdaCore plans for its technology. It is not binding, and can change without notice. Products marks as “Beta” can be made available to customers supported on the corresponding products by contacting AdaCore support (https://www.adacore.com/support). Customers interested in trying out capabilities that they don’t have access to yet, or who are interested in discussing a more detailed status update can contact info@adacore.com
2.1. Toolchain¶
2.1.1. GNAT for LLVM support for native platforms¶
GNAT Pro for Ada for x86 64 Windows and x86 64 Linux native will be provided with an alternate LLVM back-end, on top of the usual GCC back-end.
2.2. Ada Support and Extensions¶
2.2.1. Fixed size for arrays¶
Arrays marked “definite” will be of the maximum size permitted by their index type, so that objects of class wide types can be used in places where definite size is needed (for example as a component or a local variable). For example:
declare
type Index is 1 .. 32;
type Static_Array is array (Index range <>) of Natural with Definite;
A : Static_Array := (1, 2, 3, 4);
B : Static_Array := (2, 3);
begin
A := B;
A := A & S;
A := A & (8, 9);
pragma Assert (A'Capacity = 8);
A := (0, 1, 2, 3, 4, 5, 6, 7, 8); -- forbidden as it exceeds the array capacity
end;
This feature will be made available as beta, not intended for production.
2.2.2. Fixed size for tagged types¶
A tagged type can be provided with a maximum size so that objects of class wide types can be used in places where definite size is needed (for example as a component or a local variable). For example:
type Foo is tagged abstract null record
with Size'Class => 16 * 8; -- Size is in bits
type Bar is new Foo with record
S : String (1 .. 128);
end record; -- ERROR: Record doesn't fit in 16 bytes
type Baz is new Foo with record
A, B : Integer;
end record; -- Valid
-- Valid use cases
Inst : Foo'Class;
Inst := Foo'(null record);
Inst := Baz'(12, 15);
type Foo_Array is array (Positive range <>) of Foo'Class;
Arr : Foo_Array := (Foo'(null record), Baz'(12, 15));
See the Class Size RFC for more details.
This feature will be made available as beta, not intended for production.
2.3. Embedded and Real-Time OS Support¶
2.3.1. AWS and GNATColl Support for Cross Linux¶
GNATcoll is a library of Ada capabilities, and AWS (Ada Web Server) is a library that allows an Ada application to interact through a web interface and services. They will both be ported to cross linux products, targeting ARM architecture.
2.3.2. VxWorks 7 23.XX Support¶
VxWorks 7 versions released in 2023 (expected to be named 23.03, 23.06, 23.09 and 23.12) will be supported.
2.3.3. VxWorks Helix x86 64 bits support¶
VxWorks Helix support will be extended to the x86 64 bits targets, with VxWorks 7 Cert as a GuestOS.
2.4. Bare Metal Support¶
2.4.1. Jorvik support for light-tasking run-time¶
Jorvik is an extension of the Ravenscar profile introduced in Ada 2022, relaxing some restrictions such as a single entry per queue. The light tasking run-time provided for bare metal and some cross ports will now support Jorvik. For more information see our Jorvik blogpost
2.5. IDE¶
2.5.1. Documentation Generation without compilation¶
GNATdoc will be able to operate without the need of a pre-compilation phase, and will produce results even on partially malformed files.
2.5.2. Visual Studio Code Official support¶
VS Code is moving out of the beta phase and will be officially supported for code editing, code formatting, building and debugging.
2.6. GNATcoverage¶
2.6.1. Integrated instrumentation through compilation driver¶
Instrumentation for coverage is currently a two-step process: first, the source code is processed to generate a new set of source files with instrumentation. Next, the latter set of sources is built and run. To make this process more seamless, we’re going to implement a mode where the instrumented code is generated on the fly during compilation. This will provide a transparent workflow and avoid the need to manage a separate set of files.
This feature will be made available as beta, not intended for production.