Index: openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl,v
diff -u -r1.66.2.24 -r1.66.2.25
--- openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl	29 Jul 2021 15:58:44 -0000	1.66.2.24
+++ openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl	12 Jul 2022 15:15:02 -0000	1.66.2.25
@@ -1128,7 +1128,7 @@
     @param object_id the target, it is the first arg to the method
     @param args the remaining arguments
 } {
-    return [ad_apply ${method_name}__[util_memoize [list acs_object_type $object_id]] [concat $object_id $args]]
+    return [${method_name}__[util_memoize [list acs_object_type $object_id]] $object_id {*}$args]
 }
 
 ad_proc -deprecated ad_dispatch {
Index: openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl,v
diff -u -r1.33.2.4 -r1.33.2.5
--- openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl	28 Oct 2020 15:39:19 -0000	1.33.2.4
+++ openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl	12 Jul 2022 15:15:02 -0000	1.33.2.5
@@ -58,7 +58,7 @@
     set proc_name [acs_sc_generate_name $contract $impl $operation]
 
     if { [namespace which $proc_name] ne "" } {
-        return [ad_apply $proc_name $call_args]
+        return [$proc_name {*}$call_args]
     }
 
     if { $error_p } {
Index: openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl,v
diff -u -r1.189.2.129 -r1.189.2.130
--- openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl	6 Jul 2022 15:44:23 -0000	1.189.2.129
+++ openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl	12 Jul 2022 15:15:01 -0000	1.189.2.130
@@ -1259,9 +1259,14 @@
     }
 }
 
-ad_proc -public ad_apply {func arglist} {
+ad_proc -deprecated ad_apply {func arglist} {
     Evaluates the first argument with ARGLIST as its arguments, in the
     environment of its caller. Analogous to the Lisp function of the same name.
+
+    DEPRECATED: modern Tcl can achieve the same result simply by
+    expanding a list as arguments of a command.
+
+    @see {*}
 } {
     set func_and_args [concat $func $arglist]
     return [uplevel $func_and_args]
@@ -1279,7 +1284,7 @@
             return -code error "Unsafe argument to ad_safe_eval: $arg"
         }
     }
-    return [ad_apply uplevel $args]
+    return [uplevel {*}$args]
 }
 
 ad_proc -public ad_decode { value args } {
Index: openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl,v
diff -u -r1.22.2.7 -r1.22.2.8
--- openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl	21 Oct 2021 12:07:20 -0000	1.22.2.7
+++ openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl	12 Jul 2022 15:15:01 -0000	1.22.2.8
@@ -70,7 +70,7 @@
             set $name $val
         }
     }
-    set xml [ad_apply rss_gen $args]
+    set xml [rss_gen {*}$args]
 
     # Write report.
     set report_file [rss_gen_report_file \
Index: openacs-4/packages/rss-support/www/subscr-ae.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/rss-support/www/subscr-ae.tcl,v
diff -u -r1.10 -r1.10.2.1
--- openacs-4/packages/rss-support/www/subscr-ae.tcl	21 Jan 2018 00:38:38 -0000	1.10
+++ openacs-4/packages/rss-support/www/subscr-ae.tcl	12 Jul 2022 15:15:01 -0000	1.10.2.1
@@ -9,10 +9,9 @@
     we pull out channel title and link.
 
     It would be very tempting to accept impl_name as an argument
-    instead of impl_id.  However, the "ad_apply" call in acs_sc::invoke
-    raises the ugly possibility of code-smuggling through the url,
-    so we will force the use of the easily validated impl_id
-    instead.
+    instead of impl_id.  However, the expanded call in acs_sc::invoke
+    raises the ugly possibility of code-smuggling through the url, so
+    we will force the use of the easily validated impl_id instead.
 
 } {
     subscr_id:optional,naturalnum