# \[ANN\] Orsetto: structured data interchange languages (preview)

**URL:** <https://discuss.ocaml.org/t/ann-orsetto-structured-data-interchange-languages-preview/2913>\
**Category:** Community\
**Tags:** announce\
**Created:** [November 19, 2018, 7:09am UTC](https://discuss.ocaml.org/t/ann-orsetto-structured-data-interchange-languages-preview/2913 "2018-11-19T07:09:59Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jhw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/jhw/32/1639_2.png) [@jhw](https://discuss.ocaml.org/u/jhw)\
**Post date:** [November 19, 2018, 7:09am UTC](https://discuss.ocaml.org/t/ann-orsetto-structured-data-interchange-languages-preview/2913/1 "2018-11-19T07:09:59Z")

</div>

I’m nearing completion of the _~preview.1_ release to OPAM of [_Orsetto_](https://bitbucket.org/jhw/orsetto/), my toolkit for structured data interchange. Here’s a brief summary of things left to do before I can commit to collaborating with the community and to engaging with feedback.

- Build pipeline for continuous integration on [Bitbucket.Org](http://Bitbucket.Org).
- Generate documentation with **odoc** using the **Conjury** build system.
- Consolidate **Cf\_seq** as extension of the **Stdlib.Seq** module.
- Minor last-minute improvements (e.g. leap second database, et cetera).
- Removal of some experimental modules (e.g. **Cf\_dyn** and **Cf\_psys** ).

Not sure when I’ll have done this, but I’m hoping by the end of the month. I’m writing this now because I feel like I’ve gotten to the point where there isn’t any major new logic that needs to be done before an initial preview can be posted. Anybody interested in my work who wants to comment before I post a preview to OPAM is invited to check out the sources at Bitbucket (linked above) and file issues.

p.s. I would have just added this as an update to the previous topic I filed about it, but _Discourse_ is now refusing to let me reply more than three times to myself.

---

<div class="post-metadata">

**Author:** ![jhw](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/jhw/32/1639_2.png) [@jhw](https://discuss.ocaml.org/u/jhw)\
**Post date:** [December 3, 2018, 5:37pm UTC](https://discuss.ocaml.org/t/ann-orsetto-structured-data-interchange-languages-preview/2913/2 "2018-12-03T17:37:40Z")

</div>

Pushing back my initial release. I’ve decided on doing some refinements of the JSON library to provide better performance characteristics and unify on an architectural convention already present in the CBOR library.

1. I’m going to define a **Json\_event** module that contains basic encoding and decoding of the JSON grammar terminals. The **Json\_scan** module will be refactored as parser combinators that work on streams of JSON events rather than Unicode characters. A similar refactoring may or may not be warranted with the **Json\_emit** module (I haven’t thought about it yet).

2. I’m also going to try to provide a higher-level interface for decomposing JSON objects directly into native data structures. I believe there is a functional core that is widely applicable and can be used with both JSON objects and CBOR maps (as well as similar associative key/value structures in other interchange languages).

I expect to have some time over the winter break to make some progress. I’ll post detailed Issue reports to the Bitbucket page, and I’ll make occasional updates here.
