Skip to content

Releases: CatalaLang/catala

v0.10.0

03 May 15:44
8d659d0
Compare
Choose a tag to compare

A new release with many improvements. Some highlights:

  • Support for list recombinations by @AltGr in #568
  • Add a few optimisations for combined list operations by @AltGr in #570
  • Allow access to intermediate variable states by @AltGr in #578
  • Syntax: add keywords in front of list filtering / arg-extremum by @AltGr in #580
  • Fix LaTeX literate output with tests by @AltGr in #581
  • Allow generation of one latex file from multiple sources, and fixes by @AltGr in #583
  • Small ocaml/js output rehaul by @AltGr in #582
  • Support externals in scalc, correctly output them in Python by @AltGr in #584
  • Allow "output subscopes" ; unify the internal representation of subscopes by @AltGr in #597
  • Rework the Message module interface by @AltGr in #601
  • Improve message formatting throughout by @AltGr in #602
  • Support for structure updates by @AltGr in #603
  • Support for direct tuple member access by @AltGr in #604
  • Improvements around external modules and error handling by @AltGr in #605
  • Update syntax highlighting rules and cheat-sheets by @AltGr in #606
  • Add env variables to set flags -O, --avoid-exceptions, --trace by @AltGr in #607
  • Unify runtime error handling by @AltGr in #611

Full Changelog: 0.9.0...0.10.0

v0.9.0

25 Jan 11:07
Compare
Choose a tag to compare

More than 900 patches since last release 😅

Here is an overview of some visible changes

What's Changed

Full Changelog: 0.8.0...0.9.0

v0.8.0

09 Mar 11:43
e4408b1
Compare
Choose a tag to compare

Summary

A lot has been going on, with more than 530 patches and 70 PRs merged since 0.7.0 last summer. Too many changes to list here in detail, so below are a few highlights, and check 0.7.0...0.8.0 for exhaustivity.

Notable caveat: installation of the Python dependencies has been reworked: make dependencies-python should set up reliably for both syntax highlighting in literal output, and running generated Python code (see french_law/python), but you will now have to either rely on the make rules, or run . _python_venv/bin/activate each time before your commands.

What's changed

  • Quite a lot of syntax improvements and changes. Checkout the latest cheat-sheet 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

v0.7.0

09 Aug 09:28
0133ad4
Compare
Choose a tag to compare

Summary

This release focuses mostly on bug fixes and under-the-hood improvements of the compiler. It also contains everything necessary to run the French housing benefits examples, which with 10,000 lines of code is the biggest Catala program so far. Thanks to all the contributors !

What's Changed

  • Use format strings directly in debug/error/log functions by @AltGr in #218
  • Reformatting of the OCaml code by @denismerigoux in #220
  • Command-line: use a record for the options by @AltGr in #221
  • DCalc optimization pass: Remove if_then_else when both branches are identical by @R1kM in #224
  • Refactor: group common functions related to backend_option in the Cli module by @EmileRolley in #222
  • Make Z3 an optional dependency by @AltGr in #223
  • Fix nix/alcotest+patch by @lIlIlIlIIIIlIIIllIIlIllIIllIII in #225
  • Proof platform: Better error message when Z3 encoding not supported, and extend GetYear support by @R1kM in #227
  • Fix logging operator location for default justifications by @denismerigoux in #229
  • [Z3encoding] Basic support for arrays by @R1kM in #228
  • [Z3encoding] Extend support for enumerations by @R1kM in #230
  • Fix typos in English tutorial by @isovector in #232
  • Adding a money rounding builtin to Catala by @denismerigoux in #233
  • Select a single scope for the proof mode by @denismerigoux in #234
  • Nice error messages for empty structs and enums by @denismerigoux in #239
  • [Z3 encoding] Add support for durations by @R1kM in #236
  • C backend : preparatory work by @denismerigoux in #235
  • fix typo by @rprimet in #242
  • Fix decimal parsing by @denismerigoux in #249
  • Adds a decimal rounding operator by @denismerigoux in #251
  • refactor(latex): print warning messages for too long block lines by @EmileRolley in #252
  • Extract py runtime by @rprimet in #246
  • Bringing structure to the Lcalc AST by @denismerigoux in #244
  • Fix money parsing by @denismerigoux in #256
  • Upgrade cmdliner to 1.1 (some API changes) by @AltGr in #258
  • Fix ocamlformat crashes, and tweak some settings by @AltGr in #259
  • Fix .git-blame-ignore-revs by @AltGr in #261
  • Add a (very simple) syntax highlighting mode for Emacs by @AltGr in #262
  • Emacs mode: small fixes + a couple typos in the english tutorial by @AltGr in #263
  • Implementing French housing benefits by @denismerigoux in #165
  • An attempt to fix some parser priorities by @AltGr in #260
  • Allocation_logement: fix parentheses in formula by @AltGr in #265
  • Refactor: add wrappers for file formatter by @EmileRolley in #264
  • Refactor the web API by serializing runtime values by @EmileRolley in #267
  • Add backend plugin support by @AltGr in #213
  • Fix Nix expressions and convert them to flakes by @W95Psp in #270
  • Compiler: support cumulative exceptions by @AltGr in #268
  • Fix Nix expressions and convert them to flakes (Continuation) by @lIlIlIlIIIIlIIIllIIlIllIIllIII in #271
  • add support for duration multiplication by @msprotz in #276
  • Convert nix to flake (part 3) by @lIlIlIlIIIIlIIIllIIlIllIIllIII in #275
  • Fix nix part 4 by @lIlIlIlIIIIlIIIllIIlIllIIllIII in #278
  • fix(compiler): fix line num for HTML generation by @EmileRolley in #279
  • Refactor(runtime/api_web): parse raw log events into structured ones by @EmileRolley in #280
  • refactor(runtime): ignore function definition while parsing raw events by @EmileRolley in #283
  • Implementation of French housing benefits : 2/N by @denismerigoux in #266
  • docs: udpate the CITATION file by @EmileRolley in #284
  • Partially fix #192 by @denismerigoux in #285
  • Restore automatic rebuild of all tests by ninja by @denismerigoux in #286
  • feat(backend): disambiguate OCaml record names derived from Catala structs by @EmileRolley in #288
  • Annotate the ASTs with type information everywhere by @AltGr in #272
  • Use custom Docker image for CI by @AltGr in #292
  • fix(examples): assets are now generated from the repo root by @EmileRolley in #294
  • Fix encoding of chains of groups of exceptions by @denismerigoux in #289
  • Fixing French housing benefits by @denismerigoux in #287
  • feat(plugins): add a new backend for generating JSOO wrapper by @EmileRolley in #291
  • CI: Disable (broken) ubuntu builds by @AltGr in #298
  • Change syntax for set membership predicate ('in' -> 'contains') by @AltGr in #297
  • Expanding french_law with the French housing benefits by @denismerigoux in #295
  • Add source positions in all backends exceptions by @denismerigoux in #300
  • Feat: new json_schema plugin by @EmileRolley in #296
  • Tweak priority of 'set contains elt' / tag Docker images by @AltGr in #302
  • Build system rehaul, use of Docker for CI & artifact generation on Github by @AltGr in #299
  • Mise à jour du calcul des aides au logement suite à revalorisation by @denismerigoux in #305
  • Feat: improve the HTML generation with ToC and details tags by @EmileRolley in #303

New Contributors

Full Changelog: 0.6.0...0.7.0

v0.6.0

08 Mar 11:11
367dd98
Compare
Choose a tag to compare

Major changes

  • 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

Detailed changelog

New Contributors

  • @lIlIlIlIIIIlIIIllIIlIllIIllIII made their first contribution in #155
  • @jakeisnt made their first contribution in #160

Full Changelog: 0.5.0...0.6.0

v0.5.0

12 Nov 09:59
22cd03c
Compare
Choose a tag to compare

Catala v0.5.0
Changelog:

  • Performance improvements
  • Better error message formatting
  • New Markdown syntax
  • Better lexer factorization
  • ...

The JS file below is the Catala compiler, that you can use directly with Node.js:

node catala.js <arguments>