Skip to content

Commit

Permalink
[new release] elpi (1.17.0)
Browse files Browse the repository at this point in the history
CHANGES:

Requires Menhir 20211230 and OCaml 4.08 or above.
Camlp5 8.0 or above is optional.

Compiler:
  - Improve performance of separate compilation, in particular
    extending a program with more clauses. This change may
    break existing code which accumulates units containing
    the spilling of a predicate *before* the unit declaring
    the predicate signature.

Parser:
  - Fix error message on unexpected keyword (was wrongly assuming the
    keyword was `)` misleading the user)

Builtins:
  - Change type of `declare_constraint` to `any -> any -> variadic any prop`
    making it explicitly take at least two arguments

Trace browser:
  - Fix elaboration of CHR rule with no condition
  • Loading branch information
gares authored and nberth committed May 16, 2024
1 parent 83eb6c5 commit f75bdf1
Showing 1 changed file with 96 additions and 0 deletions.
96 changes: 96 additions & 0 deletions packages/elpi/elpi.1.17.0/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
opam-version: "2.0"
maintainer: "Enrico Tassi <[email protected]>"
authors: [ "Claudio Sacerdoti Coen" "Enrico Tassi" ]
license: "LGPL-2.1-or-later"
homepage: "https://github.com/LPCIC/elpi"
doc: "https://LPCIC.github.io/elpi/"
dev-repo: "git+https://github.com/LPCIC/elpi.git"
bug-reports: "https://github.com/LPCIC/elpi/issues"

build: [
["dune" "subst"] {dev}
[make "config" "LEGACY_PARSER=1"] {elpi-option-legacy-parser:installed}
["dune" "build" "-p" name "-j" jobs]
[make "tests" "DUNE_OPTS=-p %{name}%" "SKIP=performance_HO" "SKIP+=performance_FO" "SKIP+=elpi_api_performance"] {with-test & os != "macos" & os-distribution != "alpine" & os-distribution != "freebsd"}
]

depends: [
"ocaml" {>= "4.08.0" }
"stdlib-shims"
"ppxlib" {>= "0.12.0" }
"menhir" {>= "20211230" }
"re" {>= "1.7.2"}
"ppx_deriving" {>= "4.3"}
"ANSITerminal" {with-test}
"cmdliner" {with-test}
"dune" {>= "2.8.0"}
"conf-time" {with-test}
"atdgen" {>= "2.10.0"}
"atdts" {>= "2.10.0"}
"odoc" {with-doc}
]
depopts: [
"elpi-option-legacy-parser"
]
conflicts: [
"elpi-option-legacy-parser" {!= "1"}
]
synopsis: "ELPI - Embeddable λProlog Interpreter"
description: """
ELPI implements a variant of λProlog enriched with Constraint Handling Rules,
a programming language well suited to manipulate syntax trees with binders.

ELPI is designed to be embedded into larger applications written in OCaml as
an extension language. It comes with an API to drive the interpreter and
with an FFI for defining built-in predicates and data types, as well as
quotations and similar goodies that are handy to adapt the language to the host
application.

This package provides both a command line interpreter (elpi) and a library to
be linked in other applications (eg by passing -package elpi to ocamlfind).

The ELPI programming language has the following features:

- Native support for variable binding and substitution, via an Higher Order
Abstract Syntax (HOAS) embedding of the object language. The programmer
does not need to care about technical devices to handle bound variables,
like De Bruijn indices.

- Native support for hypothetical context. When moving under a binder one can
attach to the bound variable extra information that is collected when the
variable gets out of scope. For example when writing a type-checker the
programmer needs not to care about managing the typing context.

- Native support for higher order unification variables, again via HOAS.
Unification variables of the meta-language (λProlog) can be reused to
represent the unification variables of the object language. The programmer
does not need to care about the unification-variable assignment map and
cannot assign to a unification variable a term containing variables out of
scope, or build a circular assignment.

- Native support for syntactic constraints and their meta-level handling rules.
The generative semantics of Prolog can be disabled by turning a goal into a
syntactic constraint (suspended goal). A syntactic constraint is resumed as
soon as relevant variables gets assigned. Syntactic constraints can be
manipulated by constraint handling rules (CHR).

- Native support for backtracking. To ease implementation of search.

- The constraint store is extensible. The host application can declare
non-syntactic constraints and use custom constraint solvers to check their
consistency.

- Clauses are graftable. The user is free to extend an existing program by
inserting/removing clauses, both at runtime (using implication) and at
"compilation" time by accumulating files.

ELPI is free software released under the terms of LGPL 2.1 or above."""
url {
src:
"https://github.com/LPCIC/elpi/releases/download/v1.17.0/elpi-1.17.0.tbz"
checksum: [
"sha256=27c14905e681fb61ed1e3ae480dcce6499e067601c614fa7a4bf58d4734f9f3a"
"sha512=bb71271547354b97942b8f8e22121740a8b5eae5d44e5429ffa4c4a23edbed4f9778ac57ccc18065704b533c13b835607a32239e3c19f711af2ac9f8a3151c08"
]
}
x-commit-hash: "be7c890a81e03acc47b2e75d0295cc63345b2e5a"

0 comments on commit f75bdf1

Please sign in to comment.