diff --git a/src/kernel_services/ast_data/cil_types.mli b/src/kernel_services/ast_data/cil_types.mli
index a4ee7f3882e02ae8cf6d4ea3038de785fcbf24eb..eb920a51c908ceb0db8dc38638bc32db2d169db3 100644
--- a/src/kernel_services/ast_data/cil_types.mli
+++ b/src/kernel_services/ast_data/cil_types.mli
@@ -1675,13 +1675,8 @@ and spec = {
     Each extension is associated with a keyword, and can be either a global
     annotation, the clause of a function contract, a code annotation,
     or a loop annotation.
-    An extension can be registered through the following functions:
-    - [Logic_typing.register_xxx_extension] for parsing and type-checking
-    - [Cil_printer.register_xxx_extension] for pretty-printing an
-      extended clause
-    - [Cil.register_xxx_extension] for visiting an extended clause
-      where xxx can be either [global], [behavior], [code_annot] or
-      [loop annot] depending on the level at which the extension should be seen.
+    An extension can be registered through the function
+    [Acsl_extension.register_xxx].
 
     It is _not_ possible to register the same keyword for annotations at two
     different levels (e.g. [global] and [behavior]), as this would make the
diff --git a/src/kernel_services/ast_printing/cil_printer.ml b/src/kernel_services/ast_printing/cil_printer.ml
index 951787b536a0f476d6946932eab7f175cad825d6..10e359d4b91f4b15b4365918dc2ad4b1a54a86c9 100644
--- a/src/kernel_services/ast_printing/cil_printer.ml
+++ b/src/kernel_services/ast_printing/cil_printer.ml
@@ -92,12 +92,6 @@ module Extensions = struct
   let pp_short (printer) fmt {ext_name; ext_kind} =
     !ref_short_print ext_name printer fmt ext_kind
 
-  let ref_deprecated_handler = ref (fun _ _ _ -> assert false)
-  let set_deprecated_handler ~handler =
-    ref_deprecated_handler := handler
-
-  let deprecated_register name =
-    !ref_deprecated_handler name
 end
 let set_extension_handler = Extensions.set_handler
 
@@ -115,21 +109,6 @@ let () =
       "__fc_sig_err", "SIG_ERR";
     ]
 
-(* Deprecated functions *)
-let set_deprecated_extension_handler = Extensions.set_deprecated_handler
-
-let register_behavior_extension name =
-  Extensions.deprecated_register name Ext_contract
-
-let register_code_annot_extension name =
-  Extensions.deprecated_register name (Ext_code_annot Ext_here)
-
-let register_loop_annot_extension name =
-  Extensions.deprecated_register name (Ext_code_annot Ext_next_loop)
-
-let register_global_extension name =
-  Extensions.deprecated_register name Ext_global
-
 (* Internal attributes. Won't be pretty-printed *)
 let reserved_attributes = ref []
 let register_shallow_attribute s =
diff --git a/src/kernel_services/ast_printing/cil_printer.mli b/src/kernel_services/ast_printing/cil_printer.mli
index 7e0b5fd02905c3441575f96375a3d1be1574db85..cb6802b1bf576b4ec49d4b609898ae2dd03b71f9 100644
--- a/src/kernel_services/ast_printing/cil_printer.mli
+++ b/src/kernel_services/ast_printing/cil_printer.mli
@@ -63,46 +63,6 @@ val get_termination_kind_name: Cil_types.termination_kind -> string
 val register_shallow_attribute: string -> unit
 (** Register an attribute that will never be pretty printed. *)
 
-val register_behavior_extension:
-  string ->
-  (Printer_api.extensible_printer_type -> Format.formatter ->
-   Cil_types.acsl_extension_kind -> unit) -> unit
-(** Register a pretty-printer used for behavior extension.
-    @plugin development guide
-    @deprecated 21.0-Scandium
-*)
-[@@ deprecated "Use Acsl_extension.register_behavior (arg: ~printer) instead"]
-
-val register_global_extension:
-  string ->
-  (Printer_api.extensible_printer_type -> Format.formatter ->
-   Cil_types.acsl_extension_kind -> unit) -> unit
-(** Register a pretty-printer used for global extension.
-    @plugin development guide
-    @deprecated 21.0-Scandium
-*)
-[@@ deprecated "Use Acsl_extension.register_global (arg: ~printer) instead"]
-
-val register_code_annot_extension:
-  string ->
-  (Printer_api.extensible_printer_type -> Format.formatter ->
-   Cil_types.acsl_extension_kind -> unit) -> unit
-(** Register a pretty-printer used for code annotation extension.
-    @plugin development guide
-    @deprecated 21.0-Scandium
-*)
-[@@ deprecated "Use Acsl_extension.register_code_annot_<kind> (arg: ~printer) instead"]
-
-val register_loop_annot_extension:
-  string ->
-  (Printer_api.extensible_printer_type -> Format.formatter ->
-   Cil_types.acsl_extension_kind -> unit) -> unit
-(** Register a pretty-printer used for loop annotation extension.
-    @plugin development guide
-    @deprecated 21.0-Scandium
-*)
-[@@ deprecated "Use Acsl_extension.register_loop_annot (arg: ~printer) instead"]
-
 val state: Printer_api.state
 
 val print_global: Cil_types.global -> bool
@@ -122,12 +82,6 @@ val set_extension_handler:
     @since 21.0-Scandium
 *)
 
-val set_deprecated_extension_handler:
-  handler:(string -> Cil_types.ext_category ->
-           (Printer_api.extensible_printer_type -> Format.formatter ->
-            Cil_types.acsl_extension_kind -> unit) ->
-           unit) -> unit
-
 (*
 Local Variables:
 compile-command: "make -C ../../.."
diff --git a/src/kernel_services/ast_queries/acsl_extension.ml b/src/kernel_services/ast_queries/acsl_extension.ml
index 450fd797e13a085e92cdf1469e8d89f14705fd2e..7445dddc90a485832dd140ab261abfcbebba5f02 100644
--- a/src/kernel_services/ast_queries/acsl_extension.ml
+++ b/src/kernel_services/ast_queries/acsl_extension.ml
@@ -53,15 +53,6 @@ type extension_common = {
   printer: extension_printer ;
   short_printer: extension_printer ;
 }
-type extension = {
-  preprocessor: extension_preprocessor ;
-  typer: extension_typer ;
-  status: bool ;
-  category: ext_category ;
-  visitor: extension_visitor ;
-  printer: extension_printer ;
-  short_printer: extension_printer ;
-}
 
 let default_printer printer fmt = function
   | Ext_id i -> Format.fprintf fmt "%d" i
@@ -238,72 +229,3 @@ let () =
   Cil_printer.set_extension_handler
     ~print: Extensions.print
     ~short_print:Extensions.short_print
-
-(* For Deprecation: *)
-
-let deprecated_replace name ext =
-  let info1:extension_single = {
-    preprocessor = ext.preprocessor ;
-    typer = ext.typer ;
-    status = ext.status ;
-  }
-  in
-  let info2:extension_common  = {
-    category = ext.category ;
-    visitor = ext.visitor ;
-    printer = ext.printer ;
-    short_printer = ext.printer ;
-  }
-  in
-  Hashtbl.add Extensions.ext_single_tbl name info1;
-  Hashtbl.add Extensions.ext_tbl name info2
-
-let strong_cat = Hashtbl.create 5
-
-let default_typer _typing_context _loc _l = assert false
-
-let merge ((info1:extension_single),(info2:extension_common)) :extension =
-  {preprocessor = info1.preprocessor ;
-   typer = info1.typer ;
-   status = info1.status ;
-   category = info2.category ;
-   visitor = info2.visitor ;
-   printer = info2.printer ;
-   short_printer = info2.printer}
-
-let deprecated_find ?(strong=true) name cat op_name =
-  match Hashtbl.find_opt Extensions.ext_single_tbl name with
-  | None ->
-    if strong then Hashtbl.add strong_cat name cat ;
-    merge (make name cat default_typer false)
-  | Some ext1 ->
-    let ext2 = Extensions.find_common name in
-    if strong && Hashtbl.mem strong_cat name then begin
-      if ext2.category = cat then merge (ext1,ext2)
-      else
-        Kernel.fatal
-          "Registring %s for %s: this extension already exists for another \
-           category"
-          op_name name
-    end else if strong then begin
-      Hashtbl.add strong_cat name cat ;
-      let ext2 = { ext2 with category = cat } in
-      merge (ext1,ext2)
-    end else merge (ext1,ext2)
-
-let deprecated_register_typing name cat status typer =
-  deprecated_replace name
-    { (deprecated_find name cat "typing") with status ; typer }
-
-let deprecated_register_printing name cat printer =
-  deprecated_replace name
-    { (deprecated_find ~strong:false name cat "printing") with printer }
-
-let deprecated_register_visit name cat visitor =
-  deprecated_replace name
-    { (deprecated_find name cat "visit") with visitor }
-
-let () =
-  Logic_typing.set_deprecated_extension_handler deprecated_register_typing ;
-  Cil.set_deprecated_extension_handler deprecated_register_visit ;
-  Cil_printer.set_deprecated_extension_handler deprecated_register_printing
diff --git a/src/kernel_services/ast_queries/cil.ml b/src/kernel_services/ast_queries/cil.ml
index 9989a671d839911fefad80bd78d5184f41161a6e..c566dfb1b33c36ce1285de910e2ce710ff1d6775 100644
--- a/src/kernel_services/ast_queries/cil.ml
+++ b/src/kernel_services/ast_queries/cil.ml
@@ -837,20 +837,9 @@ module Extensions = struct
 
   let visit name = !ref_visit name
 
-  let ref_deprecated_handler = ref (fun _ _ _ -> assert false)
-  let set_deprecated_handler ~handler =
-    ref_deprecated_handler := handler
-
-  let register_behavior name ext =
-    !ref_deprecated_handler name Ext_contract ext
 end
 let set_extension_handler = Extensions.set_handler
 
-(* Deprecated *)
-let set_deprecated_extension_handler = Extensions.set_deprecated_handler
-let register_behavior_extension = Extensions.register_behavior
-
-
 (* sm/gn: cil visitor interface for traversing Cil trees. *)
 (* Use visitCilStmt and/or visitCilFile to use this. *)
 (* Some of the nodes are changed in place if the children are changed. Use
diff --git a/src/kernel_services/ast_queries/cil.mli b/src/kernel_services/ast_queries/cil.mli
index df4e0e12389593b8b0423c1bf6d46e91dd878bc5..02f54e2f020e25934ad25cddffb08a467da39b65 100644
--- a/src/kernel_services/ast_queries/cil.mli
+++ b/src/kernel_services/ast_queries/cil.mli
@@ -1789,22 +1789,6 @@ class type cilVisitor = object
 
 end
 
-(** Indicates how an extended behavior clause is supposed to be visited.
-    The default behavior is [DoChildren], which ends up visiting
-    each identified predicate in the list and leave the id as is.
-
-    @plugin development guide
-
-    @since Sodium-20150201
-    @modify Silicon-20161101
-    @deprecated 21.0-Scandium
-*)
-val register_behavior_extension:
-  string ->
-  (cilVisitor -> acsl_extension_kind -> (acsl_extension_kind) visitAction)
-  -> unit
-[@@ deprecated "Use Acsl_extension.register_behavior instead (arg: ~visitor)"]
-
 (**/**)
 class internal_genericCilVisitor:
   fundec option ref -> Visitor_behavior.t -> (unit->unit) Queue.t -> cilVisitor
@@ -2378,11 +2362,6 @@ val set_extension_handler:
     @since 21.0-Scandium
 *)
 
-val set_deprecated_extension_handler:
-  handler:(string -> ext_category ->
-           (cilVisitor -> acsl_extension_kind -> acsl_extension_kind visitAction) ->
-           unit) -> unit
-
 (* ***********************************************************************)
 (** {2 Forward references} *)
 (* ***********************************************************************)
diff --git a/src/kernel_services/ast_queries/logic_typing.ml b/src/kernel_services/ast_queries/logic_typing.ml
index 10e1c9714402301d3b9d452b19c3c6c9ab804a92..177bb48546c3d0fb3e8253674bd6c053cca8e62b 100644
--- a/src/kernel_services/ast_queries/logic_typing.ml
+++ b/src/kernel_services/ast_queries/logic_typing.ml
@@ -544,42 +544,11 @@ module Extensions = struct
   let typer_block name ~typing_context:typing_context ~loc =
     !ref_typer_block name typing_context loc
 
-  (* For deprecated functions *)
-  let ref_deprecated_handler = ref (fun _ _ _ _  -> assert false)
-
-  let set_deprecated_handler ~handler =
-    ref_deprecated_handler := handler
-
-  let deprecated_register name category status typer =
-    let typer typing_context loc = typer ~typing_context ~loc in
-    !ref_deprecated_handler name category status typer
 end
 let set_extension_handler = Extensions.set_handler
 let get_typer = Extensions.typer
 let get_typer_block = Extensions.typer_block
 
-(* Deprecated ACSL extensions functions *)
-let set_deprecated_extension_handler =
-  Extensions.set_deprecated_handler
-
-let register_behavior_extension name f =
-  Extensions.deprecated_register name Ext_contract f
-
-let register_global_extension name f =
-  Extensions.deprecated_register name Ext_global f
-
-let register_code_annot_extension name f =
-  Extensions.deprecated_register name (Ext_code_annot Ext_here) f
-
-let register_code_annot_next_stmt_extension name f =
-  Extensions.deprecated_register name (Ext_code_annot Ext_next_stmt) f
-
-let register_code_annot_next_loop_extension name f =
-  Extensions.deprecated_register name (Ext_code_annot Ext_next_loop) f
-
-let register_code_annot_next_both_extension name f =
-  Extensions.deprecated_register name (Ext_code_annot Ext_next_both) f
-
 let rec arithmetic_conversion ty1 ty2 =
   match unroll_type ty1, unroll_type ty2 with
   | Ctype ty1, Ctype ty2 ->
diff --git a/src/kernel_services/ast_queries/logic_typing.mli b/src/kernel_services/ast_queries/logic_typing.mli
index bd1fe2010f104e110c4271ea1d0471d192db5817..9db60f4b059866436d82d192083d0e22c07fcb95 100644
--- a/src/kernel_services/ast_queries/logic_typing.mli
+++ b/src/kernel_services/ast_queries/logic_typing.mli
@@ -151,108 +151,6 @@ type typing_context = {
   on_error: 'a 'b. ('a -> 'b) -> (unit -> unit) -> 'a -> 'b
 }
 
-(** [register_behavior_extension name status f] registers a
-    typing function [f] to
-    be used to type function contract clause with name [name].
-    The boolean flags specifies if the extension can be assigned
-    a property status or not.
-
-    Here is a basic example:
-
-    let count = ref 0 in
-    let foo_typer ~typing_context ~loc ps =
-    match ps with p::[] ->
-       Ext_preds
-       [
-             (typing_context.type_predicate
-                typing_context
-                (typing_context.post_state [Normal])
-                p)])
-      | [] -> let id = !count in incr count; Ext_id id
-      | _ -> typing_context.error loc "expecting a predicate after keyword FOO"
-    let () = register_behavior_extension "FOO" false foo_typer
-
-    @plugin development guide
-
-    @since Carbon-20101201
-    @modify Silicon-20161101 change type of the function
-    @modify 19.0-Potassium add [status] argument
-    @deprecated 21.0-Scandium
-*)
-val register_behavior_extension:
-  string -> bool ->
-  (typing_context:typing_context -> loc:location ->
-   Logic_ptree.lexpr list -> acsl_extension_kind) -> unit
-[@@ deprecated "Use Acsl_extension.register_behavior instead"]
-
-(** register an extension for global annotation.
-
-    @plugin development guide
-
-    @since 18.0-Argon
-    @deprecated 21.0-Scandium
-*)
-val register_global_extension:
-  string -> bool ->
-  (typing_context:typing_context -> loc: location ->
-   Logic_ptree.lexpr list -> acsl_extension_kind) -> unit
-[@@ deprecated "Use Acsl_extension.register_global instead"]
-
-(** register an extension for code annotation to be evaluated at _current_
-    program point.
-
-    @plugin development guide
-
-    @since 18.0-Argon
-    @deprecated 21.0-Scandium
-*)
-val register_code_annot_extension:
-  string -> bool ->
-  (typing_context: typing_context -> loc: location ->
-   Logic_ptree.lexpr list -> acsl_extension_kind) -> unit
-[@@ deprecated "Use Acsl_extension.register_code_annot instead"]
-
-(** register an extension for code annotation to be evaluated for the _next_
-    statement.
-
-    @plugin development guide
-
-    @since 18.0-Argon
-    @deprecated 21.0-Scandium
-*)
-val register_code_annot_next_stmt_extension:
-  string -> bool ->
-  (typing_context: typing_context -> loc: location ->
-   Logic_ptree.lexpr list -> acsl_extension_kind) -> unit
-[@@ deprecated "Use Acsl_extension.register_code_annot_next_stmt instead"]
-
-(** register an extension for loop annotation.
-
-    @plugin development guide
-
-    @since 18.0-Argon
-    @deprecated 21.0-Scandium
-*)
-val register_code_annot_next_loop_extension:
-  string -> bool ->
-  (typing_context: typing_context -> loc: location ->
-   Logic_ptree.lexpr list -> acsl_extension_kind) -> unit
-[@@ deprecated "Use Acsl_extension.register_code_annot_next_loop instead"]
-
-
-(** register an extension both for code and loop annotations.
-
-    @plugin development guide
-
-    @since 18.0-Argon
-    @deprecated 21.0-Scandium
-*)
-val register_code_annot_next_both_extension:
-  string -> bool ->
-  (typing_context: typing_context -> loc: location ->
-   Logic_ptree.lexpr list -> acsl_extension_kind) -> unit
-[@@ deprecated "Use Acsl_extension.register_code_annot_next_both instead"]
-
 module Make
     (C :
      sig
@@ -412,14 +310,6 @@ val get_typer_block:
   string * Logic_ptree.extended_decl list ->
   bool * Cil_types.acsl_extension_kind
 
-(**/**)
-val set_deprecated_extension_handler:
-  handler:(string -> ext_category -> bool ->
-           (typing_context -> location -> Logic_ptree.lexpr list ->
-            acsl_extension_kind) ->
-           unit) ->
-  unit
-
 (*
 Local Variables:
 compile-command: "make -C ../../.."