Unison is a file synchronization tool written in OCaml. The binary
protocol isn't compatible from one major release to the next, so to
provide compatibility with the broader ecosystem of Unison on other
Linux distros we have 3 branches of it in Fedora:
unison213 (upstream release 2.13)
unison227 (upstream release 2.27)
unison240 (upstream release 2.40)
We don't package upstream releases 2.48 or 2.5x in Fedora at all.
Anyway the news is that none of these branches can be compiled with
our OCaml 4.10.0-beta-1 compiler. For the past 5 years OCaml has been
introducing safe, immutable strings. This has required code changes
so was introduced gradually, but the last step happens next month when
OCaml 4.10.0 final is released. In OCaml 4.10 the -unsafe-string
option is disabled, so code must be updated to use immutable strings.
Even the upstream version of Unison has not been ported to use safe
strings (ie requiring the -unsafe-string option), never mind the older
branches that we're packaging.
I did attempt a safe string port and ... it's complicated. The code
does a lot of byte string manipulation all over the place using its
own custom functions with four letter function names, single letter
variable names, and no comments.
(Don't believe me? Here's the first function that would need to be
If we were to package Unison properly in Fedora (apart from fixing
the big mess above), I would prefer that we had a single unison
package which built multiple versioned unison subpackages. I had
a proof of concept of this a few years ago.
It looks as if Unison will be orphaned and retired unless someone who
cares persuades upstream to move to immutable strings and backport the
same work to the older branches.
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org