catala/.nix/catala.nix
Louis Gesbert deb12d2c4a Bump version to 0.8.0
Changelog:
---

A lot has been going on, with more than 530 patches and 70 PRs merged since
0.7.0 last summer. In summary:

- Quite a lot of syntax improvements and changes. Checkout the latest
  [cheat-sheet](https://catalalang.github.io/catala/syntax.pdf) for an overview

- Allow local `let ... equals ... in ...` definitions

- Better error messages and positions throughout

- Added the ability to directly call a scope and retrieve its outputs, like a
  function

- Added disambiguation, allowing to access structure fields without specifying
  the structure type each time

- Added automated resolution of operators, allowing e.g. to write just `+` in
  place of all the type-specific operators `+.`, `+$`, `+@`, `+^`, etc.

- More consistent priority for operators. It is no longer allowed to write `a
  and b or c` without parenthesis.

- Added and changed some operators (`date + duration` now allowed either way,
  `int / int` now returns a decimal, added `duration / duration`)

- Added the ability to have variables and functions defined at
  top-level (outside of any scope). See annex A of the tutorial for details.

- Added support for functions with multiple arguments

- Some big refactors in the compiler, allowing much better code sharing between
  the different passes, and making it much easier to extend. Also added the
  possibility to run the type-checker earlier, etc.

- Countless bug-fixes

- Improvements to our proof backend with Z3

- A tool to automatically synchronise with the upstream French law from
  Legifrance
2023-03-08 18:07:53 +01:00

77 lines
1.2 KiB
Nix

{ lib
, alcotest
, ansiterminal
, benchmark
, bindlib
, buildDunePackage
, calendar
, cmdliner
, cppo
, dates_calc
, fetchFromGitHub
, js_of_ocaml
, js_of_ocaml-ppx
, menhir
, menhirLib
, ocamlgraph
, pkgs
, ppx_deriving
, ppx_yojson_conv
, re
, sedlex
, ubase
, unionfind
, visitors
, z3
, zarith
, zarith_stubs_js
}:
buildDunePackage {
pname = "catala";
version = "0.8.0"; # TODO parse `catala.opam` with opam2json
minimumOCamlVersion = "4.11";
src = ../.;
duneVersion = "3";
nativeBuildInputs = [ cppo menhir ];
propagatedBuildInputs = [
alcotest
ansiterminal
benchmark
bindlib
cmdliner
dates_calc
js_of_ocaml
js_of_ocaml-ppx
menhirLib
ocamlgraph
pkgs.z3
ppx_deriving
ppx_yojson_conv
re
sedlex
ubase
unionfind
visitors
z3
zarith
zarith_stubs_js
];
# Currently there is no unit tests in catala and Cram tests are handled by clerk
doCheck = false;
meta = with lib; {
homepage = "https://catala-lang.org";
description =
"Catala is a domain-specific programming language designed for deriving correct-by-construction implementations from legislative texts.";
license = licenses.asl20;
maintainers = with maintainers; [ ];
};
}