My current post on LinkedIn:
Safe language features:
– range check
– arithmetic overflow check
– stack overflow check
– strict typing
– if it also uses dynamic typed variables then a safe runtime type check mechanism
– if a variable goes out of scope, its resources must be freed
– if an object has a live reference it should not be freed
– You should be never allowed to free a resource twice or more
– nil pointer check, or completely avoid pointers (Java!)
– no nil value allowed to assign to any variable (it’s insane that in Java a String could be nil, it should be empty string instead of nil)
– no object should have a nil value, they should be empty object instead.
– no access across freed or otherwise invalid pointer
– code analyzer to detect (if possible) infinite loops
– exception handling, do not allow empty catch blocks or any swallowing of an exception
– detailed stack trace and memory allocation map
…and that’s it for now…