00:00:12
Where were we? Nashville, oh thank you, yes.
00:00:18
It's been a long couple of days now, so thank you for coming.
00:00:24
This is our traditional Q&A session. The way that we'll do this is that we solicited some questions online.
00:00:30
I will also sprinkle in some of my own questions, and we have microphones set up for you to ask your own questions.
00:00:36
If you have a question, you don't have to wait for me to finish; you can go ahead and line up.
00:00:42
I'll call on you at the mic and we'll have a conversation to see where it takes us.
00:00:48
So, how was the conference?
00:00:53
Oh, it was a great conference, thank you. I was a bit tired this year and know that I missed many of the sessions.
00:01:06
Still, I'm looking forward to watching the recordings.
00:01:12
The questions we received online are really good.
00:01:18
I think we'll probably do this more in the future as well, allowing people to expand on their questions in written form.
00:01:29
Looking back at Ruby's history, some of these questions will sound familiar, but I think people like asking you the same questions year after year to see if they get a new answer.
00:01:42
As a core team, is there a language feature that you are especially proud of? Something that has stood the test of time?
00:01:54
Conversely, has there been anything in the Ruby community that has impressed you, like a library or a product?
00:02:11
Yes, the invention of blocks in Ruby is remarkable for me. It is a very small change, but it makes the code readable and is quite extensive.
00:02:25
As for libraries, the creation of RubyGems is very impressive. The very first version of RubyGems was written by David and Chad when they discovered it.
00:02:37
I was in that room at the time.
00:02:43
My follow-up question relates to the two syntaxes for blocks.
00:02:50
Which syntax came first? Did 'do...end' come first or did the braces?
00:02:58
The braces came first.
00:03:07
Then I thought another way of doing this might be nice.
00:03:13
Interestingly, before the first release of version 0.5.995, I released that.
00:03:19
My close friend, who is a Ruby godfather, claimed that mixing 'end' and the brace was kind of confusing.
00:03:29
So I enhanced the syntax for the 'do' format.
00:03:43
As we look towards Ruby 3, there are a couple of questions about things you might consider removing.
00:03:52
You've discussed the big major version upgrades in other languages. Are you considering a significant transition with Ruby 3?
00:04:06
Between versions 1.8 and 1.9, we had a huge jump in compatibility.
00:04:13
This was necessary, but it required the community to migrate to version 1.9.
00:04:22
Many stayed on version 1.8 for a long time.
00:04:27
I don't want to see a similar tragedy with Ruby, and I feel the same about the Python community.
00:04:39
Are there things you’re thinking of removing in Ruby 3?
00:04:58
We are going to remove several trivial features, such as safe variables or certain dollar variables.
00:05:09
It took us several years to remove these features, and once they’re flagged, you will receive warnings before they are entirely removed.
00:05:30
Are we looking at Ruby 2.7 this year? Are we planning Ruby 2.8 or Ruby 2.9?
00:06:00
As I mentioned in the keynote, there will be releases up to Ruby 3.0 next year.
00:06:11
Someone asked if you've changed your mind about macros in Ruby. Have you?
00:06:36
No, I haven't changed my mind, but we exposed the AST in version 2.6.
00:06:43
So you can build an AST from Ruby programs and generate bytecode from it, which means you can create some kind of macros.
00:07:02
So you're saying there’s a chance?
00:07:09
Yes, there’s a chance.
00:07:10
There may also be pre-processing hooks before parsing.
00:07:14
Some people have mentioned the idea of a Ruby transpiler.
00:07:22
This could allow for experimenting with new language features.
00:07:38
Feel free to come up to the mics if you have questions.
00:07:48
Is the pipeline operator going to come back?
00:07:55
I wouldn’t say there’s a strong chance.
00:08:05
This could provide an interesting view into how Ruby core decides on experiments.
00:08:26
I introduced the idea of the pipeline operator at RubyKaigi this year.
00:08:41
We implemented it experimentally and had several discussions.
00:08:51
People expected the pipeline operator to behave like Elixir's operator.
00:09:06
This was surprising and led to a lack of consensus on its behavior.
00:09:18
Another question revolves around functional programming and the design considerations that led to certain Ruby features.
00:09:31
What prompts a feature like the pipeline operator? Was it an observation of Elixir or other languages?
00:09:39
Yes, we considered adopting functional programming features, including pattern matching.
00:10:03
We have also discussed immutable structures.
00:10:13
If you have any proposals, feel free to submit them on the issue tracker.
00:10:40
It helps if you can describe the basic idea clearly to aid discussion among core developers.
00:11:00
Thank you for bringing pattern matching into Ruby. I'm curious if there are plans for pattern matching at the function level.
00:11:15
Currently, Ruby does not support defining multiple versions of a function like Elixir does.
00:11:34
This would require significant changes since Ruby already has optional arguments.
00:11:50
You mentioned that Perl 6 uses emojis for some operators. Would you consider adding emoji operators in Ruby?
00:12:22
We can expand into Unicode operators, but we will have to consider their usability.
00:12:36
Ruby has a fixed set of operators. Did you ever consider allowing arbitrary operators?
00:12:51
In some languages, you can add arbitrary operators, but I believe that can make programs more cryptic.
00:13:00
Maintaining readability and consistency is critical to Ruby’s design philosophy.
00:13:20
For those interested in creating their own programming languages, several good books exist, but they generally focus on implementation.
00:13:39
There is not enough focus on the design aspect of programming languages.
00:13:49
I did write a book about language design, but it’s currently only available in Japanese and translated to Korean and Chinese.
00:14:10
We should definitely consider translating my book into English.
00:14:25
As a final bonus question, someone asked about the future potential of combining M Ruby and Ruby. Are they going to remain separate?
00:14:45
I believe they will always stay separate, targeting different domains.
00:15:07
Every implementation has different priorities and focuses.
00:15:21
Someone enquired about your dog. How's he?
00:15:45
Two months ago, my dog went missing for 48 hours but I’m happy to report that we found him!
00:15:57
Thank you, everyone.