Skip to content

Releases: LPCIC/elpi

v1.9.1

14 Jan 17:02
v1.9.1
Compare
Choose a tag to compare

CHANGES:

  • Tests:

    • Fix testing framework on runners pre 1.9.0.
  • Parser:

    • Line nubers after quotations were wrong, since \n inside
      quotations were not taken into account.
  • Typing:

    • Name alias abbreviations are not refolded in error messages.
      Eg. typeabbrev x int does not take over int, while
      typeabbrev x (list int) does over list int.
    • Fix type abbreviation refolding, was not working on some cases.
  • Stdlib:

    • Fix is function int_of_string to do what it says
    • New is function rhc : string -> int computes the inverse of chr

v1.9.0

07 Jan 16:21
v1.9.0
Compare
Choose a tag to compare

CHANGES:

  • Typing:

    • typeabbrev declarations are now taken into account and unfolded
      by the compiler. The type checker refolds abbreviations
      when printing error messages with the following caveat: when two type
      abbreviations can be refolded the last declared one wins.
  • Compiler:

    • @macro are no more accepted in types, since typeabbrev provides the
      same functionality.
    • fix clash between builtin names and type names
    • accumulate is idempotent: accumulating the same file a second time
      has no effect.
  • FFI:

    • built in predicate are allowed to not assign (not produce a value) for
      output and input-output arguments.
    • input-output arguments are forced to be Conversion.t of type 'a ioarg,
      and recommended to wrap any nested type not able to represent variables
      in ioarg. Eg int option should be int ioarg option ioarg. In this
      way one can safely call these builtins with non-ground terms, such as
      some _, for example to assert the result is not none but without
      providing a ground term such as some 3.
    • MLData declarations for OpaqueData are no more named using a macro
      but rather using a type abbreviation. This can break user code. The fix
      is to substitutie @myopaquetype with myopaquetype everywhere.
  • Stdlib:

    • diagnostic data type to be used as an ioarg for builtins that can fail
      with a relevant error message. On the ML side one can used Elpi.Builtin.mkOK
      and Elpi.Builtin.mkERROR "msg" to build its values.
    • std.assert-ok!, std.forall-ok, std.do-ok!, std.lift-ok and
      std.while-ok-do! commodity predicates.
    • All operators for calc (infix _ is _) now come with a type declaration.

v1.8.0

29 Oct 12:20
Compare
Choose a tag to compare

CHANGES:

  • Bugfix:

    • shorten foo.{ bar }. when foo.bar is a builtin used to be miscompiled.
    • elpi-typechecker.elpi now correclty stops printing warnings after it
      printed 10 (used to stop after he processed 10, that may not be the same
      thing, since some warnings are suppressed).
  • Parser:

    • Interpret -2 (with no space) as the negative 2 not as the constant -2.
      This way X is 3 - 2 and Y is 3 + -2 are both valid.
  • FFI:

    • OpaqueData now requires a ternary comparison, not just equality.
  • Stdlib:

    • new data type cmp for ternary comparison.
    • std.set and std.map now based on ternary comparison.
  • Builtin:

    • cmp_term giving an order on ground terms.
    • ground_term to check if a term is ground.

v1.7.0

02 Sep 14:11
3ea2b8f
Compare
Choose a tag to compare

CHANGES:

  • Parser:

    • Tolerate trailing , in lists, eg [1,2,3,] is now parsed as [1,2,3].
    • Error if the input of Parse.goal_from_string contains extra tokens
    • Binary conjunction & is now turned on the fly into the nary one ,.
  • Bugfix:

    • Nasty bug in pruning during higher order unification, see #36.
    • Discard is now considered a stack term, and is turned into an
      unification variable on heapification.
    • API.RawData.look now expands UVar correctly
  • Stdlib:

    • set and map for arbitrary terms equipped with an order relation.
      Based on the code of OCaml's Map and Set library.
    • New API map.remove for maps on builtin data.
  • FFI:

    • New ContextualConversion module and ctx_readback type. In an FFI call
      one can specify a readback for the hypothetical context that is run once
      and its output is give to the ML code instead of the "raw" constraints and
      hyp list.
  • API:

    • Commodity functions in Elpi.Builtin to export as built-in
      OCaml's Set.S and Map.S interfaces (the output of Set.Make
      and Map.Make). All data is limited to be a closed term.
    • Constants.andc2 was removed
    • FlexibleData.Elpi.make takes no ~lvl argument (it is always 0)
    • RawData.view no more contains Discard since it is not an heap term
  • Misc:

    • Pretty printer for unification variable made re-entrant w.r.t. calls to the
      CHR engine (used to lose the mapping between heap cells and names)
    • Pretty printer for solution abstracted over a context (part of the solution). In this
      way the result can be printed correctly even if the runtime has been destroyed.
    • Default paths for finding .elpi files fixed after the switch to dune
    • A few more tests regarding unification, data structures and performance

v1.6.0

17 Jul 15:35
Compare
Choose a tag to compare

CHANGES:

  • Builtin:

    • same_term (infix ==) for Prolog's non-logical comparison (without
      instantiation).
    • set and map A (A only allowed to be a closed term) on
      string, int and loc keys.
  • Compiler:

    • provide line number on error about duplicate mode declaration
    • elpi-checker is faster and bails out after 10 seconds
  • FFI:

    • allow AlgebraicData declarations to mix M and MS constructors
    • Conversion.t for closed terms (no unification variable and no variables
      bound by the program)
  • Tests:

    • typecheck all tests and measure type checking time

v1.5.2

05 Jul 15:46
Compare
Choose a tag to compare

CHANGES:

  • Test suite: ship elpi-quoted_syntax.elpi

v1.5.1

05 Jul 13:43
Compare
Choose a tag to compare

CHANGES:

  • Test suite: print the log of the first failure to ease debugging on third
    party CI.

v1.5.0

05 Jul 11:51
v1.5.0
Compare
Choose a tag to compare

CHANGES:

Elpi 1.5 requires OCaml 4.04 or newer

  • REPL:

    • type errors are considered fatal, pass -no-tc to skip type checking.
    • use dune subst in order to implement -version flag to the command line
      utility.
  • Runtime:

    • reset unification variables names map at each execution. This makes
      the names of variable printed in a reproducible way across executions.
  • FFI:

    • readback is now as powerful as embed and can generate extra goals. The
      two types are now dual.

ELPI 1.4.1

26 Jun 09:12
v1.4.1
Compare
Choose a tag to compare

Minor fixup to error locations

ELPI 1.4.0

20 Jun 13:58
v1.4.0
Compare
Choose a tag to compare

Build based on dune and library wrapped