Skip to content

Releases: LPCIC/elpi

3.4.2

17 Oct 07:31
v3.4.2
c114619

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Runtime:
    • Fix bug concerning CHR rules firing on non-fully-dereffed terms

3.4.1

24 Sep 11:50
v3.4.1
5fccfbb

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Compiler:
    • Fix extend_signature, was not updating the symbol table

3.4.0

17 Sep 14:41
v3.4.0
0768bac

Choose a tag to compare

CHANGES:

  • Parser:

    • New ->-based syntax for pred, analogous to the new func one. E.g.
      func append list A, list A -> list A.
      pred appendR -> list A, list A, list A.
      
  • Compiler:

    • Fix =!=> that was adding a head cut, rather than a tail cut, in some
      cases
    • Fix compilation bug concerning Loc.t being erroneously compared

3.3.1

03 Sep 08:20
v3.3.1
97e21e1

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Tests:
    • compare json files semantically

3.3.0

01 Sep 12:55
v3.3.0
7a3bea8

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Tooling:
    • port to ppxlib 0.36.0

3.2.0

01 Sep 11:39
v3.2.0
f1b4b35

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Language:
    • Remove: the fprop sort, use (func) instead

3.1.0

08 Aug 07:20
v3.1.0
141b6fe

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Language:
    • Change: constraints must be functions. Hence declare_constraint only
      suspends functional predicated and CHR rules can only generate
      determinitic goals.
    • New: the func syntax now supports variadic functions as in
      func f int, int -> int.. .
      f N D Q   :- Q is N div D.
      f N D Q R :- f N D Q, R is N mod D.

3.0.1

18 Jul 13:27
v3.0.1

Choose a tag to compare

CHANGES:

  • Language:

    • Improve error message for non deterministic atom
    • Fix overlap check for uvar F L as X
    • Fix allow symbol as an identifier
  • Compiler:

    • Fix build reproducibility

3.0.0

08 Jul 11:54
v3.0.0

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Language:

    • A functional predicate is a predicate that does not leave choice points
      for any of its calls. A functional predicate can have preconditions, eg
      map is functional if the higher order argument also is. Functional
      predicates (with preconditions) can be miscalled, in that case they behave
      as relations.
    • The matching operator used for input arguments is now also available as a
      builtin predicate named pattern_match.
  • API:

    • New Utils.ground_check and Utils.cmp_term (already available as builtins)
    • Change Constants.declare_global_symbol takes an optional variant argument.
  • Parser:

    • The fprop keyword is akin to prop but signals the predicate is functional
    • The :functional attribute flags predicates as functional (equivalent to func ...).
    • Dedicated syntax for functional signatures:
      func name(comma_sep(types_of_inputs)* [-> comma_sep(types_of_outputs*)].
      Example: The signature of map is func map list A, (func A -> B) -> list B
    • New [external] symbol name : type [= "variant"] is a synonim of type and can be
      used to ascribe a type to a symbol. External symbols must be matched by
      a declaration in OCaml, and when the symbol is overloaded the variant
      label is used for the matching (additionally to the name).
  • Compiler:

    • The type checker is in charge of resolving all symbols, overloaded or not,
      to a Symbol.t datatype that gathers the Loc.t where it is defined
      (and it can be defined at multiple places, e.g. OCaml + Elpi, or twice
      in Elpi). This data can be used to implement jump-to-def and the like in
      modern UIs.
    • The determinacy_checker statically analyzes whether a predicate labeled
      as functional adheres to its signature.
    • The elaboration of {spilling} has been moved to a dedicated file.
    • CHR rules are typechecked (finally)
    • Macros are typechecked. This paves the way to make them live in name
      spaces and possibly globally available, but it is not implemented yet.
  • Runtime:

    • Builtin predicates now have a dedicated node when they are part of the
      Elpi language, i.e. Cut, And, Impl, RImpl, Pi, Sigma, Eq, Match, Findall,
      Delay.
    • Symbols part of the Elpi language (other than the builtins) also have
      a dedicated status, i.e. As, Uv, ECons, ENil although As and Uv do not
      have a dedicated node in the AST, while ENil and ECons do have it.

2.0.7

13 Jan 14:18
v2.0.7
1992fb3

Choose a tag to compare

CHANGES:

Requires Menhir 20211230 and OCaml 4.13 or above.

  • Parser:

    • New elpi:if version <name> <op> <ma>.<mi>.<p>
  • API:

    • New Setup.init takes a ?versions dictionary to declare versions
      of external components
    • New Utils.parse_version