OCaml Workshop 2020 Online Conference is live now
discuss.ocaml.org
discuss.ocaml.org
It all feels very professional and industry-grade now. Really comprehensive and well-designed CLIs, proper man pages for all subcommands, and sweating the details [1]
[1] My litmus test for package managers is, when listing packages installed in an environment, is there a flag to only list packages that were explicitly installed? Many P-Ms fail this.
With the rise of Arm and RISC-V, it would be nice to see the OCaml community contributing to an upstream OE/YP layer.
Though we are going this way slowly but steadily. Afaik some people are working on build system, so I hope soon we'll have a GCC/Rust-like experience.
As part of that work, a few things are going on:
- use "dune workspaces" (essentially a cross compilation context) to build all C bindings in OCaml packages with custom CFLAGS/LDFLAGS. Ongoing work here: https://github.com/mirage/mirage/pull/1153
- upstream in OCaml, the core developers have specced out the design for integrating cross-compilation more naturally into the compiler.
- OCaml 4.11.0 has just been released with a native code RISC-V backend (and of course has had ARM for years).
Mirage doesn't really use OpenEmbedded or Yocto, but I expect it should be straightforward to embed the workflow in there once it's stable upstream in Mirage itself. Any pointers to something I should read about how to get involved in Yocto?
This could be generalized to create an upstream OE layer that uses the upcoming cross-compiling improvements from upstream Ocaml, which would then enable MirageOS unikernels in OE meta-virtualization, https://layers.openembedded.org/layerindex/branch/master/lay.... RISC-V support is in early stages for meta-virt, Western Digital added some support.
Intro to meta-virt: https://youtube.com/watch?feature=emb_title&v=fIbWvrlWJYg
Intro to Yocto: https://elinux.org/images/a/a8/Getting_Started_with_Embedded...
Meta-virt mailing list would be a good place for discussion, https://lists.yoctoproject.org/g/meta-virtualization
Basically from yocto have a "rootfs" which is your standard image + gcc, use it to build a docker container or chroot in it, add qemu-arm-static, build the OCaml compiler from opam and then use it to build binaries. Not the most straightforward, but it works... fine. And in the end it's just a docker image like any other that is used to build our binaries.
With that said this has been running for a few years, I didn't check if upstream OCaml cross-compiling made progress since then.
However, I found this link very useful to have something working using WSL: https://www.cosmiccode.blog/blog/vscode-for-ocaml/
For development on Windows, Cygwin is commonly used for "casual" use, and can be tricky to get working if you're not familiar with the quirks of that toolchain. That's going to improve quite rapidly though: I just announced that our development focus from the OCaml Platform for opam (our package manager) is to get Windows support working end-to-end.
There aren't any real blockers to Windows support except for building a critical mass of developers to smooth out the thousands of details that get in the way right now: you can find more here: https://github.com/ocaml/opam/wiki/opam-2.2-slides.pdf
From a compiler developer's perspective, the number of variations of toolchains available on modern Windows is absolutely mindboggling. I'm looking forward to switching to Windows 10 from my OpenBSD desktop and getting familiar with all of this. Last time I seriously used Windows (95), the desktop eSheep app all the rage. I'm informed that it is now available for Windows 10: https://www.microsoft.com/en-us/p/esheep-64bit/9mx2v0tqt6rm
Alternatively, Esy supports Windows and might provide you with a smoother experience. Esy is an alternative to opam cli tool that feels more like npm and supports OCaml projects and opam packages.
I have a bash shell, launch VSCode from it (with `code`), and all my extensions (ocp-indent, merlin) run in the linux subsystem and talk to VSCode.
[1] https://docs.microsoft.com/en-us/windows/wsl/install-win10
He demonstrates Language Server Protocol LSP in VSCode
https://forum.rescript-lang.org/t/rescript-frequently-asked-...