Skip to content

Latest commit

 

History

History
151 lines (144 loc) · 4.96 KB

ChangeLog.org

File metadata and controls

151 lines (144 loc) · 4.96 KB

Changelog for Juvix

0.1.1.23

  • Fixed duplicate lambda name generation from the LLVM backend

0.1.1.22

  • Doubles and Strings now available to the S-expression parser and Toplevel Transformation

0.1.1.21

  • Changed Golden tests so that the record import is now visible

0.1.1.20

  • Merged changes that implemented primTy in terms of return. (see PR #979)

0.1.1.19

  • Introduce algebraic product and coproduct types (see PR #985)

0.1.1.18

  • Adds record lookup transformation for record symbols
    • Technically to all symbols with an unknown context address/path

0.1.1.17

  • Adds record declarations to the Core S-expression representation.

0.1.1.16

  • Add a test suite and tooling to Juvix.Library.Test.Golden for expecting at least 1 test to fail.

0.1.1.15

  • Added module ‘Juvix.Library.BLS12381’ to remove Orphan related files.
  • New instances and reviews for ‘Juvix.Library.Usage’.
  • Other minor fixes and clean-ups.

0.1.1.14

  • Creates an HTTP server to debug code.
    • goto the http library and read the README to run

0.1.1.13

  • Creates generic tooling for Context Pass transformations

0.1.1.12

  • Disables modules which are not explicitly named

0.1.1.11

  • Extended EasyPipeline to support inline and erasure

0.1.1.10

  • Put Contextify passes into proper sections
  • Minor cleanup in running the Contextify passes

0.1.1.9

  • Added explicit exports for the IR/Evaluator modules.
  • Removed unused functions in the IR/Evaluator modules.

0.1.1.8

  • Add Golden tests for desugar and contextify passes

0.1.1.7

  • Add Michelson golden tests
  • Allow golden tests to be compared with their Show instance
  • Add tests for `main` having different signatures

0.1.1.6

  • Allow main be of any type
  • Refactor typecheck

0.1.1.5

  • Fix: Bug in #809 and #844, where pattern variables were considered to be global variables.
    • Add: Tests for the bug

0.1.1.4

  • Adds: easy pipeline support up to Core.
    • Creates: A time-lapse function

0.1.1.3

  • Split Context into it’s own pacakge
  • Tests and documentation for Utility in Core

0.1.1.2

  • Simplifies: Context
    • Adds: mapWithName, mapSumWithName, and overTopLevelMap
    • Removes: the repeat mapCurrentContext' function and simplifies the core logic by using the new functions

0.1.1.1

  • Adds a minimal llvm backend to the juvix compiler

0.1.1.0

  • Summary:
    • new syntax for effect handlers in Juvix.
  • Main contributions:
    • adds `effect` and `handler` syntaxes (also `_ via _`);
    • removes do notation as `Prelude.»=`.

Added Syntaxes

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.

Do Notation

The do notation no longer gets translated into `Prelude.»=`, it is just another effect construct now, to be translated by the ANF pass.

0.1.0.9

  • Add validity predicate examples in the don’t work test directories

0.1.0.8

  • Add Show instances for extended Term and Elim types

0.1.0.7

  • Fix checking of Π types

0.1.0.6

  • Add Golden tests

0.1.0.5

  • Split the stack.yaml generator into many files

0.1.0.4

  • 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")
              

0.1.0.3

  • 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 the moduleWorksAsExpected group
  • 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)

0.1.0.2

  • 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

0.1.0.1

  • Compile sum and product types
  • `main` can be of any type
  • Refactor FromFrontend.hs into submodules

0.1.0.0

  • Changelog created.
  • Documentation around how to bump the changelog in the contributors guide.