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.)

GNAT GPL 2012 is here!

I’ve been waiting anxiously for the 2012 edition of the GNAT GPL compiler and the accompanying GNAT Programming Studio update, and now the wait is finally over:

Get the GNAT GPL 2012 package

Coinciding with the GNAT GPL 2012 release, we also get a bunch of updates to all the other great tools, such as:

And a whole slew more. I’ve personally installed GNAT GPL 2012, the new GPS, AWS 2012, GNATColl 2012, Florist 2012 and XML/Ada 2012 on my Slackware64 boxes, and everything went without a hitch. It just worked. Next up: Getting familiar with some of new Ada 2012 features. Should be fun.

AdaCore Releases GNAT Pro 7.0

I’m fairly sure I’ll never be able to afford GNAT Pro, but that wont stop me from being very excited about the release of GNAT Pro 7.0:

AdaCore today announced the availability of GNAT Pro 7.0, a major new version of the company’s flagship development environment product. This latest annual release completely implements the upcoming Ada 2012 language revision, offers a range of improvements (many based on user suggestions), supports several new platforms, includes an important new testing tool (GNATtest), and enhances several existing tools. As with all AdaCore products, GNAT Pro is Freely-Licensed Open Source Software (FLOSS)

Having full Ada 2012 support in an Ada compiler is pretty damn awesome. Kudos to AdaCore for making it happen so fast. The only downside is that us poor people will have to wait for GNAT GPL for what will now feel like an eternity. GNAT GPL is still stuck at version 2011 on the website. But hey, time flies when you’re having fun, so I guess we best get cracking on some fun projects ASAP.

FSF GNAT 4.3.4 binaries for OpenBSD/amd64 5.0

This is just a quick one to let you know that Tero Koskinen has done a couple of packages for OpenBSD/amd64 5.0 to help alleviate some of the pain of bootstrapping GNAT:

GNAT is somewhat painful to bootstrap on new platforms and existing binaries for OpenBSD/amd64 are for older releases, so I made fresh ones for OpenBSD 5.0 release on amd64 (x86_64 for Linux people) platform.
Tasking and most other “common” features should be supported, although I suspect that GNAT-AUX 4.6.x from passes more ACATS tests. But once you have 4.3.4 installed, you can use it to bootstrap GNAT-AUX 4.6.x.

You can get the packages from and then it’s just a simple matter of using pkg_add to install them.

You can read the full release announcement from Tero here.

Ada on Slackware

I finally got around to writing an article about Ada Programming on Slackware. Actually that’s probably overstating things a bit, as no actual Ada programming is happening in the article. Instead the focus is on how to install an Ada compiler and some Ada libraries on a Slackware system.

It is by no means a complicated process, but then again nothing is complicated if you know how it’s done. This article is squarely aimed at Ada programmers who perhaps do not live and die by the commandline.

The article is also a first for me, because it contains videos of the entire compile/install process. Yes, that’s right, you get to “enjoy” my gentle voice, while I struggle with the English language. I know videos aren’t exactly the best way to convey information about these things, but I do think that they are good addition for someone to whom tar zxvf something.tar.gz is completely alien.

At least I hope so.

Feel free to let me know if you think I’ve completely wasted my time doing these videos or if you’d like me to do more.

If you don’t want to bother with the article, you can go straight to the videos:

I think my next article might be about Ada tasking, unless you’ve got a better suggestion?

Solaris GNAT Packages

If you’ve been craving for some Ada loving on Solaris, then now is perhaps the time to rejoice. Yesterday Maciej Bliziński contacted me and asked for help finding people who were willing to put in a bit of time and effort in testing his new Ada frontend for GCC 4.6.x on Solaris.

You can read his request at the mail list.

If you’re both a Solaris user and an Ada programmer, then this should be grand news to you. Please get in touch with Maciej, if you’re interested in helping him test these new packages.

Building FSF GCC with GNAT for Mac OS X

Building FSF GCC with GNAT for Mac OS X is not a trivial task, despite Simon J. Wright’s very clear and concise notes/instructions.

I’m building on a 15″ Macbook Pro with a 2.4 GHz Intel Core 2 Duo processor and 4 GB of RAM, running Mac OS X Lion 10.7.1 with Xcode 4.1. FSF GCC Ada requires a working GNAT compiler. I started with GNAT GPL 2011, which I installed at /opt/gnat-gpl-2011, so I adjust my PATH to make this compiler the default choice: $ PATH=/opt/gnat-gpl-2011/bin:$PATH

So it all starts with GNAT GPL from libre.adacore. This step is by far the simplest to understand. Going forward it gets a lot more complicated, and unless you’re some kind of compiler wizard, you’re probably going to find Simon’s notes invaluable for getting FSF GCC up and running on your Mac.

GNAT GPL 2011 is out!

And so is the 2011 versions of all the software, such as AWS, XML/Ada and GNATcoll.

GNAT GPL 2011 is, as you probably know, the GPL edition of the AdaCore Ada compiler. The package comes complete with compiler and the excellent Ada/C/C++ IDE GNAT Programming Studio.

Obviously there are a lot of changes and new stuff in the 2011 GNAT GPL package, but some of the most notable are:

  • Improved support for Ada 2012
  • More flexible and more efficient project manager tool
  • Support for unloading Ada plug-ins
  • Improved support for Ada constructs on the .NET platform
  • More detailed exception messages (-gnateE switch)
  • complete support for Lego MINDSTORMS hardware, including audio and I2C sensors

I’m especially interested in the new Ada 2012 features and in the -gnateE switch. I could do with some more information in my exceptions.

I haven’t tried any of the new stuff yet, as download speeds are currently abysmal. GNAT GPL is downloading at 18.8kb/s so it’ll be a while yet before I can get my hands on the shiny new stuff.

Ada Tools in NetBSD pkgsrc Repository

Obviously I should’ve reported on this yesterday, but I got caught up in a bunch of meetings and other boring non-Ada things.

But here you go, with a slight delay:

The big news of the day is that NetBSD has imported all the packages(*) into the pkgsrc repository. This means that NetBSD and DragonFlyBSD users can build GNAT, the GNAT Programming Studio, and others from source today if they update pkgsrc to the repository head. They will show up in a few months in the next quarterly release (2011Q1), and at that time maintainers for NetBSD and DragonFlyBSD will build the binary packages.

You can read the full announcement here.

This is obviously good news, both for Ada in general and for *BSD users specifically.

Oh, and on a final note you can now subscribe to the DragonLace maillist for instant news and discussion about the project.