<commit_before>## v1.9.0 UNRELEASED

- Typing:
  - `typeabbrev` declarations are now taken into account and unfolded
    by the compiler. The type checker does not refold abbreviations
    when printing error messages (it does it only for opaque data types,
    i.e. `cdata`).

- FFI:
  - built int predicate are allowed to not assign (not produce a value) for
    output and input-output arguments
  - input-output argument are forced to be Conversions 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 as `some 3` would be.
  - `OpaqueData` is 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.

## v1.8.0 (October 2019)

- 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).<commit_msg>update changelog<commit_after>## v1.9.0 UNRELEASED

- Typing:
  - `typeabbrev` declarations are now taken into account and unfolded
    by the compiler. The type checker does not refold abbreviations
    when printing error messages (it does it only for opaque data types,
    i.e. `cdata`).

- Compiler:
  - `@macro` are no more accepted in types, since `typeabbrev` provides the
    same functionality.
  - fix clash between builtin names and type names

- FFI:
  - built int predicate are allowed to not assign (not produce a value) for
    output and input-output arguments
  - input-output argument are forced to be Conversions 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 as `some 3` would be.
  - `OpaqueData` is 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.

## v1.8.0 (October 2019)

- 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).
{'fraction_non_alphanumeric': 0.06760070052539405, 'fraction_numerical': 0.010507880910683012, 'mean_word_length': 3.3404255319148937, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1612407', 'n_tokens_mistral': 866, 'n_tokens_neox': 820, 'n_words': 416}