Are you aware of The Mill Processor's and toolchain's architectural concepts?
Somewhat – I'm budget limited, so I haven't played with similar concepts using FPGAs, for example; my real understanding is limited to what I can explore in extended inline assembly and GNU C extensions, really.
Fast context switches (even without switching the task/thread, i.e. for stuff like extremely efficient coroutines), separating data stacks from return address stacks, and especially abstracting memory allocations, I find
extremely interesting. I have dabbled in investigating what would happen if one replaced pointers with handle+offset pairs, with handle being an opaque cookie referring to a contiguous memory segment with obtainable current size (and other things like access permission cookies and such), but no global linear address. (That would essentially move your memory allocator to kernel and/or hardware, and allow some extremely interesting page translation stuff, making it extremely difficult to exploit unless the bug is in the high-level human-defined logic. Fully compatible with freestanding C, too.)
Similarly for xCore/xMOS.
I like languages where their white paper states "X and Y have previously been shown to work well and work together, but Z has been omitted because of the problems it causes". In other words, simple modular concepts and abstractions that play well together.
Yep, exactly: interoperability, not encompassing frameworks.
I don't think I was sufficiently clear. My X,Y,Z are language features. A classic example of a "Z" is "multiple inheritance of implementation", omitted because it has been shown to be the source of many language problems.
Ah; "
Language features X and Y ...", right.
I obviously agree with that, too, because it shows that even in the original design white paper the authors are trying to learn from history, not ignore it (relying on their "vision" instead, as is usual).
Backwards compatibility also thwarts revolutions.
Gradual changes are like hill-climbing genetic algorithms: at best they find local peaks, but can't jump to hills with higher peaks.
True, but it is obvious to me that most people who try such jumps fail, and end up filling the valleys with crap. I say it is better to explore the hill first, before deciding to jump to another one.
I'm also not saying I don't want others to jump; I just don't want to wade through the litter of failed attempts. PHP is a good example: when writing PHP code, I'm fighting the language to get it to do the right thing (albeit less now that Magic Quotes and similar inanities are history). And Python's WSGI –– hey, lets invent our own web server to script gateway, just because! –– is pretty horrible from performance and low-level security point of view.
I don't know which of the two things I should worry about 
A major reason why I don't
want to design my own programming language is that I
know I'd have a very hard time releasing control, and letting others evolve it to whatever use and purpose they see fit.
Tools, example code, libraries, my simple PCB designs, I have no problem with letting go. A full language, with its own paradigm.. you need to put much more of yourself into it. Doing the development effort in a team from the get go makes it easier, because it's no longer yours alone at any point.