Languages with type systems designed for 1 are trying to figure out how to enable 2 without breaking backwards compatibility.
(Languages without a full runtime are in a very bad position here.)
Now the controversial part.
1 is obsolete. Modern language runtimes can use internal typing, speculation, and side exits to automatically make the speed improvements with no loss of generality.
2 is still valuable.
2. Restrictions from one programmer to another. These allow a library author to stop a library user from calling their functions with data that they aren't able to handle. (Enforced by the compiler, of course.)
This is true regardless of how you feel about race scapegoating or political correctness.
(Obviously, both of those labels were invented by their detractors.)
I steal men's memes and make them my own.
(I did not make this, I just found it somewhere.)