About the talk
Matz and Evan discuss topics around his Keynote and other developments within the Ruby language and community.
All right. How everybody in Phoenix? I'm here with our beloved Max. How are you today, Matt's? Thank you. I was going to ask. How's how's the weather here? Usually, a, wherever we would be in. It would be cold normally if we were in the US during from movie called, but it's cold at your house to. Yeah. Other, despite this type of the last, you know, a few months with, with coronavirus and everything, everything, okay? Yeah. We have many events in the California, City Council or went online.
So that it's some in our communication between two users, That I don't that I forget happy. I hate flying over. If you've mentioned that before I, we always throw his right thing for you, but on the other hand, you do get to spend all this extra time at home as soon as the the Silver Lining, right? So, we're recording this before the conference. Obviously, I and thank you. You, you sent me in your Yorkie know, I got to watch it before we did this. So I could talk to
you about what was in the key as well as which is great. Yes, a couple of a couple of things from the keynote that we would, we could talk about so Ruby 3, sounds like it's going well. Just trust me basically good. I did notice that you one of the questions I had I wrote down towards the end. I think you were taught you were talking about how you still has work to do. The the release is still doing work, but I thought maybe you could answer a question. It seems like one of the things that
you and the core team have started doing is kind of evolving and adding features through more like experimental features that kind of get a few start-off experimental in a couple releases. They're stabilized rather than trying to do a big feature and have it be production ready at the beginning? Is that have you talked about that? Because if I could we could design the everything right at the beginning. Yeah. When did Ruby was very young, it's okay. It's
all decision was were up to me. Fundamental features are already promoted into some kind of features or maybe some kind of very delicate and complicated feature so that we are not sure we could design them right after the first woman. So we need to make some kind of experiment experiment users so that they can interact. And all that. When Ruby has very few smaller retail, sell them, but we have millions of users and so that I could hear the scream all over the world.
That's why we improved our process of the bike riding use. Each has like a, you know, 110 every year is one of them and that experimental future is. Very nice. Yeah, I mean, I think it's, it's very useful. One thing I've always seen and I think you've seen this before. It's, it's very difficult to get users to try beta software. They don't want to date. Just don't want to bother, they want to try the real thing and then they give you the results are. Sometimes you have to just give them the features and say,
okay, try them, let me know because they won't try them in beta form Ever. Yeah, it's it's always interesting. Previews experimental features. I think it's worked. Well, you know, I think, you know, I think that may be the first one. I can think of was when, you know, I think I feel like the Ruby V on the bike code functions were experimental, are they even still be experimental. So, I think that, you know, has has worked out. So I thought we would jump into a little discussion of outperformance. It seems like you know, you want to do
you and the team won, our address Ruby performance at a few different ways. I think that it's interesting to see language designer say, well leave, we better do better on the micro benchmarks because I'm glad that you said it because it is a way that users test things. But, you know, if we think Tyler is usually one Who cares about maker benchmarks. But it was it was actually was very nice, is very nice to see to. See you say that. Yeah, I kicked my micro braids box
for a long, long time because it's nothing to do with the real world application. People make decision on top of the black pit smart, even though, So that even though it's not really that will work for me, okay? Okay, people make decisions on something so we have to address that. Yeah yeah. Hopefully the PSP people that consider similar things because we see the PT 8 inches in Chicopee. Help Improvement performance of the Fibonacci gets faster all the time. Yeah people making those all those Fibonacci web services out there
that people Implement with their language is. So I thought it was very interesting to see the new with hooking into the Io Io scheduler is, how has has there been much discussion of how that works with the sea extensions? I know that fiber Extensions can be a little, a little strange sometimes. Yeah, basically. Ruby Ruby fibers can do well with The Bible is right now because the Samuel show me where I wrote to each fiber so that full of that kind of the hack to the most of the cases
city unit is well enough and as they work well with the succession. So then basically, you don't have to worry about that. That's that's great. That's good to hear. Cuz I think that was what was one thing that I've always. It's hard to make work, right? It's great to hear that. He hates all from the I-4 from Dallas. Anyway, that's awesome. Looking at kind of two of the I know that coochie is giving a talk about Raptor, so I will save that for if we have time we can talk about
that. I will move on to other things. I think that one of the things that people will probably have questions about looking at the watching, your teen up is how much the discussions of Ruby evolving? And I think, every year someone asks like are you going to add these functional features? Are you going to add these functional features to Ruby? And I think that those functional, those people will probably be Pleasantly surprised this year with some really interesting sort of functional features. I thought that just you know like little things like the the name parameters are the number of
underscore 1 underscore felt like a very almost like a very ski mask. Sort of feature almost in a way of looking at that kind of thing. Is there any have you have you been playing with that code? Did you? You're right some some example program, so I can get an idea of like, oh, this feels nice and that kind of thing, you know that I love. So that I investigated old major programming language language, Or whatever. So that way I didn't know the my goal is the
the the reduce the burden of the programming increase, the joy of programming cheap that I like to do, you know, ideas from ideas in other language. And the recently, the functional programming language. You know, the source of ideas. But I'm not going to make Ruby functional programming, but I think it's just what you've been able to pick and choose what was taken out was there a pipe operator or something that was tried? And then taken out at one point in time that it just didn't feel, right? Or you hear what what, what kind of went into
that 252, Dada, Ruby objects on its way, but some people expect the piper. It is in our language because people further and Alexa is very essential in Oak Camo. What is different? So that is the difference. I thought that difference was trivial that acceptable not 40. Many people is in the same time, okay? I don't know if they made it wrong in the background. If I estimated the community background wrong, maybe we have some time to discuss maybe some something in the future. The idea might be
reserved I think it's, that's great to hear. I always found it, very refreshing to see you and the core team add features and try them out, and then take them away. Sometimes if it didn't make sense, and I mean, it's hard to write a language as, you know, and so it's, I always thought it was good. That you would try those things. Even if sometimes you have to move them cuz it don't work. So one line pattern matching using the key word in that we abandon us Rockin.
That's interesting right. I was looking at your examples and it uses the multi-line one uses case But within instead of when I guess is that the difference. Yeah, I know what can you have a some winds and some Inns in the same cable I did, I did find. I did, you know, I think one of the things when I first started doing Ruby quite a quite a while ago. That was interesting. Was restructuring, you know, I think that, you know, the Splat operator, the ability to Splat in 2D structure things and it's, it's really interesting to see the pattern matching in being able to do the similar, sort of
Destruction. Did I even see that you have D structuring from within like a hash or with, from within an object? Using part of my thing you can do that. Yeah. So you could say like I want to take an object and I want the a element in the bi element from this thing and extract them into a local or something like that. Yeah, that's that's a lot of fun. I think have just that protocol. Is there a protocol that the object will be able to implement? So for instance, like does it need to do like with when you implement the triple equals in order to have it work?
What does an object have to do something special to be a part of pattern-matching, the objects needs to have the deconstruct method method to deconstruct metal tool box with the Harry Potter. object would work if you want to do a self, the one of the I've always loved about Ruby is the coercion, protocols were so at the very bottom layer of thing. So it was so easy to do. Some was too easy to make to make a mess sometimes going up going from that to stir
on something that's really not a string and watch everything kind of collapse on you you know, and all kinds of interesting things but it's great to hear that pattern matching is still inside there too. Let's talk about static types. So you've obviously been we talked about them, any Ruby comps, how many years do you think it's been that you've thought been thinking about adding static types in some form for Ruby now? A while. 10 years. Maybe I saw something like that.
No, it's about time. You say early 90s about how does the RBS stuff at all yet? And I'm wondering cuz I was looking at the examples it was mostly about concrete pipes. It was mostly like God this thing returns a string or a number is the doesn't have support for interface types of the house support to say, hey this, this could return something that implements To stir, you know, don't have to be a string. Show me. The, you know, the current type of weather is not smart enough to extract the interface. No doubt that
you can write down the interface in the perimeter is Type in the signature phrase. Piping was something like that because if you don't have that that would be very bad guy. Introduced some kind of these concrete tile, static typing into the language, the whole Community with Hinders the language atmosphere, a lot, so that I don't want that if you want to stay in the dynamic Temple for you, if you can do that, and I encourage you to do that but if we want to check some and all the busy
typing, it all. Love all. So that you can he can't do that with the type for often. It feels like the idea is to check. Mine is sitting over here on the bed, South it seems like it makes sense to to use the type signatures in, like a test or a c. I kind of place. Is that the main idea is that you would you would say I'm going to run my tests with the with the type to the service turned on, or I'm going to run run, maybe I'll develop mode. Yeah, basically,
the type refused to pay the technique needs the abstract interpretation, which is the, which requires that, you know, the running program, you know, all top to bottom. So that you need to talk. I'm going to test program or application to to excuse the abstract. Interpretation workflow should be that you write your programs and a you write you a test called you run the pipe trucks over your chest. Cold runs through that your library was an so something like that. You can't find the contradiction to add existing
signature. Having. Go wrong, so you can run, you can be, you will be worn by the type of Weiler high-profile. I will generate the signature for your application and if you are not satisfied with the signature generator. You know, you have their face or you may be at the genotype in your library. So you can update your the signature generator precise static typing from the Next Generation, the files with their gems and then we be able to tie in with it feels like you could probably at the beginning and I'm thinking about day one. Genotype rock can be just
pointed out of jamming, it can generate just the generic output for the for a particular gem just to get people going. I presume right? Yeah yeah. Okay. There are a few other sort of tools in the same space that have come out in the last couple of years did you is there was there a way in which you decided, which, which of these tools you wanted to take on? Or is it just kind of the Navies of the discussion of, you know, I know there's there's there's one from from stripe, I think. And there's a couple of other
other other ones, maybe just talk a little bit about that. I think in the future. So you know, the Deep Act Wikipedia parked, The sober is most performance and your support, we have little bit. Difference in the policy because when it doesn't seem so bad. So that people are some kind of the notation in the cold, not in the, not in the DSL, type vehicle to the note though. I think they are the project to my grades. So Betty's cell two. Three signature is on, on the way. So I don't worry about that. I
didn't so be out of patient in the. Do you know that uses cold is? I don't like the approach but in all But right now I don't have any other in a walk around so that I know that you talk a lot about in this goes into the type, the type tools which is it's really a Tooling in the ecosystem for the static typing and discussions about that. You want the you want more of the more tools and it it sounded like you wanted the court. The court team was going to be working on these sorts of tools. I think
you mentioned like type checking formatting and language server and tuning tools and stuff like that. Do you want do you want there to be sort of official versions like Ruby core versions of the all of those tools eventually? I probably I don't I'm not going to to make it official version of dr. Tooling, but I in Courage the other existing tools to adopt our policy and that way I can curse them. I even try to find them through that will be Association the
phone so that they can use more information from the signatures or maybe we can have the better no help or two to the users in the theaters. So it sounds like what you what you kind of want is just correct me if I'm wrong some more. I figure out a way to collaborate more with all the people who want to build those tools so that your building them in ways that they compliment each other. Yeah, that's what we try to have a minute or two left here. I think I would be some people would be mad if I didn't ask you this question, but I don't have to because your keto already does it. The
question was going to be when is Ruby getting macros. And now, I know the answer to that question, which is, as soon as your crazy idea is in from that, I think we are excited to see That made it in there. I understand it's a very crazy idea. It was, it was exciting. I think you mentioned that you wanted the in your crazy idea thought of it was, it would require some new syntax in order to do, some sort of array are some AST, expansions and contractions and stuff like that. That's the exact correct. That do crazy ideas
pop up in my mind last minute. So I prepare the slides. This little detail know why they're so yeah, thank you in the past, like crazy ideas, the pin, or maybe or yes. Papa by crazy ideas, a drop in a vagabond. And so don't expect too much. I think, the last question I want to ask is I know that the the Samuel brought some of the AC stuff, is there a, you know, and it sounds like you want to get more people, sort of collaborating, is the is the right way to get involved with the Ruby Court. I'm still the, the sort of the ways that people can get
involved to start helping you work on Ruby other. The Ruby mine is the official starting point so that you have ideas to a bus to the red line so that we pick the ideas and I we can probably take me to some other working group, or something like that. For example, that the Samuel and and, and some other people hate the cold. I think I'll use a working group Which is not a problem at all. In the past, we have several crazy ideas. Some of them, we cannot be implemented, the Ruby, but as the idea itself is pretty interesting. Then, so do
that day for today, I don't like Grace or something. Yeah, I waited for you but maybe someone will submit after seeing us today. Thank you for taking the time and hopefully I will get to see you in person next year. And it was it was great to see you and talk to you and I will talk to you later. Yes, thank you. Thea.
Buy this talk
Buy this video
With ConferenceCast.tv, you get access to our library of the world's best conference talks.