The main improvement in Version 0.7 is adding support for checked strings and checked pointers to null-terminated arrays.
The improvements and changes include:
- Add types for checked null-terminated arrays (
nt_checked
) and checked pointers to null-terminated arrays (nt_array_ptr
) - Extend typing rules to allow string and array literals to be used where expressions with checked pointer types are expected.
- Require initializers for variables with checked pointer types or struct or array types that contain checked pointers.
- Describe handling of initializer expressions involving checked pointers.
- Revise rules for implicit conversions between checked pointer types. Allow conversions to/from void pointers for now.
- Change syntax for bounds cast operators.
- Remove span type.
- Rename
bounds(none)
tobounds(unknown)
. - Describe static checking rules for return statements.
- Disallow
array_ptrs
of function types. - Various wording clean ups.
Caveats:
A non-null value at the upper bound an nt_array_ptr
allows the bounds of the nt_array_ptr
to be widened. The flow analysis for widening bounds still needs to be described in detail.