Also, __attribute could be used to declare object variables as weak:
__attribute(weak, Foo) weak_foo_ref;
Currently one has to wrap the reference in an array to achieve this:
array(Foo) indirect_weak_foo_ref = set_weak_flag (({0}), 1);
Essentially all the low level support for weak flags on object variables has been there for a long time; it's only the syntax bit that's missing.
As opposed to sprintf_format et al, typedefs don't work very well in this case. It'd be very clumsy since you'd have to write a new typedef for essentially every variable.
I wouldn't mind a more brief syntax than __attribute(a,b) though. Maybe the C#-style [...] is difficult to get into the parser, but what about e.g. [[...]]?
[[noreturn]] void error(string msg); string werror([[sprintf_format]] string fmt, [[sprintf_args]] mixed ... args); [[weak]] Foo weak_foo_ref;
Not implying that some typedefs wouldn't improve the sprintf_format case still, of course.