The Free and Open Source Developers' Meeting (FOSDEM) is an annual event held in Brussels, Belgium, in February. The 2014 edition will take place on Saturday the 1st and Sunday the 2nd of February. Ada-Belgium has organized a series of presentations related to Ada, to be held in a dedicated Developer Room, on the first day of the event.
Ada is a general-purpose language originally designed for safety- and mission-critical software engineering. It is used extensively in air traffic control, rail transportation, aerospace, nuclear, financial services and medical devices. It is also perfectly suited for open source development. The latest Ada standard was published by ISO in December 2012. As with the Ada 1995 and Ada 2005 standards, the new Ada 2012 standard already spreads thanks to the availability of its first full implementation which is none other than the GNU Compiler Collection (GNAT).
This DevRoom aims to present the possibilities offered by the Ada Language (object-oriented, multicore, embedded programming) as well as some of the many exciting tools and projects using Ada.
-------------------------------- Ada Developer Room Presentations (K.4.601, 85 seats) --------------------------------
The program starts after the opening FOSDEM keynote, runs from 11:00 to 19:00, and consists of 7 hours with 10 talks/demos by 8 presenters from 6 different countries, plus a 1 hour lunch break with informal discussions.
11:00-11:05 - Welcome by Dirk Craeynest - Ada-Belgium
Welcome to the Ada Developer Room at FOSDEM 2014, which is organized by Ada-Belgium in cooperation with Ada-Europe.
Ada-Belgium and Ada-Europe are non-profit organizations set up to promote the use of the Ada programming language and related technology, and to disseminate knowledge and experience into academia, research and industry in Belgium and Europe, resp. Ada-Europe has member-organizations, such as Ada-Belgium, in various countries. More information on this DevRoom is available on the Ada-Belgium web-site (see URL above).
11:05-11:55 - An Introduction to Ada for Beginning and Experienced Programmers by Jean-Pierre Rosen - Adalog
Overview of the main features of the Ada language, with special emphasis on those features that make it especially attractive for free software development.
Ada is a feature-rich language, but what really makes Ada stand-out is that the features are nicely integrated towards serving the goals of software engineering. If you prefer to spend your time on designing elegant solutions rather than on low-level debugging, if you think that software should not fail, if you like to build programs from readily available components that you can trust, you should really consider Ada!
12:00-12:50 - Ada Task Pools: Multithreading Made Easy by Ludovic Brenta - Debian Project
Ada is one of very few programming languages that support multithreading as part of the language, as opposed to libraries. Last year, we showed how Ada makes it easy to turn a single-threaded program into a multi-threaded program. We ended up with ten thousand threads working concurrently. I will briefly recap this first episode and then continue with the same program, introducing a task pool wherein a small number of threads (one per processor core) process thousands of small work units.
This presentation will feature live editing of source code, compilation and debugging. Questions from beginners are encouraged. It is not necessary to have attended the first installment. The sources of our example program will be provided to those who want to tinker with them.
13:00-14:00 - Lunch Break & Informal Discussion
A one-hour slot has been reserved for much needed interaction and informal discussion among Ada DevRoom participants and anyone potentially interested in Ada.
14:00-14:50 - SPARK 2014: Hybrid Verification using Proofs and Tests by José F. Ruiz - AdaCore
This presentation will talk about hybrid verification, an innovative approach to demonstrating the functional correctness of a program using a combination of automated proof and unit testing.
SPARK 2014 comprises a subset of Ada 2012, excluding those features not amenable to sound static verification. SPARK 2014 uses the contract-based programming provided by the latest Ada 2012 version, and uses the Ada 2012 aspect notation to strengthen the specification capabilities of Ada by the addition of new contracts for data dependencies, information flows, state abstraction, and data and behavior refinement. Once the functional behavior or low-level requirements of a program have been captured as SPARK 2014 contracts, the verification toolset can be applied to automatically prove that the implementation is correct and free from run-time exceptions. Only where verification cannot be completed automatically is it necessary to write unit tests, with the same contracts used to check the correct run-time behavior of the relevant subprograms.
15:00-15:50 - Contract Based Programming in Ada 2012 by Jacob Sparre Andersen - JSA Research & Innovation
A tutorial on how to use the Ada 2012 features for specifying detailed, checked contracts for types and subprograms -- "classes, functions and methods" if you aren't an Ada programmer already.
Contracts document constraints on how types and subprograms behave, but unlike comments they are checked -- either by when the program is compiled or on-the-fly as the program is running. Ada 2012 contract aspects will be presented together with a set of guidelines for using contract aspects consistently. The tutorial will conclude with a live test of the guidelines on some example source text.
16:00-16:25 - Formal Verification with Ada 2012: a Very Simple Case Study by Didier Willame - Argonauts-IT
After a quick reminder of the Hoare Logic and the approach for designing software by contracts, the tool suite developed by AdaCore for formal verifications is presented. To make the concepts easily understood, a little program simulating a sandpile is used.
16:30-16:55 - Speedup and Quality Up with Ada Tasking (Solving polynomial systems faster and better on multicore computers with PHCpack) by Jan Verschelde - University of Illinois at Chicago
Writing parallel versions for shared memory multicore computers with Ada tasks requires minimal modifications of the original source code. For pleasingly parallel computations we experienced almost optimal speedups. If we can afford to spend the same amount of time as one core, then we can ask how much better (e.g.: how much more accurate) we can solve a problem with p cores. This leads to the notion to "quality up". Similar to speedup factors, we can compute "quality up" factors.
In this talk we report on our coding efforts to write multicore versions of the path trackers in PHCpack, a free and open source software package to solve polynomial systems. We started investigating the use of multithreading to compensate for the overhead of double double and quad double arithmetic.
PHCpack is a software package to solve polynomial systems with homotopy continuation methods. The Ada 83 code of version 1.0 was archived as Algorithm 795 by ACM Transactions on Mathematical Software in 1999. Version 2.0 was rewritten using concepts of Ada 95. Multitasking was introduced in version 2.3.45. Its current version 2.3.84 is available on github. PHCpack relies on two external software packages: (1) the QD library of Y. Hida, X.S. Li and D.H. Bailey for double double and quad double floating point arithmetic; and (2) MixedVol by T. Gao, T.Y. Li and M. Wu for a faster mixed volume computation. The advantages of double double arithmetic are its simple memory management (a double double is stored in the same way as a complex number) and its predictable cost overhead (just as complex arithmetic). In joint work with Genady Yoffe, we experienced that on 8 cores may already be sufficient to compensate for the cost overhead caused by double double arithmetic. As computers become more powerful and larger problems lead to more propagation of numerical errors, it may well happen that double double arithmetic replaces common double precision arithmetic.
17:00-17:50 - Safer Web Servers with Ada and AWS by Jean-Pierre Rosen - Adalog
AWS is a framework that allows web servers to be written entirely in Ada. This presentation shows the main principles of AWS, and emphasizes how Ada features can be used to make servers more secure, and immune for example to buffer overrun attacks.
18:00-18:15 - Ada in Fedora Linux by Pavel Zhukov - Fedora Project
This presentation explains and demonstrates how the Fedora Linux distribution can be used for developing in the Ada language, tells about available tools and frameworks.
18:15-18:30 - Ada in Debian Linux by Ludovic Brenta - Debian Project
A short update on the current state of Ada in Debian and the plans for the next stable release which is due early 2015.
18:30-18:45 - Ada in *BSD by John Marino - FreeBSD Project
A short overview of the Ada compilers and packages available on FreeBSD, NetBSD, and DragonFly.
18:45-19:00 - Wrap Up & Future Plans
Informal discussion on ideas and proposals for future events.
------------------------------- More information on Ada DevRoom -------------------------------