- Fixed duplicate lambda name generation from the LLVM backend
- Doubles and Strings now available to the S-expression parser and Toplevel Transformation
- Changed Golden tests so that the record import is now visible
- Merged changes that implemented primTy in terms of return. (see PR #979)
- Introduce algebraic product and coproduct types (see PR #985)
- Adds record lookup transformation for record symbols
- Technically to all symbols with an unknown context address/path
- Adds record declarations to the Core S-expression representation.
- Add a test suite and tooling to
Juvix.Library.Test.Golden
for expecting at least 1 test to fail.
- Added module ‘Juvix.Library.BLS12381’ to remove Orphan related files.
- New instances and reviews for ‘Juvix.Library.Usage’.
- Other minor fixes and clean-ups.
- Creates an HTTP server to debug code.
- goto the http library and read the README to run
- Creates generic tooling for Context Pass transformations
- Disables modules which are not explicitly named
- Extended EasyPipeline to support inline and erasure
- Put
Contextify
passes into proper sections - Minor cleanup in running the
Contextify
passes
- Added explicit exports for the IR/Evaluator modules.
- Removed unused functions in the IR/Evaluator modules.
- Add Golden tests for desugar and contextify passes
- Add Michelson golden tests
- Allow golden tests to be compared with their Show instance
- Add tests for `main` having different signatures
- Allow main be of any type
- Refactor typecheck
- Fix: Bug in #809 and #844, where pattern variables were considered
to be global variables.
- Add: Tests for the bug
- Adds: easy pipeline support up to Core.
- Creates: A time-lapse function
- Split
Context
into it’s own pacakge - Tests and documentation for Utility in Core
- Simplifies:
Context
- Adds:
mapWithName
,mapSumWithName
, andoverTopLevelMap
- Removes: the repeat
mapCurrentContext'
function and simplifies the core logic by using the new functions
- Adds:
- Adds a minimal llvm backend to the juvix compiler
- Summary:
- new syntax for effect handlers in Juvix.
- Main contributions:
- adds `effect` and `handler` syntaxes (also `_ via _`);
- removes do notation as `Prelude.»=`.
effect Print =
let print : string -> unit
let pure : x -> string
A new effect Print is defined, and its interface signature. All effects must have a `return` clause, and hopefully operation signatures as well (an effect without operations is just a pure computation).
handler printer =
let print = %IO.print
let pure x = toString x
A handler provides an implementation of at least one effect and a return clause, and it can implement as many operations as the user wants.
let main = prog via printer
Handlers can be applied to programs using the `via` operator, which is just a shortcut for function application.
The do notation no longer gets translated into `Prelude.»=`, it is just another effect construct now, to be translated by the ANF pass.
- Add validity predicate examples in the don’t work test directories
- Add
Show
instances for extendedTerm
andElim
types
- Fix checking of Π types
- Add Golden tests
- Split the
stack.yaml
generator into many files
- Changes to =Library/Sexp.hs=
- Adds documentation to all functions
- Changes
Sexp.flatten
to be a full flatten - Fixes a small bug in
Sexp.foldr1
where it behaves poorly with dotted lists- Tests the new behavior
- Adds dotted list syntax to the show.
λ> (Cons (atom "hi") (atom "hi")) ("hi" . "hi")
- Change: over
Juvix.Contextify.Passes
structure to use the S-expression generator instead of matching on the syntax directly - Fix: A small bug where modules would drop types with an explicit
signature
- Test: Creates a test in
Test.Desugar.Sexp
under themoduleWorksAsExpected
group
- Test: Creates a test in
- Change:
let-type's
internal representation to more accurately reflect the structure(:let-type name args (sum₁ sum₂ … sumₙ) rest)
instead of(:let-type name (args sum₁ sum₂ … sumₙ) rest)
- Switches over the
stack.yaml
depdency files to a generator to reduce the repeat code - Changes some dependencies for the 3 big yaml files as they weren’t building properly due to cyclic dependencies
- Compile sum and product types
- `main` can be of any type
- Refactor FromFrontend.hs into submodules
- Changelog created.
- Documentation around how to bump the changelog in the contributors guide.