[...] I question the balance of effort and benefit.
Since most code around does not use the new syntax, you will have to
support the old syntax as well. As long as it is not mandatory only
people benefit that use it. OTOH, there is additional effort for
backporting new code to projects that only use an old Ruby
interpreter.
The backporting effort for 99% of the cases: code.gsub /end~(class|
module>def>begin>if>unless>while>until>for>do>case)/, 'end'
Given that we do not have this feature today and most
people seem to be able to write code that gets the nesting right I
wonder what the real benefit of this is given that there will be
development effort for the interpreter, test cases, documentation etc.
Of course, you are able to write code with the right nesting, else it
wouldn't run ;). That doesn't mean, that it is easy to write or read.
Uglyness was really just a side aspect although I agree I should have
made this more clear. Somehow I must have assumed that the other
points are obvious. 
Is it really that ugly? I want to emphasize that the additions would be
optional. I really think of using it only, when there are three ore more
consecutive ends. But then, it is really helpful (please also see the
example at bottom).
[...] Even such a
small change can cause significant other work to be done.
That is true 
If you want help figuring out how to do this, I'll be glad to give you
advice, tho you'll have to write it. Doing something like this the
right way is going to be quite difficult unless you know where to
start, and even after that will be fairly tricky. Unless you're an
expert on parsing ruby, you need the assistance of someone (like me)
who is.
Thank you for this nice offer. I would gladly take it
[but as I said,
I have much to to do, so it would be possible at the earliest in about a
month].
But we still have different opinions about whether the syntax would
involve punctuation. I think with it, the code is better readable in
cases like this:
def test
while 1
puts (1..9).each_slice(3).map do |slice|
sum = slice.inject do |acc, ele|
acc + ele
end
if sum > 6
42
else
99
end~if
end~do.join ','
end~while
end