Robert O'Callahan's recent post about ownership types, stack allocation and abstraction penalties has a comment pointing to the Cyclone programming language.

This is an interesting looking language in that it has many of the properties of C which make it popular for system level development:

Cyclone is like C: it has pointers and pointer arithmetic, structs, arrays, goto, manual memory management, and C's preprocessor and syntax.

But it also includes higher level constructs and safer memory management:

Cyclone adds features such as pattern matching, algebraic datatypes, exceptions, region-based memory management, and optional garbage collection

The developers are promoting it as a safer dialect of C:

Cyclone is safe: pure Cyclone programs are not vulnerable to a wide class of bugs that plague C programs: buffer overflows, format string attacks, double free bugs, dangling pointer accesses, etc.

The user manual has a good description of the various features.