• Stars
    star
    235
  • Rank 165,025 (Top 4 %)
  • Language
    Ada
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated 26 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SPARK 2014 is the new version of SPARK, a software development technology specifically designed for engineering high-reliability applications.

CII Best Practices

1. Introduction

This repository contains the source code for the SPARK project. SPARK is a software development technology specifically designed for engineering high-reliability applications. It consists of a programming language, a verification toolset and a design method which, taken together, ensure that ultra-low defect software can be deployed in application domains where high-reliability must be assured and where safety and security are key requirements.

This repository provides visibility on the development process. The main line of development is in line with the development version of GNAT, which is not directly visible to the public (although patches are regularly transferred to the FSF repository at svn://gcc.gnu.org/svn/gcc/trunk/gcc/ada), and it will probably be impossible to build the master branch of the software with any other compiler. However, buildable branches are provided corresponding to public compiler releases or the head of the FSF repository, see the section on Building SPARK below.

2. Commercial support

SPARK is commercially supported by AdaCore and Capgemini, you can visit the AdaCore website for more information.

3. Community version

3.1 Manual install

You can download a "gnatprove" package from this github project. Extracting the package and adding the bin directory to your PATH is enough. You can get the GNAT compiler from the same link, and there is a different project for GNATStudio, the IDE.

3.2 Install using alire

You can obtain SPARK via Alire. To do this, follow the installation instructions of Alire, then you can add the gnatprove dependency to an alire project using

    alr with gnatprove

Alire will download gnatprove if necessary.

3.3 The older GNAT Community version

There is an older community version of the tools, packaged with GNAT and GNATStudio. You can download it from AdaCore's website.

4. Governance

SPARK is led by AdaCore and co-developed by AdaCore, Capgemini and Inria. The SPARK team at AdaCore is responsible for the technology roadmap, taking into account the needs of all stakeholders: sales and marketing, customers, other development teams, community.

The team is organized around a set of roles for QA, integration, certification, language evolution, etc. with two roles managing interactions:

The Team Coordinator:

  • Defines the technology roadmap with all stakeholders.
  • Coordinates and organizes the work in the team.
  • Adjusts efforts and priorities based on the technology roadmap.

The Team Technical Authority:

  • Provides and maintains deep knowledge of the technology.
  • Is the main reference point for knowledge on the technology.
  • Is the software architect on the technology.

Currently these roles are exercised by Claire Dross (Team Coordinator) and Johannes Kanig (Team Technical Authority).

5. Community

News about SPARK project are shared primarily on AdaCore's blog. Discussions about SPARK occur on a public mailing-list.

6. Documentation

You can find the definition of the SPARK language in the SPARK Reference Manual, and instructions on how to use the tool, together with a tutorial, in the SPARK User's Guide.

7. Building SPARK

In order to build SPARK, you need to first install the following dependencies (and we recommend using the OPAM package manager for these):

  • ocaml compiler
  • ocamlgraph library
  • menhir parser
  • zarith library
  • camlzip library
  • ocplib-simplex library

SPARK sources are tied to the sources of GNAT compiler frontend. For this reason, you should use a compiler built from sources with a date matching the sources of SPARK. There are two options.

7.1 Building SPARK with GNAT Community

To build SPARK with GNAT Community compiler, you need to use the corresponding branch of this repository. For example, to build with GNAT Community 2020, use the branch gpl-2020, as follows:

git checkout gpl-2020

SPARK repository uses submodules to keep in sync with corresponding versions of Why3, Alt-Ergo, CVC4 and Z3, which generally track the main repositories for these tools with minor modifications for the integration with SPARK. To retrieve the corresponding branch of these submodules, do:

git submodule init
git submodule update

Then follow the instructions in the Makefile.

7.2 Building SPARK with GNAT FSF

To build SPARK with GNAT version from FSF, you need to use the corresponding branch of this repository which follows the latest changes pushed at FSF, as follows:

git checkout fsf

To retrieve the most recent version of the submodules for Why3, Alt-Ergo, CVC4 and Z3, which matches the latest changes for SPARK pushed at FSF, do:

git submodule init
git submodule update

Then follow the instructions in the Makefile.

More Repositories

1

gnatstudio

GNAT Studio is a powerful and lightweight IDE for Ada and SPARK.
Ada
373
star
2

Ada_Drivers_Library

Ada source code and complete sample GNAT projects for selected bare-board platforms supported by GNAT.
Ada
229
star
3

ada_language_server

Server implementing the Microsoft Language Protocol for Ada and SPARK
Ada
217
star
4

gnat-llvm

LLVM based GNAT compiler
Ada
173
star
5

libadalang

Ada semantic analysis library.
Ada
142
star
6

aws

AWS is a complete framework to develop Web based applications in Ada.
Ada
123
star
7

RecordFlux

Formal specification and generation of verifiable binary parsers, message generators and protocol state machines
Ada
100
star
8

gsh

A POSIX shell for Windows.
C
97
star
9

learn

Sources for learn.adacore.com
Ada
91
star
10

gtkada

Ada bindings for the GTK+ graphical library.
Ada
84
star
11

langkit

Language creation framework.
Python
75
star
12

gprbuild

GPRbuild is an advanced build system designed to help automate the construction of multi-language systems.
Ada
63
star
13

svd2ada

An Ada binding generator from SVD descriptions for bare board ARM devices.
Ada
61
star
14

bb-runtimes

Source repository for the GNAT Bare Metal BSPs
Ada
61
star
15

ada-spark-rfcs

Platform to submit RFCs for the Ada & SPARK languages
58
star
16

VSS

High level string and text processing library
Ada
49
star
17

gnatcoll-core

GNAT Components Collection – Core packages
Ada
43
star
18

gnatcoverage

GNATcoverage: Coverage Analysis Tool
Ada
32
star
19

Certyflie

Ada
30
star
20

ada-traits-containers

Generic Ada Library for Algorithms and Containers
Ada
28
star
21

why3

SPARK 2014 repository for the Why3 verification platform.
OCaml
27
star
22

e3-core

Core framework for developing portable automated build systems
Python
26
star
23

startup-gen

A startup code generator for embedded projects
Ada
25
star
24

git-hooks

Git hooks Python-based scripts
Python
24
star
25

Ada-IntelliJ

Support for Ada and SPARK languages in IntelliJ IDEA
Java
21
star
26

xmlada

The XML/Ada toolkit.
Ada
21
star
27

PolyORB

PolyORB provides a uniform solution to build distributed applications relying either on middleware standards
Ada
21
star
28

OPAVES

Open Platform for Autonomous VEhicle Systems
C
21
star
29

training_material

Ada
20
star
30

Ada-SPARK-Crate-Of-The-Year

19
star
31

gnat_community_install_script

Script to automate the installation of the GNAT Community Installers
Shell
18
star
32

cuda

Ada
17
star
33

spawn

Ada
16
star
34

libadalang-tools

Libadalang-based tools
Ada
16
star
35

gnat-gdb-scripts

GDB scripts for Ada programs built with GNAT
Python
16
star
36

win32ada

Ada API to the Windows library
Ada
16
star
37

Robotics_with_Ada

Robotics with Ada, ARM, and Lego
Ada
15
star
38

embedded-runtimes

runtimes that add support for various boards to the GNAT GPL compiler for ARM
Ada
14
star
39

gnatcoll-bindings

GNAT Components Collection – Bindings to C libraries
Ada
13
star
40

gpr

The framework for analyzing the GNAT Project (GPR) files
Ada
13
star
41

adareducer

Python
13
star
42

qemu

C
12
star
43

gnatcoll-db

GNAT Components Collection – Database packages
C
10
star
44

sparkformal

The project SPARK Formal aims at developing a complete semantics of the SPARK language in Coq.
Coq
10
star
45

UnityAdaTetris

Ada
9
star
46

markdown

Markdown parser
Ada
8
star
47

labs-material

Support Libraries for AdaCore University Labs
Ada
7
star
48

aunit

Ada
7
star
49

ada-py-bind

Ada
6
star
50

e3-testsuite

e3 testsuite driver
Python
6
star
51

RC_Car_Demo

An embedded Ada/SPARK demo
Ada
6
star
52

SPARK_Railway_Simulation_Demo

Ada
5
star
53

templates-parser

AWS templates engine.
Ada
5
star
54

Compile_And_Prove_Demo

Demo project for new web site: Compile It! / Prove It!
Ada
5
star
55

program_proofs_in_spark

This repository contains some programs from Rustan Leino's book "Program Proofs" verified with SPARK.
Ada
5
star
56

spdm-recordflux

5
star
57

RESSAC_Use_Case

A Collaborative Development Assurance Lab
Ada
5
star
58

gnatdashboard

Analyse a project.
Python
4
star
59

florist

Ada
4
star
60

Http_Cyclone

C
4
star
61

gnat-docker

Python
4
star
62

e3-aws

High level interface for CloudFormation
Python
4
star
63

Platinum_Reusable_Stack

Ada
4
star
64

wposix

Ada Windows POSIX binding
Ada
4
star
65

code_examples_server

prototype server for creating interactive "try SPARK / try Ada" webpages
Python
3
star
66

lmod_manager

lmod based management tool for GNAT and SPARK installations
Python
3
star
67

SPARK_PDI_Demo

Use of SPARK to implement Parameter Data Items
Ada
3
star
68

langkit-query-language

query language for Libadalang and Langkit
Java
3
star
69

gprconfig_kb

GPR configuration knowledge base
3
star
70

language-examples

Examples of common software engineering constructs written in Ada and SPARK
Ada
3
star
71

tictactoe

A tictactoe game written and proven in SPARK
Ada
3
star
72

RecordFlux-parser

3
star
73

RecordFlux-devutils

Python
3
star
74

ada_coding_standards

Ada
2
star
75

style_checker

The AdaCore style checker
C
2
star
76

gpr-unit-provider

GPR2 based unit provider for Libadalang
Ada
2
star
77

gnatdoc

GNAT Documentation Generator
Ada
2
star
78

Lunar_Lander_Rotation_Demo

Demonstration program that interacts with the AdaFruit BNO055 breakout board in order to send orientation data to a host computer
Ada
2
star
79

AdaSAT

Ada
2
star
80

training_labs_radar

Ada
2
star
81

uwrap

Ada
1
star
82

cheri-examples

1
star
83

z3

SPARK 2014 repository for the Z3 SMT solver.
C++
1
star
84

lal-checkers

Libadalang-based code checking infrastructure
Python
1
star
85

spark_translator

SPARK 2005 to 2014 translator
Python
1
star
86

Lumos_Maxima

Lumos_Maxima repository for VerifyThis challenge
Ada
1
star
87

training_labs_standalone

Ada
1
star
88

training_labs_solar_system

Ada
1
star
89

alt-ergo

SPARK 2014 repository for the Alt-Ergo SMT solver.
OCaml
1
star
90

lsif-ada

Ada
1
star
91

prettier-ada

Ada
1
star
92

SPARK-to-C_Tetris_Demo

Ada
1
star