Another very old case insensitive language is REDUCE for which I made Reduce.jl package, this language happens to also be the very 1st computer algebra system ever created, very old. From Introduction docs:
Another characteristic of the above example is the use of lower case on input and upper case on output. In fact, input may be in either mode, but output is usually in lower case. To make the difference between input and output more distinct in this manual, all expressions intended for input will be shown in lower case and output in upper case. However, for stylistic reasons, we represent all single identifiers in the text in upper case.
Or as stated in the document REDUCE: The First Forty Years by the original author:
In the 1960’s, input devices only had capital letters, hence nearly all programs those days had upper-case names.
So it is a limitation that stems from the 1960s in this case… NIM is a new language though, weird.
julia> using Reduce # use `}` to enter reduce> mode
Reduce (Free CSL version, revision 5040), 14-Jul-19 ...
reduce> X + x;
Which is rather unfortunate, but hasn’t bothered me too much yet.
The REDUCE language uses ASCII to encode some unicode characters (in the CSL version, the PSL version is based on old pure lisp and does not support much unicode at all)
The Julia implementation of the package is designed so that they are automatically encoded if needed.