Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ppx_irmin: support primitive representations outside 'Irmin.Type' #994

Merged
merged 2 commits into from
Apr 17, 2020

Conversation

craigfe
Copy link
Member

@craigfe craigfe commented Apr 16, 2020

This adds support for a lib argument to [@@deriving irmin] that can be used to pull type representations from a location other than Irmin.Type (such as when Irmin.Type is aliased to another name).

@craigfe craigfe force-pushed the support-lib-redirection branch from 00ade68 to 1528055 Compare April 16, 2020 08:32
@craigfe craigfe force-pushed the support-lib-redirection branch from e3b4d30 to c383b2f Compare April 17, 2020 08:03
@craigfe craigfe force-pushed the support-lib-redirection branch from c383b2f to 32a2438 Compare April 17, 2020 15:07
@craigfe
Copy link
Member Author

craigfe commented Apr 17, 2020

This can now be considered for merge.

@craigfe craigfe merged commit 18f9cc7 into mirage:master Apr 17, 2020
craigfe added a commit to craigfe/opam-repository that referenced this pull request Jun 26, 2020
…min-mirage-graphql, irmin-http, irmin-git, irmin-mem, irmin-mirage, irmin-unix, irmin-pack, irmin-graphql and irmin-mirage-git (2.2.0)

CHANGES:

#### Added

- **irmin**:
  - Added `Irmin.Type.empty` to represent an uninhabited type. (mirage/irmin#961, @craigfe)
  - Added `Store.Tree.concrete_t`. (mirage/irmin#1003, @craigfe)

- **ppx_irmin**
  - Added support for the `@nobuiltin` attribute, which can be used when
    shadowing primitive types such as `unit`. See `README_PPX` for details.
    (mirage/irmin#993, @craigfe)

  - Added support for a `lib` argument, which can be used to supply primitive
    type representations from modules other than `Irmin.Type`. (mirage/irmin#994, @craigfe)

#### Changed

- **irmin**:
  - Require OCaml 4.07 (mirage/irmin#961, @craigfe)
  - Add sanity checks when creating `Irmin.Type` records, variants and enums
    (mirage/irmin#956 and mirage/irmin#966, @liautaud):
     - `Irmin.Type.{sealr,sealv,enum}` will now raise `Invalid_argument` if two
       components have the same name;
     - `Irmin.Type.{field,case0,case1}` will now raise `Invalid_argument` if
       the component name is not a valid UTF-8 string.
  - Changed the JSON encoding of options and unit to avoid ambiguous cases
    (mirage/irmin#967, @liautaud):
    - `()` is now encoded as `{}`;
    - `None` is now encoded as `null`;
    - `Some x` is now encoded as `{"some": x}`;
    - Fields of records which have value `None` are still omitted;
    - Fields of records which have value `Some x` are still unboxed into `x`.

  - Changed pretty-printing of Irmin types to more closely resemble OCaml types.
    e.g. `pair int string` prints as `int * string`. (mirage/irmin#997, @craigfe)

  - The type `Irmin.S.tree` is now abstract. The previous form can be coerced
    to/from the abstract representation with the new functions
    `Irmin.S.Tree.{v,destruct}` respectively. (mirage/irmin#990, @craigfe)

- **irmin-mem**
  - Stores created with `KV` now expose their unit metadata type. (mirage/irmin#995,
    @craigfe)

#### Fixed

- **irmin-graphql**
  - Fixed an issue with keys inside `get_{contents,tree}` fields having
    incorrect ordering (mirage/irmin#989, @craigfe)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants