Commit Graph

87 Commits

Author SHA1 Message Date
Louis Gesbert
70cbfdb9ac Add a CATALA_INCLUDE env variable
It'll help while we wait for the implementation of project-wide specifications.
2024-03-08 17:36:00 +01:00
Louis Gesbert
e0928677b1 Small ocaml/js output rehaul
Print to json directly rather than depend on yojson and a ppx.

Note: this should be tested with the website in order to validate that the Json
output is 1-to-1.
(a second step could be to simplify this output, now that it's manual)
2024-02-21 11:28:56 +01:00
Louis Gesbert
7b25a42970 Better version handling
Always generate the version through git when possible, and encode that within
the binaries so that `catala --version` does'nt give misleading information.

Previously we used dune's builtin functionality, but that resorts to a hack at
install time which is unpleasant and doesn't work with our use of `opam
install`.

The cost is a re-linking of catala_utils and the binaries upon git commit, which
is hardly noticeable.
2024-01-24 11:41:34 +01:00
Louis Gesbert
7f6f89c4c4 Build the html manpages as part of the doc target 2024-01-19 16:12:29 +01:00
Louis Gesbert
853b841ce3 Remove LaTeX dependencies from opam file
to make the ci caches an order of magnitude smaller
2024-01-18 16:14:27 +01:00
Louis Gesbert
bb2ae885be Use published conf-ninja package
rather than hardcode the depexts
2024-01-16 11:54:28 +01:00
Louis Gesbert
b82e4e05fe Bump version number in opam file 2024-01-16 11:54:28 +01:00
Louis Gesbert
ce812a6685 ninja_utils has been moved away 2024-01-16 11:54:28 +01:00
Louis Gesbert
acdaf7c57d Remove french_law, examples, merge clerk into catala package 2024-01-16 11:54:23 +01:00
Louis Gesbert
d256cf5eec Update minimum OCaml version 2023-11-28 15:41:27 +01:00
Louis Gesbert
326990678f Enforce recent yojson version
2.0 doesn't need biniou or easy_format anymore
2023-09-27 13:08:15 +02:00
Louis Gesbert
cf8f365cf7 Extract Catala version from dune
(avoids multiple, possibly inconsistent, definitions ; also syncs up Clerk
versions with Catala)
2023-09-27 13:08:15 +02:00
Louis Gesbert
15e0339800 Update ocamlformat
Apparently this time it has no incidence on our code.
2023-09-01 16:19:58 +02:00
Louis Gesbert
f35825a9c1 Update CI build 2023-08-02 12:22:24 +02:00
Louis Gesbert
210349e356 Alpine deps: add packages required for rebuilding the cheat sheet 2023-07-10 17:40:31 +02:00
Louis Gesbert
0c6ae736cb Forbid "base 0.16"
There is trouble with CI because it needs bash, and apparently the upgrade also
leads to conflicts between yojson and its ppx (which is where the dependecy upon
base lies)
2023-06-18 18:35:39 +02:00
Louis Gesbert
c564e70636 Correctly setup ocolor on all output channels
(and some cleanup of the remaining deps to ANSITerminal)
2023-06-08 12:14:11 +02:00
Louis Gesbert
404dc00db1 Alcotest is not a test dependency and needs stubs
This fixes the dependency, and the static linking scripts
2023-05-02 11:49:09 +02:00
Denis Merigoux
ba44949bea
Pin js_of_ocaml version : see https://github.com/CatalaLang/catala/issues/442 2023-04-04 17:13:00 +02:00
Louis Gesbert
508992de33 Embed the Pygments Catala lexer
This enables the HTML output to work without a custom Pygments installation (or
the proper venv activated)
2023-03-13 14:41:24 +01:00
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
Louis Gesbert
517efac836 Add explicit uutf dependency
(ubase no longer depends on it, but we use it directly)
2023-01-04 17:55:39 +01:00
Louis Gesbert
59f81b4002 Rework and update the cheat-sheet
and pygments syntax coloring
2022-12-19 16:05:02 +01:00
Denis Merigoux
2d26040a7a
Obelisk already in dev mode 2022-09-05 14:12:23 +02:00
Raphaël Monat
973c346328 Add support for is_leap_year in z3 backend and runtime 2022-09-05 09:28:58 +02:00
Raphaël Monat
f337cebc4b Fix missing dependency for dune build 2022-08-30 15:06:53 +02:00
Denis Merigoux
e5aed3efcb
Merge branch 'master' into rmonat_dates_calc_lib 2022-08-19 14:59:46 +02:00
Raphaël Monat
0b73fbbac4 Add support for first and last day of month operators 2022-08-18 21:22:50 +02:00
Denis Merigoux
aee08d5d10
Revert "Remove constraing because https://github.com/ocaml/opam-repository/pull/21795 has been merged"
This reverts commit bb27840d79.
2022-08-10 11:33:22 +02:00
Denis Merigoux
bb27840d79
Remove constraing because https://github.com/ocaml/opam-repository/pull/21795 has been merged 2022-08-09 15:32:43 +02:00
Denis Merigoux
922d3af7dc
Bump dependency of js_of_ocaml 2022-08-09 12:39:26 +02:00
Denis Merigoux
03e598128a
Bumping version number 2022-08-08 17:26:07 +02:00
Raphaël Monat
ffd2e1dec3 Merge branch 'master' into dates_calc_lib 2022-08-06 17:26:55 +02:00
Raphaël Monat
4f12338d49 Switch from calendarlib to in-house dates_calc 2022-08-06 17:07:01 +02:00
Emile Rolley
d85812109c refactor(compiler): remove the camomile dependency due to the new Utils.String_common module based on Ubase 2022-08-05 10:55:45 +02:00
Emile Rolley
03aebf7f1c feat(backends/html): improve the code generation with ToC and details tags 2022-08-05 10:55:45 +02:00
Louis Gesbert
0bd80c7c22 Update INSTALL.md instructions 2022-07-20 12:05:19 +02:00
Louis Gesbert
39139816ff Use groff directly instead of man2html 2022-07-20 12:05:19 +02:00
Louis Gesbert
dfccf8e139 Run all CI tests through a Docker container
Also reworks some dependency handling
2022-07-20 12:05:17 +02:00
Louis Gesbert
985ecdac6d Bump required OCaml version to 4.13
This version of OCaml introduces [let-punning](https://v2.ocaml.org/manual/bindingops.html#ss:letops-punning)

It is just syntactic sugar, but OCamlformat makes use of it, without a configuration option, when the OCaml version permits.
This means that the same version of OCamlformat gives different results depending on the underlying OCaml version. Our options, if we want to keep the forced-format policy on the repository, are therefore:
- to disable it whenever binding operators are used (with this PR that's a lot of places, and this becomes too cumbersome, besides defeating the purpose)
- to force devs to use an earlier version of OCaml so that reformatting outputs something compatible
- to bump the minimum OCaml requirement

The latter is the simplest, but it can be reviewed if compatibility is required. Last option would be to report the issue to OCamlformat and hope that they provide a workaround...
2022-07-11 17:42:34 +02:00
Emile Rolley
92ebb4194b refactor(api_web/runtime): runtime_value derive yojson_of 2022-05-25 14:26:58 +02:00
Louis Gesbert
6837af4e80 Upgrade Cmdliner dep 2022-05-09 11:39:18 +02:00
Louis Gesbert
971dd82691 Disable dune generated opam files
They avoid a bit of duplication, but don't support depexts and having to
commit the generated opam files means that, often, the wrong file is
fixed.
2022-05-09 11:34:15 +02:00
Denis Merigoux
20996a10be
Cleaning 2022-03-09 17:06:25 +01:00
Louis Gesbert
9456ace6b1 Make z3 an optional dependency, add 'make dependencies-noz3'
Also the CI will no longer compile/use z3
2022-03-09 12:53:17 +01:00
Denis Merigoux
e5e0164fee
Remove unused dev dependencies in opam file
As suggested by https://github.com/ocaml/opam-repository/pull/20861#issuecomment-1061807613
2022-03-08 17:25:25 +01:00
Denis Merigoux
65a5a42c16
Change settings 2022-03-08 15:01:18 +01:00
Denis Merigoux
c5d63148f8
Fix dune build -p catala @runtest 2022-03-08 11:28:42 +01:00
Denis Merigoux
2d63a08f23
Removed extra newlines 2022-03-07 19:41:27 +01:00
Denis Merigoux
8fb681baa1
Bump version to 0.6.0
Changelog:
* Catala as a proof platform (Z3 backend, safety checks)
* More expressivity for exceptions
* Multiple states for one variable
* Build system relying on ninja-build
* Better debug printers
* Alternative compilation mode without try ... with exceptions
2022-03-07 19:35:56 +01:00