> [...] 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