diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4574184317f1fda2f69a2546368a9d5df11c9630..3394befbc709bec2d77dbc1603508d8c0e8f786e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -140,21 +140,16 @@ internal_nightly:
   tags:
    - nix
 
-frama-c-ocaml-4.06:
+frama-c-ocaml-4.09:
   variables:
-    OCAML: "4_06"
+    OCAML: "4_09"
   <<: *frama-c-ocaml
   only:
   - schedules
 
-frama-c-ocaml-4.07:
+frama-c-ocaml-4.10:
   variables:
-    OCAML: "4_07"
-  <<: *frama-c-ocaml
-
-frama-c-ocaml-4.05:
-  variables:
-    OCAML: "4_05"
+    OCAML: "4_10"
   <<: *frama-c-ocaml
 
 
diff --git a/Makefile b/Makefile
index 8bd4ad0cf6397d041cdf7844e9b2450d3b6c0c64..e9664546176d1f99637970d4274ede5bfbcf060d 100644
--- a/Makefile
+++ b/Makefile
@@ -1503,11 +1503,11 @@ endif
 
 $(DOC_DIR)/docgen.cmo: $(DOC_DIR)/docgen.ml
 	$(PRINT_OCAMLC) $@
-	$(OCAMLC) -c -I +ocamldoc -I $(CONFIG_DIR) $(DOC_DIR)/docgen.ml
+	$(OCAMLC) -c -I +ocamldoc -I +compiler-libs -I $(CONFIG_DIR) $(DOC_DIR)/docgen.ml
 
 $(DOC_DIR)/docgen.cmxs: $(DOC_DIR)/docgen.ml
 	$(PRINT_PACKING) $@
-	$(OCAMLOPT) -o $@ -shared -I +ocamldoc -I $(CONFIG_DIR) \
+	$(OCAMLOPT) -o $@ -shared -I +ocamldoc -I +compiler-libs -I $(CONFIG_DIR) \
 	  $(DOC_DIR)/docgen.ml
 
 clean-doc::
diff --git a/doc/code/docgen.ml b/doc/code/docgen.ml
index 914a292268b83bffbb9b1ce5956e7a25ea801140..6b2ea3937c04698721a6a37d962e93716763a8ba 100644
--- a/doc/code/docgen.ml
+++ b/doc/code/docgen.ml
@@ -130,11 +130,11 @@ struct
 	  match_s
 	  rel
         in
-        if StringSet.mem match_s known_types_names then
+        if String.Set.mem match_s known_types_names then
 	  "<a href=\"" ^ self#path match_s ^ Naming.complete_target Naming.mark_type
 	    match_s ^"\">" ^ s_final ^ "</a>"
         else
-	  if StringSet.mem match_s known_classes_names then
+	  if String.Set.mem match_s known_classes_names then
             let (html_file, _) = Naming.html_files match_s in
             "<a href=\""^ self#path html_file ^ html_file^"\">"^s_final^"</a>"
 	  else
@@ -158,7 +158,7 @@ struct
 	  match_s
 	  rel
         in
-        if StringSet.mem match_s known_modules_names then
+        if String.Set.mem match_s known_modules_names then
 	  let (html_file, _) = Naming.html_files match_s in
 	  "<a href=\"" ^ self#path match_s ^ html_file^"\">"^s_final^"</a>"
         else
@@ -287,7 +287,7 @@ struct
       let types = Odoc_info.Search.types module_list in
       known_types_names <-
         List.fold_left
-        (fun acc t -> StringSet.add t.Odoc_type.ty_name acc)
+        (fun acc t -> String.Set.add t.Odoc_type.ty_name acc)
         known_types_names
         types ;
 
@@ -296,12 +296,12 @@ struct
       let class_types = Odoc_info.Search.class_types module_list in
       known_classes_names <-
         List.fold_left
-        (fun acc c -> StringSet.add c.Odoc_class.cl_name acc)
+        (fun acc c -> String.Set.add c.Odoc_class.cl_name acc)
         known_classes_names
         classes ;
       known_classes_names <-
         List.fold_left
-        (fun acc ct -> StringSet.add ct.Odoc_class.clt_name acc)
+        (fun acc ct -> String.Set.add ct.Odoc_class.clt_name acc)
         known_classes_names
         class_types ;
 
@@ -310,12 +310,12 @@ struct
       let modules = Odoc_info.Search.modules module_list in
       known_modules_names <-
         List.fold_left
-        (fun acc m -> StringSet.add m.m_name acc)
+        (fun acc m -> String.Set.add m.m_name acc)
         known_modules_names
         modules ;
       known_modules_names <-
         List.fold_left
-        (fun acc mt -> StringSet.add mt.mt_name acc)
+        (fun acc mt -> String.Set.add mt.mt_name acc)
         known_modules_names
         module_types ;
 
diff --git a/nix/default.nix b/nix/default.nix
index 0121a1d19f4c87a04e15fa7da4876daede52c45c..b7804254b581310c919738b827b0dd22a9aa0ba7 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -1,5 +1,5 @@
 # paramaterised derivation with dependencies injected (callPackage style)
-{ pkgs, stdenv, src ? ../., opam2nix, ocaml_version ? "ocaml-ng.ocamlPackages_4_05.ocaml", plugins ? { } }:
+{ pkgs, stdenv, src ? ../., opam2nix, ocaml_version ? "ocaml-ng.ocamlPackages_4_08.ocaml", plugins ? { } }:
 
 let mk_buildInputs = { opamPackages ? [], nixPackages ? [] } :
     [ pkgs.gnugrep pkgs.gnused  pkgs.autoconf pkgs.gnumake pkgs.gcc pkgs.ncurses pkgs.time pkgs.python3 pkgs.perl pkgs.file pkgs.which pkgs.dos2unix] ++ nixPackages ++ opam2nix.build {