diff --git a/.cirrus.yml b/.cirrus.yml
index 5caf7b8..2813ab6 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -4,9 +4,9 @@ freebsd_instance:
 freebsd_task:
   env:
     matrix:
-      - OCAML_VERSION: 4.10.1
       - OCAML_VERSION: 4.11.1
-  pkg_install_script: pkg install -y ocaml-opam gmp gmake pkgconf bash
+      - OCAML_VERSION: 4.12.0
+  pkg_install_script: pkg install -y ocaml-opam gmake bash
   ocaml_script: opam init -a --comp=$OCAML_VERSION
   dependencies_script: eval `opam env` && opam install -y --deps-only .
   build_script: eval `opam env` && dune build @install
diff --git a/clock/clock_linux_stubs.c b/clock/clock_linux_stubs.c
index 479275e..f039268 100644
--- a/clock/clock_linux_stubs.c
+++ b/clock/clock_linux_stubs.c
@@ -1,3 +1,5 @@
+#define CAML_NAME_SPACE
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
@@ -22,7 +24,7 @@ clock_linux_get_time_byte(__unit ())
   if (clock_gettime(CLOCK_MONOTONIC, &ts))
     caml_invalid_argument("clock: unsupported clock");
 
-  return copy_int64(ts.tv_sec * 1000000000LL + ts.tv_nsec);
+  return caml_copy_int64(ts.tv_sec * 1000000000LL + ts.tv_nsec);
 }
 
 // XXX(dinosaure): commented because to be able to compile the test into any
diff --git a/clock/clock_mach_stubs.c b/clock/clock_mach_stubs.c
index 245697f..22f997c 100644
--- a/clock/clock_mach_stubs.c
+++ b/clock/clock_mach_stubs.c
@@ -31,5 +31,5 @@ clock_mach_get_time(value unit)
 
   now = mach_absolute_time();
 
-  return copy_int64(now * s.numer / s.denom);
+  return caml_copy_int64(now * s.numer / s.denom);
 }
diff --git a/clock/clock_windows_stubs.c b/clock/clock_windows_stubs.c
index 9784b93..6308cce 100644
--- a/clock/clock_windows_stubs.c
+++ b/clock/clock_windows_stubs.c
@@ -24,7 +24,7 @@ clock_windows_get_time(value unit)
 
   QueryPerformanceCounter(&now);
 
-  res = copy_int64(now.QuadPart * frequency.QuadPart);
+  res = caml_copy_int64(now.QuadPart * frequency.QuadPart);
 
   CAMLreturn(res);
 }
diff --git a/debian/changelog b/debian/changelog
index 64b52d4..ecf07b9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ocaml-eqaf (0.8+git20220217.1.1e503c3-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Mon, 30 May 2022 15:05:12 -0000
+
 ocaml-eqaf (0.8-2) unstable; urgency=medium
 
   * Fix debian/copyright
diff --git a/dune-project b/dune-project
index 8c97908..2a000c6 100644
--- a/dune-project
+++ b/dune-project
@@ -1,3 +1,3 @@
 (lang dune 2.0)
 (name eqaf)
-(version v0.8)
+(version dev)
diff --git a/eqaf.opam b/eqaf.opam
index 1db0219..9939eaa 100644
--- a/eqaf.opam
+++ b/eqaf.opam
@@ -1,4 +1,3 @@
-version: "0.8"
 opam-version: "2.0"
 maintainer:   [ "Romain Calascibetta <romain.calascibetta@gmail.com>" ]
 authors:      [ "Romain Calascibetta <romain.calascibetta@gmail.com>" ]
@@ -25,4 +24,5 @@ depends: [
   "base64"         {with-test}
   "alcotest"       {with-test}
   "crowbar"        {with-test}
-]
\ No newline at end of file
+  "fmt"            {with-test & >= "0.8.7"}
+]
diff --git a/test/test.ml b/test/test.ml
index c08e349..9c34739 100644
--- a/test/test.ml
+++ b/test/test.ml
@@ -11,44 +11,44 @@ let of_expected = function
 let value w = Alcotest.testable Fmt.int (equal w)
 
 let be a b expected =
-  let title = Fmt.strf "be %S %S = %d" a b expected in
+  let title = Fmt.str "be %S %S = %d" a b expected in
   Alcotest.test_case title `Quick @@ fun () ->
   let expected' = String.compare a b in
   Alcotest.(check (value (of_expected expected))) "result" (Eqaf.compare_be a b) expected ;
   Alcotest.(check (value (of_expected expected'))) "string.compare" (Eqaf.compare_be a b) expected'
 
 let le a b expected =
-  let title = Fmt.strf "le %S %S = %d" a b expected in
+  let title = Fmt.str "le %S %S = %d" a b expected in
   Alcotest.test_case title `Quick @@ fun () ->
   Alcotest.(check (value (of_expected expected))) "result" (Eqaf.compare_le a b) expected
 
 let exists str chr exists =
-  Alcotest.test_case (Fmt.strf "contains %S %c = %b" str chr exists) `Quick @@ fun () ->
+  Alcotest.test_case (Fmt.str "contains %S %c = %b" str chr exists) `Quick @@ fun () ->
   let res = Eqaf.exists_uint8 ~f:((=) (Char.code chr)) str in
   Alcotest.(check bool) "result" res exists
 
 let find str chr index =
-  Alcotest.test_case (Fmt.strf "index %S %c = %d" str chr index) `Quick @@ fun () ->
+  Alcotest.test_case (Fmt.str "index %S %c = %d" str chr index) `Quick @@ fun () ->
   let res = Eqaf.find_uint8 ~f:((=) (Char.code chr)) str in
   Alcotest.(check int) "result" res index
 
 let int_of_bool bool expect =
   Alcotest.test_case
-    (Fmt.strf
+    (Fmt.str
        "int_of_bool %B = %d" bool expect
     ) `Quick @@ fun ()->
   Alcotest.(check int) "result" expect (Eqaf.int_of_bool bool)
 
 let bool_of_int desc n expect =
   Alcotest.test_case
-    (Fmt.strf
+    (Fmt.str
        "int_of_bool %s = %B" desc expect
     ) `Quick @@ fun ()->
   Alcotest.(check bool) "result" expect (Eqaf.bool_of_int n)
 
 let select_a_if_in_range (low,high) n a b expect =
   Alcotest.test_case
-    (Fmt.strf
+    (Fmt.str
        "select_a_if_in_range (%d,%d) ~n:%d %d %d"
        low high n a b
     ) `Quick @@ fun ()->
@@ -61,7 +61,7 @@ let a_uint32 = Alcotest.testable Fmt.uint32 (=)
 let divmod str x m q r =
   (* (x / m = q) and (x mod m = r) *)
   Alcotest.test_case
-    (Fmt.strf
+    (Fmt.str
        "divmod %s %lu / %lu = %lu, %lu mod %lu = %lu"
        str x m q x m r
     ) `Quick @@ fun ()->
@@ -70,7 +70,7 @@ let divmod str x m q r =
 
 let ascii_of_int32 str digits n expect =
   Alcotest.test_case
-    (Fmt.strf
+    (Fmt.str
        "ascii_of_string %s %d %lu %S"
        str digits n expect
     ) `Quick @@ fun ()->
@@ -81,7 +81,7 @@ let ascii_of_int32 str digits n expect =
 
 let string_of_hex str hex expect =
   Alcotest.test_case
-    (Fmt.strf
+    (Fmt.str
        " %s %S %S"
        str hex expect
     ) `Quick @@ fun ()->
@@ -90,7 +90,7 @@ let string_of_hex str hex expect =
 
 let hex_of_string str raw expect =
   Alcotest.test_case
-    (Fmt.strf
+    (Fmt.str
        " %s %S %S"
        str raw expect
     ) `Quick @@ fun ()->