An observation here. It seems that Lucee evaluates parameters in right to left fashion and ACF2021 seems to evaluate parameters from Left to right fashion.
function(parameter1, parameter2, parameter3)
Lucee will evaluate parameter3 first while ACF2021 will evaluate parameter1 first.
Proper example (which intentionally throws an error)
<cfscript> maskedUserEmail = replaceNoCase("firstname.lastname@example.org", mid("c", 2, len("c")-2), repeatString("x",len("c")-2)); </cfscript>
Error on Lucee
Parameter 2 of function repeatString which is now [-1] must be a non-negative integer on line 2
Error on ACF2021
The value of parameter 3 of the function Mid, which is now -1, must be a non-negative integer on line 2
Here is trycf gist:
I am not sure if this evaluation of parameters is intentional or not. I am also not sure if there is any impact of this change on coding.