On 8/31/2020 4:47 PM, Andrew Schulman via Cygwin-announce wrote:
The unison2.48 package has been updated in Cygwin. This new release,
version 2.48.4-2, has been rebuilt with OCaml 4.08.1, which makes it
compatible for syncing with Ubuntu Focal and the current Debian testing.
*Warning*: This update may be a breaking change, if you use unison2.48 to
synchronize with hosts that run other Linux distros. This is because two
Unison executables have to be built with the same version of OCaml in order
to be compatible. For discussion of this newly-discovered problem and how
we plan to deal with it in Cygwin, see OCaml Versions, below.
[...]
== OCaml Versions
There is unfortunately another layer of incompatibility in Unison: Two
Unison executables are only compatible if they were built with the same
version of OCaml. If you use, say, Unison 2.48 on two different hosts, but
one was built with OCaml 4.08.1 and the other with OCaml 4.10.0, you'll get
the dreaded error message
Fatal error: Fatal error during unmarshaling (input_value: ill-formed
message), possibly because client and server have been compiled with
different versions of the OCaml compiler.
This is a bad feature, of OCaml apparently. It means that in order to be
sure of being able to sync with another host, we could potentially need a
separate Unison package for every combination of Unison and OCaml.
For now, Unison packages for Cygwin are being built with the OCaml version
that seems to make them most generally compatible with other Linux distros:
Package OCaml version Compatibility
---------- ------------- -------------
unison2.27 ? ?
unison2.32 ? ?
unison2.40 ? ?
unison2.45 ? ?
unison2.48 4.08.1 Debian bullseye (testing), Ubuntu Focal
unison2.49 ? ?
unison2.51 ? ?
Packages with "?" are older builds, where the OCaml version isn't currently
known.
If your distro uses a different combination of Unison and OCaml versions
that you need in order to sync, please let me know here. If it's widely
used, I might update one of the existing builds, or make a new Cygwin
package for it.
What a mess! Would you consider embedding the OCaml version in the package name
as suggested by the Debian maintainer
(http://lists.seas.upenn.edu/pipermail/unison-hackers/2020-August/001975.html)?
Thus unison2.48-2.48.4-1 would be replaced by something like
unison2.48+4.04.1... and unison2.48-2.48.4-2 would be replace by something like
unison2.48+4.08.1.... That way people who are happy with unison2.48-2.48.4-1
can keep using it without being pestered by setup to update.
FWIW, here's my situation, which is probably not typical. When you released
unison2.48-2.48.4-1 a few years ago, it was incompatible with the Linux server
that I sync with. So I simply built OCaml and unison myself on that server,
using the same versions that you used, and installed unison in my own ~/bin
directory.
I could do that again, now using OCaml 4.08.1. But I'd much rather just keep my
current arrangement, without having setup try to update unison2.48 every time I
run it.
Ken
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple