Pointers and arrays. It's too much work to develop most things in C and its direct descendants. It's of course a shame that Pascal got pushed aside: most of the speed of C, but with array bounds checking and MUCH less need for pointers due to reference parameters and function return space allocated by the calling routine. And perhaps Pascal is even too much work, since we still have to manually deallocate many types of data, since it lacks even reference counting.
I agree with you on the garbage collector, though. It really slows down things by thrashing on multilevel caches, despite generational GC. I would really like to perhaps see something that gave you a choice of either reference counting + destructors, or, garbage collection. I can't see how you could make mixing libraries written for one or the other style work with an arbitrary ref-cnt / GC selection, though.
I'd probably miss exception handling in any event, as well.
Damn trade offs. I want it all, and I don't want to pay for it!