[FOSDEM] FOSDEM 2019 - Ada Developer Room - Sat 2 Feb 2019 - Brussels
Dirk Craeynest
Dirk.Craeynest at cs.kuleuven.be
Thu Jan 10 22:46:46 CET 2019
-----------------------------------------------------------------------
Ada-Belgium is pleased to announce the program for its
9th Ada Developer Room at FOSDEM 2019
(Ada at the Free and Open source Software Developers' European Meeting)
on Saturday 2 February 2019
Université Libre de Bruxelles (ULB), Solbosch Campus, Room AW1.125
Avenue Franklin D. Roosevelt Laan 50, B-1050 Brussels, Belgium
Organized in cooperation with Ada-Europe
www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem.html
fosdem.org/2019/schedule/track/ada
-----------------------------------------------------------------------
*** General Information
FOSDEM, the Free and Open source Software Developers' European Meeting,
is a free and non-commercial two-day weekend event organized early
each year in Brussels, Belgium. It is highly developer-oriented and
brings together 8000+ participants from all over the world.
The goal is to provide open source developers and communities a
place to meet with other developers and projects, to be informed
about the latest developments in the open source world, to attend
interesting talks and presentations on various topics by open source
project leaders and committers, and to promote the development and
the benefits of open source solutions.
The 2019 edition takes place on Saturday 2 and Sunday 3 February.
It is free to attend and no registration is necessary.
In this edition, Ada-Belgium organizes once more a series of
presentations related to the Ada Programming Language and Free or
Open Software in a s.c. Developer Room. The "Ada DevRoom" at FOSDEM
2019 is held on the first day of the event, Saturday 2 February 2019.
This year FOSDEM has a total of 15 Ada-related presentations by 12
authors from 7 countries! A mini-poster about the Ada DevRoom [1],
as well as a one-page Call for Participation for the Ada DevRoom [2]
is available; they can be used to help announce the event, and to
give an idea about its scope.
[1] www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem-cfpart-poster.jpg
[2] www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem-cfpart-a4.pdf
*** Ada Programming Language and Technology
Ada is a general-purpose programming language originally designed
for safety- and mission-critical software engineering. It is used
extensively in air traffic control, rail transportation, aerospace,
nuclear, financial services, medical devices, etc. It is also
perfectly suited for open source development.
Awareness of safety and security issues in software systems is
increasing. Multi-core platforms are now abundant. These are
some of the reasons that the Ada programming language and technology
attracts more and more attention, among others due to Ada's support for
programming by contract and for multi-core targets. The latest Ada
language definition was updated early 2016. Work on new features is
ongoing, such as improved support for fine-grained parallelism, and
will result in a new Ada standard scheduled for 2020. Ada-related
technology such as SPARK provides a solution for the safety and
security aspects stated above. More and more tools are available,
many are open source, including for small and recent platforms.
Interest in Ada keeps increasing, also in the open source community,
and many exciting projects have been started.
The Ada DevRoom aims to present the facilities offered by the
Ada language (such as for object-oriented, multicore, or embedded
programming) as well as some of the many exciting tools and projects
using Ada. FOSDEM is an ideal fit for an Ada Developer Room. On the
one hand, it gives the general open source community an opportunity
to see what is happening in the Ada community and how Ada technology
can help to produce reliable and efficient open source software.
On the other hand, it gives open source Ada projects an opportunity to
present themselves, get feedback and ideas, and attract participants
to their project and collaboration between projects.
*** Ada Developer Room Presentations (room: AW1.125, 76 seats)
The presentations in the Ada DevRoom start after the opening FOSDEM
keynote. The program runs from 10:30 to 19:00.
10:00-10:30 - Arrival & Informal Discussions
Feel free to arrive early, to start the day with some informal
discussions while the set-up of the DevRoom is finished.
10:30-10:35 - Welcome to the Ada DevRoom
by Dirk Craeynest - Ada-Belgium
Welcome to the Ada Developer Room at FOSDEM 2019, 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,
and direct members in many other countries.
10:35-11:20 - An Introduction to Ada for Beginning and Experienced
Programmers - by Jean-Pierre Rosen - Adalog
An 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!
11:30-11:50 - Sequential Programming in Ada: Lessons Learned
by Joakim Strandberg - Mequinox
What's hot right now in the proposal for Ada 2020 is increased
support of safe parallelism. However, the support for sequential
programming in Ada 2012 is absolutely great and probably
underestimated. This presentation will demonstrate lessons
learned from making an Ada binding to the Wayland Client API:
how to leverage nested subprograms, pragma Unmodified, subpools,
Gnatcheck and GPS to provide a flexible/enjoyable way of working
and at the same time maximize compile-time error checking when
developing sequential algorithms.
12:00-12:50 - Autonomous Train Control Systems: a First Approach
by Julia Teissl - FH Campus Wien
Numerous small villages in Austria have lost their connections
to the railway network because it was no longer cost-effective to
operate under a regular schedule. To re-establish these connections,
FH Campus Wien started the project "autonome, schienengebundene,
on-Demand, open-Track Systeme" AuSoDoTS (Autonomous rail bound
on-Demand Open Track systems). The project's objective is to develop
a concept for how to safely operate small autonomous trains, without
a fixed schedule. Trains are only approaching to stations when
a passenger explicitly requests them by pressing a button at the
station or using a mobile app. A short track from Liesing at the
edge of Vienna to Kaltenleutgeben, a small town in Lower Austria,
could be one of the first test locations.
As a first approach a small model railway has been built. The model
has two purposes. One is to find the optimal placement for passing
loops where trains can pass each other, since the connection is
mostly single track. The other is to test different scheduling
algorithms for on-Demand service. To fulfill the strict safety
aspects of a passenger transportation system, the programming
language Ada is used and in following versions SPARK will be used
as it can be formally verified to be correct then.
13:00-13:20 - Controlling the Execution of Parallel Algorithms in Ada
by Jan Verschelde - University of Illinois at Chicago
Tasking in Ada provides an effective tool for shared memory
parallelism. An "any time" algorithm is an algorithm that, given
some more resources, will improve the accuracy of an estimate.
For example, consider the estimation of Pi by a Monte Carlo method.
With multitasking, the status of the running of an "any time"
algorithm can be monitored without interrupts. The programming
concepts will be illustrated with examples of algorithms in
polyhedral geometry. The demonstrated code belongs to the free
and open source PHCpack.
13:30-13:50 - Persistence with Ada Database Objects
by Stephane Carrez - Twinlife
The presentation describes how Ada Database Objects helps in
connecting to an SQLite/MySQL/PostgreSQL database from Ada.
It explains how by mapping SQL tables in Ada records, it simplifies
saving and updating database records and makes the application more
safe and reliable. The presentation will briefly describe the Ada
code generator (Dynamo) that is behind this.
14:00-14:50 - Shrink your Data to (almost) Nothing with Trained
Compression - by Gautier de Montmollin - Ada-Switzerland
We will show a new Trained Compression generic plug-in, which can
leverage prior information about the data to be transmitted for
reducing further raw compressed streams. We will also present
a pick-and-choose technique feature called "Preselection" for
improving the Zip archiving process. The Zip-Ada library has met
over the years the needs of several professional users who need the
file archiving features, or the data compression features to reduce
storage and shorten transmission times. We will show the evolution
of this full-Ada portable library and the advantages of using it.
15:00-15:20 - GSH: an Ada POSIX Shell to Speed Up GNU Builds on Windows
by Nicolas Roche - AdaCore
GSH is an implementation of a POSIX shell developed for the Windows
platform. The aim of the project is to speed up builds of GNU
projects on Windows in a large automated build infrastructures.
GSH can be used to compile projects depending on autotools, UNIX
make, ... It is up to 2-3 times faster than Cygwin shells for
GCC builds.
In this talk I will present:
- what makes GSH faster than other Windows shells for building GNU
projects;
- how GSH was developed;
- how you can use it to speed up your builds;
- the limitations;
- what features of Ada we benefit from in this project.
15:30-15:50 - What is Safety-Critical Software, and How Can Ada and
SPARK Help? - by Jean-Pierre Rosen - Adalog
We are (too much) used to software having bugs as an unavoidable
fate. But for safety-critical software, like the code that's driving
planes or trains, "Failure is Not an Option". This presentation
exposes the constraints of such software, and how they require a
special state of mind, special methods, and special tools - like Ada
and SPARK. And these can be useful for more casual programming -
zero bug software is nice, even when not safety-critical!
16:00-16:50 - Secure Web Applications with AWA
by Stephane Carrez - Twinlife
Web application security is often underestimated, and using a
secure framework can help reduce application vulnerabilities.
Ada Web Application (AWA) is a web framework that leverages Ada's
safety features to provide a secure environment on top of which
safe applications are built. AWA is based on several Java-like
technologies such as Java Beans, Java Servlet, Java Server Faces,
other standards such as OAuth2, REST and OpenAPI, all implemented
in Ada.
This presentation briefly describes the AWA architecture and how
applications are built with it. The presentation highlights some
of the Ada functionalities that contribute to the safety and make
applications secure and reliable.
17:00-17:20 - Distributed Computing with Ada and CORBA using PolyORB
by Frédéric Praca - Ada-France
Imagine you have a fantastic Ada program or library but you want
more! You want it to be scalable and used by other developers
with other languages. The goal of this presentation is to show you
the way to achieve it without bending to fashion. :) As of today,
we see distributed computing as Web services, mainly RESTful stuff.
Some technologies exist since years and are working successfully in
many systems. One of these is CORBA which allows Object-Oriented
communication between applications in languages such as Ada or C++.
In this presentation, the chosen middleware providing CORBA
infrastructure is PolyORB. We will use it to make a distributed
version of an existing piece of software, the Corporate Bullshit
Generator (CBSG), and create client applications in C++ and Ada.
This will allow us to put the power of Ada and PolyORB into a
distributed system.
17:30-17:50 - Cappulada: Smooth Ada Bindings for C++
by Johannes Kliemann - Componolit
Writing Ada bindings for C and especially for C++ is a tedious but
not necessarily sophisticated task. There are several approaches
to both C and C++ but many of them lack desired language features,
generate non-compilable code or are project specific. With Cappulada
(a coinage of coupling, CPP and Ada made pronounceable) we try a
more general approach that aims to support complex language features
such as templates or inheritance while providing a semantically
appropriate mapping of object structures and types. The talk will
also cover which features can be mapped and what is not feasible
or possible.
18:00-18:20 - The AZip Archive Manager: a full-Ada Open-Source Portable
Application - by Gautier de Montmollin - Ada-Switzerland
If you open the AZip application with a can opener, it will look
like an Ada programmer's paradise: you'll find Ada on all levels:
- the AZip user interface (UI framework specific);
- the AZip abstract application layer (platform-independent);
- the archive and data compression library (Zip-Ada);
- the user interface framework (GWindows);
- the run-time library (GNAT's).
We will quantify this.
Portability is matched on three different definitions of the word:
- platform-independence for the abstracted part and the Zip-Ada
library - no porting effort at all there;
- you can easily port the user interface layer since most of the
job is done in the abstracted part;
- no installation needed: the version built on GWindows is contained
in a single executable file and can be run from a USB stick;
it can be even run in a stealth mode, without writing settings
to the registry of the host system.
18:30-18:50 - Proof of Pointer Programs with Ownership in SPARK
by Yannick Moy - AdaCore
Pointers are a notorious "defect attractor", in particular when
dynamic memory management is involved. Ada mitigates these
issues by having much less need for pointers overall (thanks to
first-class arrays, parameter modes, generics) and stricter rules
for pointer manipulations that limit access to dangling memory.
Still, dynamic memory management in Ada may lead to use-after-free,
double-free and memory leaks, and dangling memory issues may lead
to runtime exceptions.
The SPARK subset of Ada is focused on making it possible to guarantee
properties of the program statically, in particular the absence of
programming language errors, with a mostly automatic analysis. For
that reason, and because static analysis of pointers is notoriously
hard to automate, pointers have been forbidden in SPARK until now.
We are working at AdaCore since 2017 on including pointer support
in SPARK by restricting the use of pointers in programs so that
they respect "ownership" constraints, like what is found in Rust.
In this talk, I will present the current state of the ownership
rules for pointer support in SPARK, and the current state of the
implementation in the GNAT compiler and GNATprove prover, as well
as our roadmap for the future.
18:50-19:00 - Informal Discussions & Closing
Informal discussion on ideas and proposals for future events.
*** RISC-V Developer Room Presentation (room: AW1.126, 82 seats)
In addition to the above presentations in the Ada DevRoom, there's also
an Ada-related presentation scheduled in the RISC-V Developer Room.
13:30-14:45 - Alternative Languages for Safe and Secure RISC-V
Programming - by Fabien Chouteau - AdaCore
In this talk I want to open a window into the wonderful world of
"alternative" programming languages for RISC-V. What can you get
by looking beyond C/C++. So I will start with a quick introduction
to the Ada and SPARK languages, the benefits, the hurdles. I will
also present an overview of the applications and domains where they
shine, when failure is not an option. I will then do a short getting
started session and provide all the details for you to start RISC-V
programming with Ada/SPARK on different platforms (QEMU, HiFive1,
FPGAs with PicoRV32). At the end of the talk, I will give my view
of the RISC-V architecture and community from the perspective of
an alternative languages developer. I will cover the good points,
the risks, and provide some ideas on how the RISC-V can keep the
door open.
*** More information on Ada Developer Room
Speakers bios, pointers to relevant information, links to corresponding
FOSDEM pages, etc., are available on the Ada-Belgium site at
www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem.html
We invite you to attend some or all of the presentations: they will
be given in English. Everybody interested can attend FOSDEM 2019;
no registration is necessary.
We hope to see many of you there!
Dirk Craeynest, FOSDEM Ada DevRoom coordinator
Dirk.Craeynest at cs.kuleuven.be (for Ada-Belgium/Ada-Europe/SIGAda/WG9)
The content of all messages is the sole responsibility of the author.
More information about the FOSDEM
mailing list