I just watched the awesome talk of Yukihiro "Matz" (bellow) about the future of Ruby.
There are lots of things to learn from there, please watch.
He talks about SSS (Second System Syndrome - when you try to rewrite software from scratch) and how to avoid the problems of doing it. In summary: "don't". ^_^
If you are going to do a big rewrite do it piece by piece and keep compatibility. That's what he and the Ruby team are going to do for Ruby 3.0.
"No promises", he said, but he gave some general directions for Ruby next steps:
- Better interaction man ->machine and back. Actually, better errors (smart errors?) and a sort of static type checking, but not the way we are use to it. He called it "soft type checking", and it resembles more an static code analyser than a language feature :)
- Performance. They're trying JIT compilation alternatives,
- Concurrency (or should I call "parallelism") ^_^
Part 3 is by far the most interesting. The plan is to remove GIL (Global Interpreter Lock) in a compatible way.
How? Basically 3 steps:
- Introduce a better concurrency model than threads (I couldn't agree more).
- Give warnings on using threads directly.
- Remove GIL (and threads).
He's experimenting on some concurrent models like actors and... wow... PIPES! I just gave a talk in RubyConf Brasil about using Ruby and pipes (good old linux pipes) as a good concurrent model :P
A little toy language called Streem was created to test the concept. And by the time of this writing (sep/2015), Matz is pretty active on it.
I wonder if he had some contact with the work of J. Paul Morrison. As far as I know, Paul is working with this kind of thing, Flow Based Programming, for a couple of decades. His book is really comprehensive on the concept.
I really hope we go that way, my little experience with some of the FBP concepts were amazing. I found it easier and a less error prone approach to concurrency than all other alternatives I tried.