 It also supports optional type annotation and casting, which can be added as necessary at the later profiling and optimization stages, to permit the compiler to generate more efficient code.For instance, codice_1 can hold an unboxed integer in a range supported by the hardware and implementation, permitting more efficient arithmetic than on big integers or arbitrary precision types.Similarly, the compiler can be told on a per-module or per-function basis which type of safety level is wanted, using "optimize" declarations.