- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
New switches—no-project for gprbuild and gprclean
A new command line only switch --no-project is added to gprbuild and gprclean. When this switch is used, the project file used by the tool is the default one in <prefix>/share/gpr/_default.gpr.
New warning for ineffective use clauses
Compiler's support for detecting unused entities (-gnatwu) has been extended to properly identify useless or "ineffective" use- type and use-package clauses.
GPS: Menu separators more visible in dark themes
The menu separators have been made more visible in dark themes.
More aggressive inlining of expression functions
Expression functions are now inlined more aggressively when optimization is enabled, overriding most of the usual heuristics.
Aug 28th, 2017
SPARK’s way of finding runtimes has been improved
Previously, extra setup was required to make SPARK work with a non-default runtime, even when the project file contained all the information. Now, SPARK uses the same mechanism to find the runtimes as gprbuild does; as long as all required tools are installed and in the PATH, SPARK will find and use the correct runtime according to the --RTS and --target switches passed to it, or Runtime and Target attributes defined in the project.
GNATCOLL.Projects: support for excluded source files
GNATCOLL.Projects now provides access to the attributes that define excluded source files (Excluded_Source_Files and Excluded_Source_List_File).
Aug 25th, 2017
Improved support for 64-bit timers in Ravenscar
When a 64-bit timer is available in the hardware, the Ravenscar runtimes targeting bare-metal platforms can now take advantge of it to support 64-bit delays, thus lowering the number of interrupts generated for long delays.
Aug 23rd, 2017
Ordering of checks for manual proof better preserved
When manual proof is used, the order of checks is important for matching existing proofs to the checks. The SPARK tools now preserve this order better than previously. This simplifies the usage of SPARK tools when doing manual proof.
Improved performance of ‘Image for enumeration types
The compiler generates faster code for attribute Image applied to user-defined enumeration types when the sources are compiled with optimizations enabled.
Clock on Linux is now monotonic
The high-resolution system clock for tasking operations on Linux was previously subject to time jumps and was at the mercy of a privileged user resetting the clock and wreaking havoc with delay and sleep operations. The clock has been enhanced to be monotonic and is no longer subject to the aforementioned perturbations.
Wildcards in attribute Ignore_Source_Sub_Dirs
Wildcards are now allowed in the value of attribute Ignore_Source_Sub_Dirs, allowing to exclude groups of directories from the source directories of the project.
Aug 14th, 2017
Improve type name matching in gnatdbg
Both gnatdbg.printers.PrettyPrinter and gnatdbg.generics.Match.TypeName have been enhanced to be able to match pretty GDB type names (i.e. the result of `str(gdb_type)`) in addition to their raw names (`gdb_type.name` or `gdb_type.tag`).
Aug 11th, 2017
PolyORB: iac: ignore pragma javaPackage
The IDL-to-Ada compiler iac now ignores pragma javaPackage. This is a convenience for those also using idlj (idl-to-java), because idlj recognizes that pragma.
Aug 5th, 2017
Better subprogram input annotations
If a subprogram takes one or more components of one global object as inputs (as opposed to reading the object as a whole), CodePeer formerly omitted these from the list of inputs in the annotations generated for the subprogram. Now the global object is listed as an input. This means that if either or both of Some_Record.Field_1 and Some_Record.Field2 are global inputs to a subprogram, then Some_Record will be listed as an input.
Improve interrupt handling on bare-metal Cortex-A/R
The Ravenscar runtimes targeting the Xilinx ZynQ7000 and the Hercules TMS570 now support FPU and SIMD operations in interrupt handlers. The ZynQ runtimes now also support nested interrupt handling.
Restriction lifted on Discard_Names in ravenscar-sfp
The ravenscar-sfp runtime profiles used to discard identifier names. This made Enum'Image, for example, return the representation value instead of the actual name. This restriction is no longer present.
GPS: Revamping of Help/GNAT Runtime menu
GNAT runtime menu items for cross platforms have been moved into a separate submenu of Help/GNAT runtime instead of placing them after Help/About submenu.
gnatdbg: TypeName can match names with regexps
gnatdbg.generics.Match.TypeName is now able to check that the name of input types matches a given regular expression.
gnatdbg: TypeName can recurse on basis types
gnatdbg.generics.Match.TypeName is now able to recurse on basis types (typedef'd types or integer sub-range basis type) in order to find one type that matches the given name.