Commit Graph

3420 Commits

Author SHA1 Message Date
Louis Gesbert
f9e3964621 Add an explain plugin
Based on the lazy_interp plugin, this new plugin generates a `dot` graph
retracing a given computation from source definitions to the results.
2023-07-11 17:33:56 +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
a1199f2418
Remove generated files from git + small printer tweak (#488) 2023-07-10 16:51:56 +02:00
Louis Gesbert
594541b3f4 Skip rescript on 'make dependencies'
See #486: it's eating up all of the CI processing power
2023-07-10 16:31:34 +02:00
Louis Gesbert
71e3ca21c0 Remove generated files from git
and add proper pointers to the online artifacts
2023-07-10 15:48:11 +02:00
Louis Gesbert
3cb8fc1499 Tweak printing of if/then/else 2023-07-10 15:48:11 +02:00
Louis Gesbert
4ae949f7f8 Fix formatting of exception trees 2023-07-07 14:56:54 +02:00
Louis Gesbert
b63e7d2f2d
Some code simplification (#487) 2023-07-05 12:01:06 +02:00
Louis Gesbert
a3c0c366e6 Some code simplification
We now have all the functions to factorise this code
2023-07-04 18:31:52 +02:00
Louis Gesbert
0813f5c36e
Refactor the main Driver module, and add a 'modules' plugin (#484) 2023-07-04 18:13:37 +02:00
Louis Gesbert
fcb2d08983 Remove unconditional optimisation on exceptions compilation
This should be handled at a different level
2023-07-04 17:16:09 +02:00
Louis Gesbert
8920564f9e Fix some documentation comments formatting 2023-07-04 10:01:51 +02:00
Louis Gesbert
98f712365e Restore full expression printing when --debug is set 2023-07-03 17:30:17 +02:00
Louis Gesbert
89e90271c1 Implement an additional localised, user-facing value printer 2023-07-03 16:42:54 +02:00
Louis Gesbert
c799968934 Add a 'modules' plugin with helpers to compile modules
This will be done by Clerk at some point, but the plugin is useful for the time being.
2023-07-03 16:42:54 +02:00
Louis Gesbert
0f9ee2c72e Refacter the main Driver module
- Use separate functions for successive passes in module `Driver.Passes`
- Use other functions for end results printing in module `Driver.Commands`

As a consequence, it is much more flexible to use by plugins or libs and we no
longer need the complex polymorphic variant parameter.

This patch leverages previous changes to use Cmdliner subcommands and
effectively specialises the flags of each Catala subcommand.

Other changes include:

- an attempt to normalise the generic options and reduce the number of global
  references. Some are ok, like `debug` ; some would better be further cleaned up,
  e.g. the ones used by Proof backend were moved to a `Proof.globals` module and
  need discussion. The printer no longer relies on the global languages and prints
  money amounts in an agnostic way.
- the plugin directory is automatically guessed and loaded even in dev setups.
  Plugins are shown by the main `catala` command and listed in `catala --help`
- exception catching at the toplevel has been refactored a bit as well; return
  codes are normalised to follow the manpage and avoid codes >= 128 that are
  generally reserved for shells.

Update tests
2023-07-03 16:42:54 +02:00
Denis Merigoux
b38f3da60d
Tweak tutorial language in response to #473. (#483) 2023-06-30 10:28:34 +02:00
Denis Merigoux
26dd6012b1
Better French wording 2023-06-27 10:48:58 +02:00
Siggy Scott
b034613499 Correct a variable name in the French-language tutorial. 2023-06-23 13:22:58 -04:00
Siggy Scott
20aa04eb96 Tweak tutorial language in response to #273. 2023-06-23 08:33:47 -04:00
Denis Merigoux
8d602d6bd2
Fix FR vscode syntax highlighting 2023-06-22 13:21:08 +02:00
Denis Merigoux
3329a1b48b
Implementing closure conversion (#475) 2023-06-22 12:30:54 +02:00
Denis Merigoux
5f48e5dac1
Merge branch 'master' into closure_conversion 2023-06-20 11:02:13 +02:00
Denis Merigoux
615ad54f08
Remove unmaintained examples (fix #468) (#480) 2023-06-20 10:25:43 +02:00
Louis Gesbert
f31a78593e
Preliminary support for modules/externals + CLI subcommands (#478) 2023-06-20 09:31:45 +02:00
Louis Gesbert
3ca1a34122 Update and fix Dockerfile 2023-06-19 21:38:40 +02:00
Denis Merigoux
9007eb4204
Apply suggestions by @altgr 2023-06-19 17:29:51 +02:00
Louis Gesbert
237dca2e75 Some commented code cleanup and clarifications 2023-06-19 16:36:09 +02:00
Denis Merigoux
71ead0c6fa
Remove all mentions 2023-06-19 12:01:06 +02:00
Denis Merigoux
0ca42cbcf9
Fix headings 2023-06-19 11:37:58 +02:00
Denis Merigoux
147e70feed
Remove unmaintained examples (fix #468) 2023-06-19 11:21:00 +02:00
Denis Merigoux
10cd3b0fc8 Update assets 2023-06-18 21:45:09 +02:00
Denis Merigoux
420348beda Added a last TODO and put big example under CI 2023-06-18 21:38:00 +02:00
Denis Merigoux
b55d8c823b Closure conversion & hoisting working 2023-06-18 21:30:55 +02:00
Louis Gesbert
691d81ba72 Makefiles: fix catala arguments order
the command name now needs to be first
2023-06-18 18:35:39 +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
Denis Merigoux
2ddbe93126 Bug identified 2023-06-18 18:15:29 +02:00
Denis Merigoux
a20adc0055 Closure hoisting (missing a bug on hardest case) 2023-06-18 18:08:18 +02:00
Denis Merigoux
2c45ca1599 More doc 2023-06-18 16:08:16 +02:00
Denis Merigoux
9cf55b0edd Closure env is unit if no extra variable captured 2023-06-18 15:49:02 +02:00
Louis Gesbert
52b1c25d50 Refactor CLI to use sub-commands
The upside of this is that each command can define specific flags ; there is a
small loss of backwards-compatibility in that the command needs to be the first
argument.

`catala --help` will now only show a summary of commands, with more specific
manpages shown on `catala CMD --help`.

Another point is that the plugin interface is extended to allow plugins to be
registered as subcommands and have their own flags (this will be very useful for
adding flags to the lazy/dot/explanation plugin that has many options).

Note that no efforts has yet been made to specialise the options, the previous
type was just made global for all subcommands.
2023-06-15 18:00:10 +02:00
Louis Gesbert
da59076223 Add a command-line option ('--use') for module linking 2023-06-15 17:58:46 +02:00
Louis Gesbert
ec97c386c3 Reformat + regen 2023-06-15 17:57:01 +02:00
Louis Gesbert
26c75af2ae Allow declaration of toplevel values without definition 2023-06-15 17:57:01 +02:00
Louis Gesbert
e224e87f71 Wip support for modules
(first working dynload test with compilation done by manual calls to ocaml)

A few pieces of the puzzle:

* Loading of interfaces only from Catala files
* Registration of toplevel values in modules compiled to OCaml, to allow access
  using dynlink
* Shady conversion from OCaml runtime values to/from Catala expressions, to
  allow interop (ffi) of compiled modules and the interpreter
2023-06-15 17:56:57 +02:00
Denis Merigoux
6962761774
Merge branch 'master' into closure_conversion 2023-06-15 17:56:41 +02:00
Louis Gesbert
2f2614c508 Use the AST mapper for scopelang-> dcalc 2023-06-15 17:55:52 +02:00
Louis Gesbert
2b7beeefb2 Rename 'IdentName' to 'Ident' 2023-06-15 17:55:49 +02:00
Denis Merigoux
3d3e735402
Nicer error message 2023-06-15 17:47:58 +02:00
Denis Merigoux
ed2891c761
Closure conversion should work now 2023-06-15 17:32:00 +02:00