Denis Merigoux
a9764d607e
Merge branch 'master' into c_backend
2023-12-19 17:39:02 +01:00
Denis Merigoux
af16be501a
Remove useless optimizations caught just after
2023-12-19 17:26:36 +01:00
Denis Merigoux
9d9a2c4496
Start to implement proper monomorphization
2023-12-19 17:26:17 +01:00
Louis Gesbert
fb51f58261
Optimise away trivially-true errors-on-empty
2023-12-19 16:10:11 +01:00
Louis Gesbert
ea4e191f27
Add optimisation to skip variable aliasings
...
This particularly of effect to the code introduced by closure conversion.
2023-12-19 16:07:22 +01:00
Louis Gesbert
7233ec403a
Printer: add parens after constructors
2023-12-19 16:07:22 +01:00
Louis Gesbert
ad0afa2f64
Small interpreter optimisation
...
This is unholy, but we're manually bringing a typing proof so it may be
acceptable...
2023-12-19 16:07:22 +01:00
Louis Gesbert
e123d7eb95
Change type syntax of collection
into list of
2023-12-19 15:26:44 +01:00
Louis Gesbert
3779a249db
Unify all CLI arguments to use -
rather than _
...
it's more common on UNIXes and the mix was unpleasant.
2023-12-19 15:25:37 +01:00
Denis Merigoux
85bbb7be1c
Add monomorphizing option
2023-12-19 15:01:06 +01:00
Denis Merigoux
9358ad945e
Better type translation in closure conversion
2023-12-19 14:31:57 +01:00
Denis Merigoux
e6a35f31b6
Fixes #551
2023-12-19 13:39:24 +01:00
Denis Merigoux
366c351930
Correctly compiles let bindings in expressions
2023-12-19 12:03:23 +01:00
Denis Merigoux
0323e71edb
Default types should be eliminated in compile_with_exceptions
2023-12-18 15:23:08 +01:00
Denis Merigoux
4eead4850b
There are no more defaults in type after compile_with_exceptions...
2023-12-18 15:14:28 +01:00
Denis Merigoux
91f8451899
Better beta-reduction
2023-12-18 14:49:43 +01:00
Denis Merigoux
35f829cd65
Fix default optimisation
2023-12-18 14:42:58 +01:00
Denis Merigoux
1f91c16e43
Fix little bug
2023-12-13 16:40:22 +01:00
Denis Merigoux
5c49581207
Compiling simple program correctly to C
2023-12-13 11:07:08 +01:00
Denis Merigoux
827fcef469
More progress but enums also require no struct literals
2023-12-12 18:21:20 +01:00
Denis Merigoux
adfb9297d3
Progress on compiling
2023-12-12 16:25:02 +01:00
Denis Merigoux
d88f67bb2c
Progress
2023-12-12 16:08:40 +01:00
Denis Merigoux
7e221b29eb
Gets C89 struct initialization right
2023-12-11 17:28:32 +01:00
Denis Merigoux
37ab4187bd
Almost there with structs
2023-12-11 17:08:32 +01:00
Denis Merigoux
aca1d0e712
Fields in AST nodes
2023-12-11 15:59:47 +01:00
Denis Merigoux
3711026a4f
Beginning to compile
2023-12-11 14:47:09 +01:00
Denis Merigoux
5b7470fd0d
Compile HandleDefaultOpt specially
2023-12-11 14:34:31 +01:00
Denis Merigoux
f072694e50
Trying to progress
2023-12-11 13:56:13 +01:00
Denis Merigoux
79a261bb47
Restore CI
2023-12-11 11:44:25 +01:00
Denis Merigoux
c61bdbc5d7
Setting up special compilation
2023-12-11 11:31:51 +01:00
Denis Merigoux
4e8d2ef219
Beginning to compile specially HandleDefaultOp, Map, Fold, etc. for C
2023-12-11 11:31:51 +01:00
Denis Merigoux
4f7b678cd7
Making progress and fixing bugs
2023-12-11 11:31:51 +01:00
Denis Merigoux
192e50540b
Correctly compile function pointer types
2023-12-11 11:31:51 +01:00
Denis Merigoux
4d969e13c5
Enum type
2023-12-11 11:31:51 +01:00
Denis Merigoux
2eaac39bb1
Some progress
2023-12-11 11:31:51 +01:00
Denis Merigoux
ad3e140e88
Progress on C backend
2023-12-11 11:31:51 +01:00
Denis Merigoux
5f045110b9
Add tuples to Scalc
2023-12-11 11:31:51 +01:00
Denis Merigoux
6652dc8df2
Add C backend command
2023-12-11 11:31:45 +01:00
Louis Gesbert
5b1462d529
Clerk: allow to include non-yet-existing directories
...
Useful when you have wide `-I` options that not all targets may depend on.
2023-12-08 13:56:31 +01:00
Louis Gesbert
a988ad473b
Fix handling of embedded context through modules
...
Exceptions raised by the interpreter from within the native modules were not
handled correctly.
2023-12-08 13:56:18 +01:00
Louis Gesbert
509ce9788a
Document and first test for externals ( #538 )
2023-12-07 16:06:25 +01:00
adelaett
b5e7b297aa
typo fixing
2023-12-07 13:48:46 +01:00
adelaett
9f4a238a4a
Fix error messages for unexpected types.
...
do not retype the terms in the cases where checking invariant is not mandatory.
2023-12-07 13:45:50 +01:00
adelaett
934ab328ec
invariant checking is now available without printing the ast using the typecheck subprogram
2023-12-07 11:27:14 +01:00
adelaett
e1bda33e07
fmt
2023-12-07 11:27:14 +01:00
adelaett
030705eacd
Make the typing invariant more precise.
2023-12-07 11:27:14 +01:00
adelaett
67e36dcf42
Adding Typing Invariant for TDefault
...
Added a new type safety invariant to ensure that the type `TDefault` can only appear in certain positions,
* On the left-hand side of an arrow with arity 1, as the type of a scope (for scope calls).
* At the root of the type tree (outside a default).
* On the right-hand side of the arrow at the root of the type (occurs for rentrant variables).
This is crucial to maintain the safety of the type system, as demonstrated in the formal development.
The invariant was checked on all tests cases and on family and housing benefits.
Adjusted inversion invariant about app to handle external objects as well.
2023-12-07 11:27:14 +01:00
Denis Merigoux
2486fbcfb5
Fix LaTeX weaving failing with code blocks ( #544 )
2023-12-07 11:08:04 +01:00
Denis Merigoux
628cbc4fec
Fix #543
2023-12-06 16:58:38 +01:00
Louis Gesbert
7160093682
Allow scope execution in compiled ocaml executables
2023-12-06 11:06:54 +01:00