Este video oficial de Dart establece que la llamada "seguridad nula de sonido" de Dart es mejor que el diseño de seguridad nula de Kotlin, porque puede optimizar el código en función de si una variable se declara anulable y otros idiomas (supongo que esto se refiere a idiomas que incluyen Kotlin ) tienen que hacer comprobaciones de tiempo de ejecución para garantizar la seguridad nula.
Entonces, ¿qué optimización adicional hace Dart?
¿Cómo interactúa con las bases de código heredadas que no admiten la seguridad nula mientras se garantiza la seguridad nula?
Entonces, ¿qué optimización adicional hace Dart?
El tipo más básico de optimización es que, al realizar cálculos en tipos numéricos, el compilador puede tratarlos (internamente) como tipos primitivos de tipos sin referencia (valores sin caja).
¿Porqué es eso?
Porque no pueden ser nulos y, por tanto, no es necesario usarlos como datos de tipos referenciados (valores en caja).
¿Porqué es eso?
Porque null se representa en Dart como una referencia constante nula.
Si no hay necesidad de hacer referencia a esta constante, ¿por qué no usar tipos de valor en lugar de tipos de referencia? Al menos en el código generado, que ya se puede optimizar en tiempo de compilación.
Todo esto gracias al llamado "modo fuerte".
El modo fuerte junto con los tipos que no aceptan valores NULL le permite optimizar el código ya en la etapa de compilación, lo cual es muy importante para modos como AOT, que no permiten optimizar el código en tiempo de ejecución, porque está en el RE ( modo de lectura y ejecución).
¿Cómo interactúa con las bases de código heredadas que no admiten la seguridad nula mientras se garantiza la seguridad nula?
Me parece que deberías hacer esto como una pregunta separada.