>After 20 years of programming[1]29 years here. I started in 1988.
>I’ve gotten to a point in my life where an advanced type system... is absolutely mandatory for any language I’ll pick
I used static type systems for most of my programming life until i used Javascript, Python, and then Common Lisp. I don't consider them mandatory.
On the other hand, I do consider strong typing mandatory. That was my problem with Ruby and Js, not to mention PHP as well.
>without types (ie dynamically typed)
"dynamically typed" doesn't mean "without types"
>No LISP dialect that I’m aware of has prioritized or talked about or emphasized type checking
Well, check again, then -- Common Lisp is strongly typed and has a lot of type checks. They just happen at runtime.
>I’ve been burned too many times working on large (100k+ LOC) dynamically typed codebases that I really never want to work with such a codebase again.
Which language?
>what does LISP offer over a modern programming language with a sophisticated type system
you'll have to research more
>Modern languages of today offer the features that made LISP unique and superior in its heyday
None offers metaprogramming as easy as powerful as in Lisp. (read again "easy" as key point)
None, except Dylan or some Scheme extensions, offer something like CLOS
None, except Smalltalk and derivates (Pharo) offer a powerful interactive image-based environment where everything is dynamic and can be redefined at runtime; AND the running image can be saved to disk an restored later.
Very few will have an exception handling and recovering mechanism as complete and reliability-assuring as Common Lisp's "signals, conditions and restarts" system.
Few offer a full numeric tower out of the box, including IEEE floats, bignums, fixnums, complex nums, and fractional numbers.
Very few dynamic programming languages run as fast as Common Lisp. Few of them compile to native code without losing any feature or functionality or forcing you to use a subset of the language.
And none of all, except Common Lisp, offer all of the above at the same time.
>and languages with powerful type systems offer a huge advantage that LISP never has had.
You're forgetting the advantages that Lisp have over them.
But I don't want to convince you -- i have huge respect for OCaml, SML and Haskell (btw, Did you know the first ML implementation was basically a extension to Lisp?) -- they simply have a very different philosophy for development, one that is focused at doing everything at compile time, and of giving you just a few tools to deal with ill behavior at compile time.