Ruby 3

It just struck me that I thought wrong about what are ruby 3 goals are. So I want to summarize what Ruby 3 is about in this post for those who misunderstand it like me.

Ruby 3 has 3 main goals: Performance, Remove limits of GIL, Static type checker. And one big constraint: compatibility. Matz doesn’t want a repetition of Python 3 situation.

Sources: Ruby 3x3, Ruby 3.0 with Yukihiro “Matz” Matsumoto.

Performance

This goal also called Ruby 3x3 - it means that bottom line here is to make Ruby 3 at least 3 times faster than Ruby 2. The main bet in this race is on Just In Time compiler or JIT for short. But also there are other things that can help with speed

JIT

There are a lot of possible candidates here:

Remove limits of GIL

GIL stands for Global Interpreter Lock. Because of backward compatibility restriction, they do not want to remove GIL completely. Instead, idea is to introduce new concurrency abstraction which will overcome GIL limits. This new mechanism is called Guilds. You can read more about guilds here

Static type checker

This is the only goal of Ruby 3, which does not have proposed solution from Ruby team. The problem is that team wants backward compatibility on one side and does not want to add heavy type declarations on the other side - because ruby should be enjoyable language.

Options: