Skip to content
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
Compare
Choose a tag to compare
@jeromesimeon jeromesimeon released this 19 Mar 22:21

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 as endOf 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