-
Notifications
You must be signed in to change notification settings - Fork 99
dev meeting 20210107
Present at the meeting:
- Sonja Heinze (@pitag-ha)
- Jérémie Diminio (@jeremiedimino)
- Nathan Rebours (@NathanReb)
- Sonja finishes the set of features required to merge the bisect_ppx port to ppxlib
- Once OCaml 4.12's first beta is released, Nathan and Sonja release a new ppxlib using the 4.12 AST and send patches to the impacted reverse dependencies
- Nathan explores ways to make ppxlib and ocaml-ci work well together
Sonja has been focusing on finishing the bisect_ppx port. This requires several new features in ppxlib and that's what she's mostly been working on lately.
The first required feature was to make the equivalent of Location.input_name
available to transformation. This is now possible as
there is a new version of the Driver.register_transformation
function where the callbacks for whole AST transformation take an extra Expansion_context.Base.t
argument and that the input_name
can now be gathered from this expansion context.
The other required feature was to preserve the version of binary AST input when writing a binary AST output, be it in the standalone or in the as_ppx
versions of the driver. Both versions of the driver were implemented differently and they now share the common parts of their logic thanks to Sonja. We now have to make them accept different versions of binary AST and preserve that version in the output AST.
Nathan and Sonja also worked on the CI. Travis has failed us again so we decided that rather than putting energy into getting it back to work we will migrate to ocaml-ci. This required some work though. Sonja fixed the lint failures (most of which were actual improvements). The good news is that now we'll benefit from the formatting checks so we can start enabling dune files formatting and ocamlformat. Nathan focused on the tests. Ocaml-ci's policy is that we shouldn't disable testing in the CI for older compilers as was the case before but rather have fine grained rules to disable the test that don't work on such versions. It turns out this was quite beneficial as very few tests were actually impacted and we now re-enable most of them on the supported versions. Ocaml-ci doesn't run any build on compilers older than 4.07 because cinaps isn't available for those and ocaml-ci skips version where not all dependencies including test ones are available. Nathan will discuss those matters with ocaml-ci devs but a generic solution to this problem might take some time to land in opam and ocaml-ci so in the meantime, he will first take a quick look to see if it would be easy to make cinaps compatible with older compilers. If it's not, we might also consider dropping support for said compiler versions. He will reach out to @kit-ty-kate to know what kind of impact that might have on the ecosystem.
The OCaml 4.12 first beta is coming soon. The latest versions of ppxlib are already compatible with 4.12 but do not support the new language features as our internal AST is still based on 4.11. There is already a PR with the AST bump to 4.12 so when the beta comes out, we will merge it and cut a new release so that other tools based on ppxlib (such as ocamlformat) can also release a 4.12 compatible version before the new compiler's stable release lands. Ideally we'd like to cut a release with the existing new features before that and even more ideally this release would include all the features we need to finish the bisect_ppx port.