News Archive

Ada-Europe 2016 online registration open

The online registration for the annual Ada-Europe conference on reliable software technologies is open now.

The programme includes a tutorial on Ada 2012 contracts by Ada in Denmark member Jacob Sparre Andersen.

Note that there is a reduced rate if you sign up no later than Tuesday 17 May.

An Ada language library repository

Work has started designing a source text repository for Ada libraries. Hopefully it will soon overtake my own attempt at the same task.

After a short discussion with Thomas Løcke about the subject, I think I’m in favour of having an Ada specific tool/repository because:

  • Using the platform specific package manager is typically restricted to the system administrator.
  • I fear that platform specific package managers have a too simplified view of dependencies, compared to what software developers attempt to put up with.
  • There is some benefit in being able to use the same command to install an Ada source library, no matter which platform you are working on today.

The major challenges I see (which maybe aren’t all that big), are related to documenting and validating which libraries work with which other libraries.

Direct conflicts can be identified through conflicting compilation unit names.

Dependencies can be validated through building a library and running its internal regression test on each of the targeted development platforms.  If the internal regression test passes, one can reasonable assume that the library works with (exactly) the selected versions of the libraries it depends on.  Passing on one development platform should be enough to release, but all the development platforms the combination has passed on should be documented.

Please join the project, and do your bit to move it forward.

A useful, general OOP pattern

Emmanuel Briot has published an interesting extension to my usual guidelines (happily stolen from the Quality and Style Guide) on declaring tagged types.

Basically the pattern is (in my version):

subtype Parent is Parent_Type_Package.Instance;
type Instance is new Parent with private;
subtype Class is Instance'Class;
type Reference is access all Class; --  Optional, only if you really need access types

What do you think of it?

And do you prefer Emmanuel’s naming style or mine?

Ada-Europe 2016 conference deadline extended

The submission deadline for the Ada-Europe 2016 International Conference on Reliable Software Technologies has been extended to Sunday 24 January.

Please consider if you have some Ada experiences, which the rest of the Ada community could learn from or be inspired by.  Experience report submissions don’t have to be more than a long (less than one page) abstract.

GNAT 6 experience report (very short)

John Marino has packaged GNAT 6 from FSF for FreeBSD and DragonFly.

I’ve installed FreeBSD with GNAT 6, and tried to see if there were any obvious differences to the older versions (I use GNAT 4.9 and 5 on Debian).

So far the result is that it is more picky about anonymous access types. (Maybe even too picky. I’m trying to figure that out.)

Here is an example:

GNAT 6.0.0 20151129 (snapshot) -=> GNAT AUX [FreeBSD64]
Copyright 1992-2015, Free Software Foundation, Inc.

Compiling: /usr/home/sparre/org.opentoken-6.0b/opentoken-production-parser-lalr-parser_lists.adb
Source file time stamp: 2015-12-10 10:32:39
Compiled at: 2015-12-24 13:56:17

   487.       return (Element => Position.Item'Access);
                                 |
        >>> access discriminant in return aggregate would be a dangling reference

 746 lines: 1 error
gnatmake: "/usr/home/sparre/org.opentoken-6.0b/opentoken-production-parser-lalr-parser_lists.adb" compilation error

The subroutine which causes the problem is:

   480     function Constant_Reference
   481       (Container : aliased in List'Class;
   482        Position  : in Parser_Node_Access)
   483       return Constant_Reference_Type
   484     is
   485        pragma Unreferenced (Container);
   486     begin
   487        return (Element => Position.Item'Access);
   488     end Constant_Reference;

Switching to 'Unrestricted_Access makes the compiler accept the function, but is it safe?

(Debian/experimental also has GNAT-6.)

Ada DevRoom at FOSDEM 2016

FOSDEM 2016 will host an Ada Developers Room. Make sure to arrange to come to Brussels in the last week of January 2016, if you want to meet up with other members of the European Open Source Ada community.

Traditionally the Ada DevRoom provides both introductory talks about Ada, highly technical presentations, and a chance to experience the Beaujolais effect.

The programme for the Ada DevRoom will be published on on the FOSDEM website once it is ready.

Call for Contributions – Ada-Europe 2016

It is time to start working on your submissions for next year’s Ada-Europe conference. The submission dead-line is 17 January 2016. Remember that both scientific papers and industrial presentations (experience reports, etc.) are welcome.

Please see the full call for contributions for details.