In this final Gem we look back over some highlights of the series, including the topics covered and your favorite Gems. We also look to the future with the creation of a new blog. Continue Reading in Ada Answers »

No one likes to spend the time on testing. It's tedious and boring
writing the test harness, the tests themselves, and keeping them in sync with
your development. Fortunately there is GNATtest, a small tool that is part of GNAT
toolset to support automating the creation and maintenance of a test harness, making
developing unit tests a bit less painful.

GPRinstall is a tool recently developed by AdaCore that provides an easy way
to install a project, whether it be a standard project, a library project, an
aggregate library project, or a standard aggregate project. This tool eliminates any need for manually copying build artifacts, as well as providing a robust installation procedure that works on all platforms. Continue Reading in Ada Answers »

GPRinstall is a tool recently developed by AdaCore that provides an easy way
to install a project, whether it be a standard project, a library project, an
aggregate library project, or a standard aggregate project. This tool eliminates any need for manually copying build artifacts, as well as providing a robust installation procedure that works on all platforms. Continue Reading in Ada Answers »

There are many options for generating and controlling output from the compiler. Often these are not sufficiently well known, since they are buried in complex documentation. This Gem takes a look at the options and shows how they can be used to refine the output you get from the compiler. Continue Reading in Ada Answers »

It is possible to enhance the GPRbuild database with a new
XML file that describes the characteristics of a new language.
Then, a project file where this language is declared will automatically
invoke the compiler for the sources of this language with all the
necessary options. Continue Reading in Ada Answers »

This series of Gems describes the concurrent maze solver project ("amazing") included with the GNAT Pro examples. The first Gem in the series introduced the project itself and explained the concurrent programming design approach. This second Gem explores the principal change that was required for optimal performance on multicore architectures. This change solved a critical performance bottleneck that was not present when the original program was first deployed in the 1980s, illustrating one of the fundamental differences between traditional multiprocessing and modern multicore programming.

This Gem series introduces the "amazing" project included with the GNAT Pro compiler examples. The project is so named because it involves maze solving (as in "Joe and Julie go a-mazing"). But these aren’t typical mazes that have only one solution. These mazes can have many solutions, tens of thousands, for example. The point is to find all of them as quickly as possible. Therefore, we solve the mazes concurrently, applying multiple CPUs in a divide-and-conquer design. In this first Gem we introduce the program and explain the approach. Continue Reading in Ada Answers »

With the addition of many new kinds of assertions in Ada 2012, it is tempting
to state properties of your data that "forget" about the possibility of
overflows. GNAT has defined a compilation switch and a pragma that make it
possible.

In Ada 2012, assertions that state desired properties of programs are not
limited to pragma Assert. This Gem presents how pragma Assertion_Policy can be
used to control which of these assertions should be executed at run time.

In the previous two Gems of this series, we saw how the aspects Static_Predicate and
Dynamic_Predicate can be used to state properties of objects that
should be respected at all times. This Gem is concerned with the
Type_Invariant aspect.

In the previous Gem in this series, we saw how the aspect Static_Predicate can be
used to state properties of scalar objects that should be respected at all
times. This Gem is concerned with the Dynamic_Predicate aspect.

The new revision of Ada is full of features for specifying properties of
types. In this series of three Gems, we describe three aspects that can be
used to state invariant properties of types. This first Gem is concerned with
the Static_Predicate aspect.

This Gem describes some of the concepts behind character encoding and
Unicode. It explains why multiple character sets exist, and how to deal with
them in your application if you want to handle international input and output.

The GNAT technology introduced the notion of projects with its 3.15 release in
2002. This notion was revisited and stabilized in later versions, and projects
are now supported by all GNAT tools. They are a convenient way to describe how
the sources of your application are organized, and how they should be
manipulated by the various tools. They can also be used from your own tools
through a convenient API in the GNAT Components Collection, which this Gem
introduces.