SPARK 2014 is the new version of SPARK, a software development technology specifically designed for engineering high-reliability applications.
Ada TeX Python C Coq Makefile Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
alt-ergo @ 125b2cd Updated git submodules May 30, 2018
benchmark_script Q613-002 make why3.conf dynamic again Jun 23, 2017
common R509-027 Initial prototype support for pointers in SPARK Aug 10, 2018
cvc4 @ eea9e86 Updated git submodules May 31, 2018
design_case_studies minor cleanup of executable bits for non-executable files Apr 10, 2015
docs automatic update of examples Aug 19, 2018
gnat2why minor add contract to Get_Default_Initialization Aug 20, 2018
gnatmerge Minor: Update copyright notice. Jan 4, 2014
gnatprove R509-027 Initial prototype support for pointers in SPARK Aug 10, 2018
include R810-016 Mark all lemmas from SPARK lemma library as terminating Aug 10, 2018
lrm_hlr minor cleanup of executable bits for non-executable files Apr 10, 2015
meetings/tool_architecture_June_2012 minor typos in comments Apr 16, 2015
papers (no-tn-check) Version of AVoCS paper for EASST journal Jul 26, 2018
reqs minor fix casing of GNATProve in docs Jul 4, 2017
scripts (no-tn-check) script to check comment properties Mar 19, 2018
share/spark R719-008 Restore counterexamples for z3 Jul 31, 2018
slides R426-004 Add slides for keynote Jul 23, 2018
testsuite R629-024 Update test and output for red_black_trees Aug 15, 2018
trace_units_script Minor: improved instructions of the trace units script Oct 1, 2014
why3 @ 2e3a138 Updated git submodules Aug 8, 2018
z3 @ 9ad65a7 Updated git submodules Jul 19, 2018
.gitattributes R619-011 Script updating output based on diff first Aug 6, 2018
.gitignore (minor) create object dir for xgen project Feb 24, 2017
.gitmodules (no-tn-check) add branch info to submodules Sep 12, 2017
.gitreview P721-001 gitreview file Aug 22, 2016
CONTRIBUTING.md Q511-002 Add file to describe external contributions May 11, 2017
COPYING3 Add GPLv3 license Jan 28, 2011
MANIFEST.examples PC08-009 Document stopwatch example in the UG and distribute it May 17, 2018
Makefile (no-tn-check) remove directory output from CP output Jul 9, 2018
Makefile.libprove minor update of a historic reference to Hi-Lite Mar 9, 2016
README.md (no-tn-check) Refresh README's information Aug 16, 2018
spark2014vsn.adb Minor: update header. Nov 3, 2014
spark2014vsn.ads Q810-028 dummy version for SPARK Aug 30, 2017

README.md

CII Best Practices

1. Introduction

This repository contains the source code for the SPARK 2014 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, for example 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 transfered 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 Altran, you can visit the AdaCore website for more information.

3. Community version

There is a Community version of the tools, readily packaged, and suitable for research and hobbyist use. You can download it from AdaCore's website.

4. Community

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

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

6. Building SPARK

In order to build SPARK, you need to install first 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.

6.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 2018, use the branch gpl-2018, as follows:

git checkout gpl-2018

SPARK repository uses submodules to keep in synch 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.

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