This repository has been archived by the owner on Sep 7, 2023. It is now read-only.
Ergo v0.7.0
Pre-release
Pre-release
This is a pretty major release! Some of the highlights include: support for handling and maintaining timezones in Date/Time operations and contract execution performs model validation.
Also this release include a completely redesigned API and execution engine with a better semantics for dispatch and the ability to call a specific clause by name.
Language
- 📲New dispatch semantics: dispatch picks the clause with the most specific request type first, and the compiler rejects programs with two clauses with the same request type (#550)
- ⌛DateTime operations maintain and take into account timezone information (#515)
- 🧮New operator
%
for remainder,integerModulo
returns the modulo.integerMod
is removed.
Execution engine and API
- ⚙️Completely redesigned compiler and execution API
- New
invoke
API call to invoke a specific Clause - ⚙️Contract execution validates request/states/responses against CTO models (#490)
- ⌛Execution API now takes a current time (ISO 8691 UTC format) as a parameter
- ⌛Using
moment-mini
for a smaller footprint of the execution engine
Compiler
- 🔎 More readable error messages when using command-line (#554)
- ⚙️ Dispatch and Init creation phase is moved after type-checking phase
- 🚅 More efficient representation for large string constants
- 🚅 integer to string conversion is using OCaml instead of Coq extraction for performance
Bug fixes
- 🐞
getMonth
now returns month ranging from 1 to 12, instead of 0 to 11 (#574) - 🐞arraySubtract has parameters in the right order again in JavaScript backend (#576)
- 🐞Record construction properly handles duplicate fields (#516)
- 🐞
startOf
is not the same asendOf
anymore... (#513)
Build
- Switching to OCaml 4.07.1
- Switching to Coq 8.8.2
- Work with opam2
- Library upgrades, notably: latest versions of js_of_ocaml, menhir and yojson
- Code coverage is reported as part of the continuous integration