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.

News @ Ada Information Clearinghouse

Since I’ve been pretty lousy at keeping these pages updated these past months, I thought I’d share a good resource for Ada news: Ada Information Clearinghouse. News keep coming in at a pretty reliable pace, and while they don’t catch every little thing out there, they do get a lot of it, so check out AdaIC for your daily dose of Ada programming news.

Parallel programming for sequential programmers

Our very own Jacob Sparre Andersen is doing a course on Parallel Ada programming for sequential programmers at Open Source Days 2013:

Assuming you already know sequential programming in a procedural programming language, this course can get you started writing parallel programs using the Ada programming language.

Short and sweet. The course contents are as follows.

  1. A quick introduction to the basics of sequential programming in Ada. — Just enough to allow you to map your existing programming knowledge to Ada. 45 minutes lecture + 45 minutes exercises.
  2. Creating and understanding basic tasks (parallel threads of execution) with Ada. — I.e. parallel programming without interaction. 45 minutes lecture + 45 minutes exercises
  3. Communication between tasks using safe, shared objects. One kind of interaction between tasks. 45 minutes lecture + 45 minutes exercises
  4. Direct communication between tasks using rendezvous. — Another kind of interaction between tasks. 45 minutes lecture + 45 minutes exercises
  5. Patterns for implementing parallel execution. 45 minutes lecture

I’m so going. Next step: Getting an Open Source Days 2013 ticket.

A New Ada Programming Community

If you’re not already at Google+, now might be a good time to sign up, since a new Ada programming community has been started there. At the time of writing we’re up to a solid 40 members. We have both discussion and news categories, so feel free to sign up just to promote your own projects. Those of us who use Google+ heavily would enjoy having Ada readily available, and both Ada and your project will benefit from the link exposure.

So come one, come all and help turn this community into a lively place.

New Ada 2012 Rationale

The Ada 2012 Rationale has been released to the joy and benefit of all Ada programmers.

The Rationale for Ada 2012 provides an overview of new Ada 2012 features, examples of their use, compatibility with Ada 95 and 2005, and more. It was written by John Barnes, and was sponsored in part by the Ada Resource Association. This is an unofficial description of the language; refer to the proposed Ada 2012 standard for detailed language rules.

Written by John Barnes this is not to be missed. The Ada 2012 Rationale is available as both HTML and PDF.

Ada-Europe 2013 Website Live

With the Ada-Europe 2012 conference well over, it’s time for the Ada-Europe 2013 announcement:

The 18th International Conference on Reliable Software Technologies – Ada-Europe 2013 will take place in 2013 in Berlin, Germany, from June 10 to 14, 2013. The conference will offer an outstanding technical programme, invited talks, an exhibition from Tuesday to Thursday, and a series of tutorials on Monday and Friday.

The conference will provide an international forum for researchers, developers and users of reliable software technologies all over the world. Presentations and discussions cover applied and theoretical work currently conducted to support the development and maintenance of reliable software systems.

Sounds good to me! Berlin isn’t too far away from Denmark, so chances are high that I’ll actually be attending next year. From what I’ve heard about this years conference, these are not events to be missed.

Naturally there’s not a whole lot of action on the website this early on, but there is a Call for Papers (PDF) that might be of interest. The website has been setup by Ada Deutschland.

Press Release – Reliable Software Technologies, Ada-Europe 2012

Chances are high that you’ve already seen this elsewhere, but on the off-shot that you haven’t, here’s the latest press release for the Ada-Europe 2012 convention:

17th Ada-Europe Conference on Reliable Software Technologies

International experts meet in Stockholm

Stockholm (29 May 2012 20:00) – Ada-Europe organizes from 11 to 15 June 2012 the “17th International Conference on Reliable Software Technologies – Ada-Europe 2012” in Stockholm, Sweden. The event is organized in cooperation with Ada Sweden and with ACM’s Special Interest Groups on Ada (SIGAda), on Embedded Systems (SIGBED), and on Programming Languages (SIGPLAN).

The conference offers two days of tutorials, three keynotes, a full technical program of refereed papers and industrial presentations, two special panel sessions, an industrial exhibition, and a social program.

Eleven excellent tutorials on Monday and Friday cover a broad range of topics: Advanced Ada Support for Real-Time Programming; Developing High-Integrity Systems with GNAT GPL and the Ravenscar Profile; How to Optimize Reliable Software; DO-178C – The Next Avionics Software Safety Standard; Designing and Checking Coding Standards for Ada; Experimenting with ParaSail – Parallel Specification and Implementation Language; Basics of Oracle Database Programming with Ada – Introduction to the Konada.Db Library; Oracle Database GUI-programming on MS Windows; The Benefits of Using SPARK for High-assurance Software; The Use of Proof and Generics in SPARK; Design of Multitask Software – the Entity-Life Modeling Approach.

Three eminent keynote speakers have been invited to open each day of the core conference program. Bertrand Meyer (ETH Zurich, Switzerland), in a keynote entitled “Life with Contracts”, will present some results based on his long experience of using contracts as a core practice of development, and will also present new developments in applying contracts to verification and concurrency. Göran Backlund (Combitech, Sweden), in his keynote “What is the Mission of a Software Developer?”, will use a broader view on human knowledge in an engineering environment to find new tools for learning to manage the development challenges better. Jean-Loup Terraillon (ESTEC/ESA, the Netherlands) will present the impact of multi-core architectures on the space industry in his keynote “Multicore Processors – the Next Generation Computer for ESA Space Missions”.

The technical program presents 15 refereed and carefully selected papers on the latest research, new tools, applications and industrial practice and experience, a collection of 8 industrial presentations reflecting current practice and challenges, vendor presentations, a panel session on “What is Language Technology in Our Time?”, and a second panel session on “Reliable Software, a Perspective from Industry”. Springer Verlag publishes the proceedings of the conference, as LNCS Vol. 7308.

The industrial exhibition opens in the mid-morning break on Tuesday and runs until the end of the afternoon break on Thursday. Exhibitors include AdaCore, Altran Praxis, Ellidiss Software, Rapita Systems, and Vector Software.

A special “Ada in Motion” session during the breaks on Thursday will show examples of Ada being used in moving equipment, such as drive-by-wire and segway-like Lego Mindstorm robots and Arduino based devices. An announcement will also be made on the public release of the reference implementation for the “Ada Way 2010/2011” programming contest.

The social program includes on Wednesday evening a conference banquet dinner at Östermalms Saluhall, a marketplace food hall in a magnificent building from 1888, in the heart of Stockholm. Each day, coffee breaks and sit-down lunches offer ample time for interaction and networking.

The venue for the Ada-Europe 2012 conference is Näringslivets Hus, a modern conference center situated in the very heart of Stockholm, located near the Östermalmstorg metro station and close to the Gamla Stan historic district.

The full program is available on the conference web site. Registration is still open.

For more information you can go to the conference website.

AdaIC Survey

The website is one of the better online Ada resources, and with the latest survey they’ve put up, it seems they are aiming even higher. We got this from Randy Brukardt:

As part of our ongoing efforts to improve the AdaIC website, we’re conducting a short survey of Ada users to guide possible improvements to the site. Find the survey at:

Thanks in advance for your time.

Randy Brukardt, (former) AdaIC webmaster

P.S. You’ll need to have Javascript enabled to access the survey, as I found out when I tried it. 🙂

Personally I’d like to see some more code on the website, and a tight integration with Google+.

Trimming cost and size: The software side of the story

In his Trimming cost and size: The software side of the story article Benjamin Brosgol from AdaCore delves into the subject matter with his usual gusto. If you’ve done any kind of software development, you’ll know that the cheapest bugs to fix are those found before the product is launched and this even more so for embedded software, where it can be a real pain to update the devices. Brosgol does a good job of describing these issues:

For several reasons, buggy software is especially acute in embedded applications. First, an embedded system typically monitors or controls some external device, so in critical applications an error or vulnerability could compromise safety, security or both; lives could be lost, and substantial assets could be at risk.

Second, debugging embedded software is harder than debugging native software. For example, embedded systems generally involve concurrency and real-time constraints, which introduce opportunities for errors such as deadlock, missed deadlines and corrupted data. Because some of these bugs are timing dependent and not easily reproduced, they could go undetected until the software is fielded. With perhaps thousands or even millions of systems in use, even a bug with low probability of being triggered will occur eventually.

Third, correcting a defect in an embedded product already in service is complex and expensive. Solutions that involve wireless uploads raise serious security issues that are just beginning to be addressed in equipment ranging from medical devices to automotive systems.

One solution to help programmers produce fewer bugs is design by contract or contract-based programming, and halfway down Brosgol introduce us to the contract features of Ada 2012, specifically the pre- and postconditions for subprograms:

Other language technologies treat contracts as run-time constructs. A recent example is Ada 2012, in which contracts take the form of Boolean conditions that are supplied in contexts such as invariants for types and preconditions and/or postconditions for subprograms. The programmer can control whether the software generates code to check these conditions at run-time; a failed check raises an exception. In this way, the specified contracts can be used either as formal comments that document the program’s intent or as run-time checks that are part of a testing regimen.

Next Brosgol goes on to talk about the extensive restrictions programmers can utilize in Ada to tailor the run-time requirements to their exact needs, using the Restrictions pragma. The entire article is a very nice and informative read, so be sure not to miss it.

AdaCommons Temporarily Moved

Due to some missed renewal emails our beloved AdaCommons wiki is temporarily down and out for the count. Or rather it has been relocated for now to, so we wont have to go into withdrawal from not having access to the AdaCommons wiki.

I don’t have any ETA on when AdaCommons will be back online, but I suspect it wont too far into the future.