spark-by-example VS acsl-by-example

Compare spark-by-example vs acsl-by-example and see what are their differences.

spark-by-example

SPARK by Example is an adaptation of ACSL by Example for SPARK 2014, a programming language which is a formally verified subset of Ada (by tofgarion)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
spark-by-example acsl-by-example
3 1
150 94
- -
0.0 1.8
over 1 year ago almost 3 years ago
Ada TeX
- MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

spark-by-example

Posts with mentions or reviews of spark-by-example. We have used some of these posts to build our list of alternatives and similar projects.

acsl-by-example

Posts with mentions or reviews of acsl-by-example. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-12-30.
  • Why the C Language Will Never Stop You from Making Mistakes
    5 projects | news.ycombinator.com | 30 Dec 2021
    Yes, Frama-C uses a plugin architecture, and there are plugins to verify all kinds of things, including functional correctness. The Frama-C tutorials page,

    https://frama-c.com/html/tutorials.html

    Has a link to the ACSL-by-example PDF which gives examples of creating in C various C++ STL inspired data structures and routines:

    https://github.com/fraunhoferfokus/acsl-by-example/blob/mast...

    Also, it is less effort to write bug-free code in OCaml than C. The Coq/Gallina proof assistant even has an OCaml-extraction (and also Haskell-extraction) feature where you extract runnable code from a formally verified algorithm in the Gallina specification language. (It's generally easier to proof theorems about code in the theorem prover itself, go figure.) Most of these C verification tools are written in OCaml, not C, with varying levels of assistance from Coq/Gallina.

    The main reason the functional languages make it easier is because you generally execute side-effect free functions on data structures to give them the mathematical property you want. For example, you execute a lexicographical sort function on a list of strings and then the strings in the list all satisfy the mathematical property of a total ordering. You don't have to do any reasoning about the "in-between state" where pointers under the hood are being manipulated, and you don't have to add pre-conditions and post-conditions about the global environment if the code is side effect free and does not access non-local memory.

What are some alternatives?

When comparing spark-by-example and acsl-by-example you can also consider the following projects:

adawebpack - Ada WASM Runtime and Bindings for Web API

sol2 - Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:

RecordFlux - Formal specification and generation of verifiable binary parsers, message generators and protocol state machines

hacl-star - HACL*, a formally verified cryptographic library written in F*

spark_unbound - Unbound data structures in Ada-Spark.

adastegano - Programa de esteganografía, por Andres_age

CompCert - The CompCert formally-verified C compiler

basalt - Collection of formally verified building blocks

gcc

libsparkcrypto - A cryptographic library in SPARK 2014

libkeccak - SHA-3 and other Keccak related algorithms in SPARK/Ada.