3. Release Schedule
November: Preview release Nov 2015: 7.4.0
February: Major release Feb 2016: 7.4.1
July: Corrective release July 2016: 7.4.2
…
4. GNAT Pro 7.4 Overview
• 120+ new features
• Around 59 platforms (50 cross + 9 native)
• Support for Ada 95, 2005, 2012, SPARK 2014
• Based on GCC 4.9 & GDB 7.10
5. New Ports
• VxWorks 7
• VxWorks 653mc (aka 3.0)
• ARM PikeOS
• PowerPC PikeOS
• Generic e500v2 Linux
• Windows 10
6. VxWorks
• New Ports: vxworks653 3.0, arm-vxworks 7, e500v2-
vxworks 7, ppc-vxworks 7, x86_64-vxworks 7
• Support for PPC VxWorks 6 Cert as a Guest OS of PPC
VxWorks 653 3.0
• Support for cert runtime and APEX processes on ppc-
vx6cert
7. Bareboard Targets
• New pragma Volatile_Full_Access to guarantee full
object access
• New restrictions
– No_Task_At_Interrupt_Priority
– No_Dynamic_Sized_Objects
– No_Implicit_Protected_Object_Allocations,
No_Implicit_Task_Allocations (refinement of
No_Implicit_Heap_Allocations)
8. Improvements on Ada Containers
• Performance improvements of “for … of” loops
• Performance improvements of various operations
• Iteration over container of indefinite components
• Ability to suppress container and tampering checks
for E of My_Vector loop
…
end loop;
pragma Suppress (Tampering_Checks);
9. New Constructs
• pragma Ignore_Pragma
To ease porting legacy code
• Restriction No_Use_Of_Entity
To easily detect fine grained API calls
• Type_Invariant’Class on interface types
• CPU_Set implemented
– More flexible use of processors
pragma Ignore_Pragma (Global);
pragma Restrictions
(No_Use_Of_Entity => Ada.Text_IO.Put);
10. Code Generation
• SSE floating-point extensions on x86 by default
More reliable fpt results, better performance
• Debug info using standard DWARF
• New runtime for setjmp/longjmp exceptions
• Integration of libsanitizer on Linux
Detection of invalid memory access and double deallocation
• Simplified handling of simple controlled types
11. Libraries
• Most libraries (gnatcoll, aws, polyorb, xmlada, …) are now
installed via gprinstall
• AWS
– Many improvements in support for SOAP/WSDL
– URI pattern support for WebSocket registry
– Certificate passphrase support
12. Libraries
• Florist: support for shared libraries
• GNATcoll
– Improved GNATCOLL.Memory (double deallocation detection,
detect invalid memory access, memory usage, …)
– More flexible API and better memory management in
refcounting packages
13. Tools
• Support for Target and Runtime project attributes in most tools
• Support for unused code removal under Windows (--gc-sections)
• Upgrade to GDB 7.10
– Python scripting improvements
– Ability to embed Python scripts in the executable and have
them automatically loaded.
14. Generation of C headers
• From simple Ada specs to C headers
• Complement (reverse) of –fdump-ada-spec
package Pack is
type T is record
X : Integer;
Y : Integer;
end record;
procedure Proc (Param : T);
end Pack;
#include “standard.h”
#ifndef PACK_ADS
#define PACK_ADS
typedef struct _pack__t {
integer x;
integer y;
} pack__t;
extern void pack__proc(const pack__t param);
#endif
15. GPRbuild and libgpr
• GPR API (libgpr): new basis/replacement for GNATCOLL.Projects
Provide easy to use API for parsing and modifying project files
• New tools gprls and gprname
Multi-language project-aware equivalents of gnatls and gnatname
16. GPS
• New C & C++ code intelligence engine based on libclang
Code completion,
Navigation,
Block folding
• HiDPI monitors support
• Better jobs control
• Improved performance
23. QGen
• Support of Stateflow
• Matlab 2015a/b
• Improvements of generated code
• Optimization of code for switch blocks
• Better performances both in memory usage and execution time
• Factorization of code for reference models and model libraries
26. Release Schedule
November: Preview release Nov 2015: 7.4.0
February: Major release Feb 2016: 7.4.1
July: Corrective release July 2016: 7.4.2
Nov 2016: 17.0
Feb 2017: 17.1
July 2017: 17.2
Nov 2017: 18.0
…
27. AdaCore and GitHub
https://github.com
A source hosting web service
Modeled for social coding
De facto standard for public source hosting service and community
management
28. AdaCore and GitHub
• Some sources and repositories available from libre.adacore.com
• Other repositories from forge.open-do.org
• In 2016, AdaCore will gradually make repositories available via
GitHub
• For example: repository for libgpr and gpr tools (gprbuild, …)
29. New library: libadalang
• To develop Ada analysis tools
• Created from scratch
– Modern and easy to use API (Ada and Python)
– High level queries (e.g. find all references, call tree)
– Easy to deploy (no dependency on GNAT)
– Works on incorrect code (so, no legality checking)
– Incremental analysis
30. New library: libadalang
• Initially used as new source navigation and code completion
engine in IDEs
• New tools and rewrite of existing ones (e.g. gnatpp)
• Will also be available to everyone
31. What about ASIS?
• Provides similar capabilities, using an older, well established API
• Continue supporting ASIS on a stabilized branch in the long term
– Support
– Bug fixes
– Independence from GNAT version
• No new major development on ASIS (e.g. no support for Ada 2018)
32. • 2016: libadalang available on GitHub
• Q3 2016: IDEs and GNATpp 17.0w using libadalang
• Feb 2017: IDEs and GNATpp 17.1 using libadalang
• Feb 2018: libadalang part of GNAT Pro 18.1
Libadalang Roadmap
33. Customer Survey
• We need your input on how we are doing and whether our
products and services (support, consulting, …) answer your needs
• A customer survey campaign will start November 2015