Hello serbod, I don't mean to discourage you. Actually I like the idea of safe mode. But some may not agree with the things listed in your example.
untyped variables
Did you also mean untyped parameters? It can be useful sometimes. For example, I write module to write and load block data without fixed size from/to files and TMemoryStream. Using untyped parameters seems good and easier for me as long as I understand how to safely use untyped parameters.
uninitialized variables
I know uninitialized variables can be dangerous. But if we initialized all variables it will be decrease the performance, I know nowadays computers are fast. But I follow my style: initialized the variables only when it is going to be used.
range check
I always disable range check, I enable it only when for testing certain things. The last time I remember, enabling range check will slow the performance significantly. I don't say my codes are free from range check errors, but I always choose the data type properly before I use it and I always manually make sure the variable size is large enough to store the calculation values.
io check
Now I never enable it, the last time I use it was learning programming many years ago. I think it will be good if the error is caught by programmer rather than the software/compiler/computer? I mean will it better if the programmer write better code by using ioresult, isn't it?
stack overflow check
Do we still need it? Maybe. But I remember I used it when programming on 8-bit machine for DOS using Turbo Pascal 5.5. Now we're using 32 even 64 bit, do we now still have stack overflow issue?
I believe we usually learn a lot from errors. If we are overprotected, not much we will learn. By making the compiler do a lot of things to protect and to limit programmer to do certain things, it won't be good.
I don't mean to against your idea, but from experienced programmers' view point, it doesn't sound too good. It maybe good for novice programmers but I doubt it, because overprotected will make them learn less, in the future they won't know how to manipulate low-level memory, they can't prevent io and range problem manually.
Last words, safe mode is a nice feature to put on FPC (or Lazarus). But the problems are what items should put into the list and who will write this feature.
It's only my 2 cents, some may agree or not with me.