Progressive
disclosure of complexity, i.e. it should be easy to write most of
the code (the parts that aren't performance bottlenecks) to perform
reasonably efficiently, and the language should provide full control to
optimize the bottlenecks.
Code compiled in release mode must be as fast as possible on modern
hardware.
Compilation in debug mode should be as fast as possible to speed up
the edit-compile-run cycle during development.
Be able to interoperate with C++ code to a certain degree, to avoid
having to write a C wrapper for everything. However, this should not
restrict the design of the language.
Safe by default, but allow disabling safety checks (both
individually and collectively) easily where necessary. E.g. array access
bounds checking, integer overflow detection.
The language should be relatively simple, but most of the perceived
simplicity should come from the aforementioned progressive disclosure
principle. For simple things: "There should be one - and preferably only
one
obvious way to do it."
Should scale well, e.g. fast build times, easy greppability of
function/type/variable definitions.
Should be familiar and attractive to C++ and C developers. I.e. try
not to change too much. Only change things that are an objective
improvement from C++ or otherwise well justified.