Update to ocaml 4.11.1 - #885
Conversation
|
Tagging @mandel I think this has all the correct changes, though I'm kind of worried about this comparison operator thing. Some of the changes to the MIR are fine, but others seem kind of sus and make me thing we should either. @seantalts why were the location statements opaque before? Do we need things to be opaque or were those just to shrinks the size of the printed out mir?
|
|
Also I have not tested this on windows if anyone is able to |
if the Windows build step on Jenkins passes that is all we need. We dont support development on native Windows (not sure if that is even doable). We only need to be able to cross compile for Windows on Linux. |
|
@SteveBronder do you want my help on this? |
|
@mandel Yes that would be awesome! Right now this is giving a weird error for the mock that menhir generates I wrapped them with a which works as duct-tape but not ignoring that would be a much nicer option |
|
My understanding is that there is no good solution for now for this error. See ocaml/dune#2450 |
|
It looks there's something weird going on with lsp server that only works with dune on version 4.12 for the type stuff in the editors. ocamllabs/vscode-ocaml-platform#532 Unless lsp server downgrades to 4.11.1 or the windows cross compiler updates to 4.12 we might be in a bit of a limbo :-( |
|
Limbo should be ending soon - ocaml-cross/opam-cross-windows#206 We should also identify if there are any dependencies we would like to update and I can try to get those updated in the opam-cross-windows world too. I think at the very least we want See this discussion for more: https://discuss.ocaml.org/t/removing-polymorphic-compare-from-core/2994/10 |
|
Awesome! |
|
We will also need:
Fmt and Yojson are fine at their current versions |
This updates the setup scripts and code to work with ocaml 4.11.1. This PR just has the changes necessary to 4.11.1 but has not been formatted so Jenkins will fail. It does in fact have several differences in the MIR and generated C++ that we should investigate before doing all the formatting stuff as that will make some things harder to sort out.
Most of the code changes are very small, things like using
let ( = ) = Stdlib.( = )as ocaml by default in these versions no longer allows for polymorphic equality comparison operators by default. Should we just do away with any code that does=,<>, etc. and just haveequals a b,not_equals a betc. functions for each type? Or is the above safe? tbh I just don't understand the implications of performing the above import vs. writing our own.All the other changes are imported from #843 except for the
run_*_on_args.mlfiles in the tests which use Core's unix and channels stuff.The changes to the MIR and the C++ are related to the optimizer. My guess is that something in the optimizer is hitting something weird during the lazy code motion phase that deals with comparison operators
Release notes
Updates Ocaml version to 4.11.1 along with dependencies
Copyright and Licensing
By submitting this pull request, the copyright holder is agreeing to
license the submitted work under the BSD 3-clause license (https://opensource.org/licenses/BSD-3-Clause)