AdaCore Paris Tech Day 2016: Arnaud Chalet - GNAT Pro Roadmap
Transcript of AdaCore Paris Tech Day 2016: Arnaud Chalet - GNAT Pro Roadmap
GNAT Pro Roadmap
Arnaud Charlet
GNAT Pro 17 overview
• 51 platforms (46 cross, 5 native)• Support for Ada 83, 95, 2005, 2012, SPARK 2014• Including Ada 2012 COR. 1:2016
• Based on GCC 6 & GDB 7.10
1.2.1
Unified product version3.9.1
6.3.1
7.5.1
3.2.11.9
3.4.1
2.11.1
1.5.1
1.7.1
1.9.1
2.4.1
2.13.12.2.1
16.0.1
4.9.1
1.4.1
17.1
Release Schedule
October: Preview release Oct 2016: 17.0
February: Major release Feb 2017: 17.1
July: Corrective release July 2017: 17.2
Oct 2017: 18.0
Feb 2018: 18.1
July 2018: 18.2
New Ports
• Aarch64-ios (ipad)• ARM PikeOS (linux and windows hosts)• ARM Linux (Hard Float ABI)• Generic PowerPC Linux
3 states of Product Support
• Fully Supported: active development, one major release and one corrective release every year, premium support, bug fixes, wavefronts.
• Long Term Support (LTS): no new features, one corrective release every year, everything else included: premium support, bug fixes, wavefronts.
• Baselined: no new releases, no wavefronts, workarounds and advice on the use of the (frozen) technology.
Ports on 7.4 Long Term Support
• Solaris native compilers (sparc 32 & 64 bits, x86)• Solaris hosted VxWorks 6 compilers (e500v2, x86, ppc)• AIX
Improved Code Generation
• Support for Intel AVX 512 instruction sets, for variants of ARM Cortex As, ...)
• Improved code optimization• Fewer Adjust/Finalize calls during object initialization• Fewer redundant checks (e.g. on type conversion)• Various packed array improvements• Reduced stack and secondary stack usage
Binder and Linker Improvements
• Improved elaboration order algorithm• User-defined constraints on elaboration order• Support for gold linker on Linux native• Alternate linker, usually faster
C/C++
• Support for C++11, C++14• Partial support for C++17• Default mode for C is now -std=gnu11 (was -std=gnu89)• Default mode for C++ is now -std=gnu++14 (was -
std=gnu++98)• Improvements in the diagnostics machinery (more
precise locations, offering suggestions, extra command line controls, ...)
• scalar_storage_order attribute for big/little endian handling in C
VxWorks Platforms
• Improved module load speed in debugger• ACATS certificates on all VxWorks 6 platforms• VxWorks 7 supported on• ARM• PowerPC 32bits (64bits under development)• e500v2• x86_64
PikeOS
• Ravenscar-sfp runtime now available
Bare Metal Platforms
• GNAT Extended Ravenscar Profile• Multiple protected entries in protected objects• Protected entry queuing• Relative delay statements• Relaxed protected entry barrier content
• ARM: Easier runtime customization• Leon/Leon3• SMP support (leon3 only)• Hardware user initialization
Native Platforms
• AWS now included in GNAT Pro subscription• XMLAda, GNATcoll and AWS come precompiled with
GNAT Pro package
Debugger
• Exception message now displayed by debugger when stopping on an exception
• Task switching support when debugging from a core file• New --readnever GDB command-line option, disabling
the load of debugging information.
GPRbuild – Multipurpose Builder
• --build-script switch to generate standalone build script that allows repeating the build in a controlled environment.
• Default output redesigned to improve usability
$ gprbuild -PprjCompile
[Ada] main.adb[Ada] p.ads
Bind[gprbind] main.bexch[Ada] main.ali
Link[link] main.adb
GPRbuild
• Improved handling of configurable runtimes• Support for response files during compilation• Enhanced support for shared libraries• Fully standalone libs supported on all linux
platforms (aka encapsulated libs)• New library kind static-pic• Exports from library can be limited to only symbols
in its interface• Distributed builds: numerous stability and usability
improvements
GPRbuild
• gnatmake –Pproject now calls gprbuild• gprinstall allows to install separately executables and
associated debug information• gprls can display a closure of a main
GNATtest – Unit Testing Framework
• Improved support for stubbing• Generation of stubs for subprograms in private part• Generation of stubs for parent packages• Ability to specify unit exclusion in --stub mode
• Generation of one test driver per unit• Improved GNATcoverage integration
GNATcoverage – Qualified Coverage
• Support for arm-elf & native x86-windows finalized• Improved object coverage on all architectures• Support for incremental coverage analysis• Allow consolidation from intermediate results• Allow accumulation of new coverage info within a
common intermediate results file.• Support for incidental and stub coverage confinement• When unit A uses unit X, let users ignore what was
covered in unit X during tests dedicated to unit A
AWS – Ada Web Server
• Enhanced support for document style SOAP messages, especially in ada2wsdl.
• Support for HTTP DELETE and PUT commands for client code
GPS - GNAT Pro IDE
• Improved debugger support• New default perspective
GPS - GNAT Pro IDE
• Improved debugger support• New default perspective• Variables Tree view
GPS - GNAT Pro IDE
• Improved debugger support• New default perspective• Variables Tree view• Redesigned Breakpoints view
GPS - GNAT Pro IDE
• Improved debugger support• New default perspective• Variables Tree view• Redesigned Breakpoints view• Set breakpoints before starting the debugger
GPS - GNAT Pro IDE
• Improved debugger support• New default perspective• Variables Tree view• Redesigned Breakpoints view• Set breakpoints before starting the debugger• Improved call stack view
GPS - GNAT Pro IDE
• Improved debugger support• New default perspective• Variables Tree view• Redesigned Breakpoints view• Set breakpoints before starting the debugger• Improved call stack view• Enhanced python scripting
GPS - GNAT Pro IDE
• Improved debugger support• New default perspective• Variables Tree view• Redesigned Breakpoints view• Set breakpoints before starting the debugger• Improved call stack view• Enhanced python scripting• Improved support for embedded debugging
• OpenOCD support for flash/debug boards
GPS
• Revamp bookmarks: groups of bookmarks, drag-and-drop, bookmark notes,...• New Preferences dialog, including Key Shortcuts and
Plug-ins, as well as help messages• Menu bar for floating windows• Performance improvements (project view,
search&replace, messages load)
GPS
• GNAThub integration• CodePeer integration improvements
§ Faster loading of messages§ More info when reviewing messages§ Multi-message review
• Qgen integration (Visualize model, Qgen Debugger)
GNATbench
• Eclipse Neon (4.6.x) support• VxWorks 653 3.1 support• Ada template code assist• AJIS examples integration
CodePeer
• Incremental analysis (“persistent annotations”)§ Use CodePeer interactively (faster)§ Analyze large code bases faster or more precisely
• “No False Positive" mode§ Very few wrong messages§ Some potential errors missed
• Improved precision and new messages§ Loop unrolling§ Improved handling of static array bounds§ Improved analysis of unchecked conversions, access checks,
test always true§ Global objects used in subprograms displayed in annotations
CodePeer
• User Interface§ Review multiple messages at once from GPS§ More info when reviewing messages§ More powerful and easier to use handling of baseline runs§ Ability to exclude complete source directories from analysis§ Faster loading of messages
• Improved support for non GNAT compilers§ Support for arbitrary (e.g. 24bit) shift intrinsic § Support for null as a System.Address value
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 2016.