 Great good everything going. Oh good tired. I'm a little tired. I won't lie Good conference so far. Yes. Yeah, I missed several ones. So yeah, I'm sorry. It's fine. No, not at all So we'll jump right in at the questions So people have some questions about your presentation from the first day. Yeah one of the questions was when you talk about the Doing the type inference people were interested if you could talk a little bit more about that and maybe talk about like how how do dynamic methods and metaprogramming fit in with that and Sort of like when when would the type checking happen or would there would the program ever type check itself? Would it just be a database? the database stuff and The type checking stuff is done and will be done in the compile time So that we cannot check that things that happens if that dynamically like evolve Define method things. So in that case, we just ignore them Okay, the at the beginning So we I am going to create some kind of the prototype of the independent type checker like a lean things so the You can consider these kind of the type errors as a warning to the your program so that you that might be post-positive just because of the method missing stuff or the evil stuff, but you know At least the type checker can warn you that we cannot Detect that kind of error in compile time information. So I mean compile time. Yeah It's such a vague term with Ruby, right? Because it's not like see where we know that like there's this time where we're compiling and there's this time We're running compile time this sort of this strange time While we're running the code that sets up the other code. So like do you do you think that? Will the stuff that runs a compile time be able to see through require statements Ah Yes, so that would be able to see into gems for instance that kind of thing. Yeah, but the Reference is pretty limited, but then what the compiled Long-time as I mean the compile time type checker Sees require that look for the the library so library source code. So Then include read them These source code into this software. Okay. Do you think of the type checker as part of the normal Loader, or is it a separate thing that's looking at the code? Separate thing at the beginning. Okay. Okay. Cool Again, if this is too vague We you can ask a question We've got people. Oh, we have people we have questions already. Is it is it related to this topic or is another topic entirely? It's on gills. That's fine All right, let's go ahead and ask your question and then we'll get we'll let Matt's turn you know turn you down Can that can they all be this close? This is yeah easy. Yeah, I Didn't want to make you run I could ask the similar question with regards to type checking so so with your type checking methodology I believe you had said during your talk that you were looking at This but you could you could throw it out just like you did from last year, right? What other methodologies have you considered That are like number two or say number three on the list or are there no number two or number three at this point You mean for type checking for type checking What crazy idea do you have when you go walk the dog? I Have all my crazy ideas at in the shower. Yeah, so The for type checking I have no that that kind of crazy idea though, but uh, you know the you know the usual Compatible information is very limited at least for Ruby programs because we have nothing, right? But so we can infer something by say Assignments or from the literals, you know, you can't know string literal is a literal But the other otherwise so we have no no information no argument types. No return variable types. So the We we don't have enough information so the so to Compliment that so we add some kind of the database things like a run gathering runtime information or maybe so Putting out the the method set information out of the running program. So then check the Take these kind of the inconsistency out of the those information Did you when you were thinking and working about this? Did you look at the other? Attempts that people have made for it like I I know that a Conversation I've had over the last couple days someone brought up was do you remember the old diamond back? Yeah, did you I mean do you feel like those I remember in your presentation? You said that you felt like they forced people to type annotations too much And is that your main takeaway from a lot of those other attempts is that they're always forcing people to try and type I Did a little survey about the previously asked research or something and the two things I can tell is the Gathering compile time information out of the non typed no total type annotation software is Not really good enough. So the the previous attempt including diamond bags and say I like Type type to scheme. I don't remember that. Yeah, was all of the all failed and gave up Yeah, given up. I mean, but so we so the one thing I want for sure So we need something additional in addition like a naked You know the these kind of the runtime type information gathering by database things is that my attempt to add info to To the the the programming structure information So, how would you think we can we'll change the topic here in a second? How do you think people would interact with it? Like, you know, would I would it when I run code would it complain at me or would I have to decide? Oh, you know what I'll do my type checking before I check it in to get like how do you think? How would you want people to interact with the type checking? the Fundamentary so the I want the compiler or type checker to read our intention from the code So that you don't have to make some kind of interaction but at the same time for at least for the short term so we can try to read our documents like a yard things then the weekend the information back and forth to With yard documentation like a we Often we write the yard documentation with the return value and that the argument value So we can take information from that in the short term And then maybe in the future we can in reverse we can put that kind of those information into the yard documentation Okay We have questions We were swapping yes, okay, this question is on mruby is now a good time to change the topic That's fine. Yeah, absolutely. Okay So Matt's I know that mruby is not a fork. I learned it just today of one point nine It is a brand new code base correct off of one point nine Mruby is a brand new code base. He wasn't for from one night No, no, I took the yak in the description from one night source code base But I modified a lot. So I don't consider mruby to be the folk of the one night Okay, so what so my question is what would it take to get some of these improvements performance and GC improvements? From the current Ruby into mruby or is that not even on the plan? the biggest improvement on top of the one night After the band nine was the the making it Generational and the making it incremental and the mruby garbage collector is the is Generational and incremental from day one. So we don't have to put in that kind of improvement on mruby GC But what about some other improvements like making hash faster in general? How do I get the code that is in Ruby into mruby? Yeah, it's it's quite possible but you know we have and for mruby we have some What somewhat different criteria about including that for example, so mruby can should reduce the memory consumption so that the some improvement that we consume the more memory cannot be Integrated into mruby, but yeah Addressing hash is the one one idea that that should be getting to the mruby so I know that See Ruby and mruby are both your children. So you can't pick a favorite Yeah, but do you do you ever feel like well as you work on mruby that? Some of the things that some of the I won't call them mistakes Some of the decisions that were made in CRuby that you made different decisions in mruby that you like those decisions better Do you find yourself? Feeling that way Yeah, I have two favorite things in mruby that better than CRuby, which is the one is the mruby drops some the legacy cryptics the dollar variables like a comma Simple yeah, and then the second thing since the mruby has the embeddable API Which is slightly better to embed some and something I embedded the Ruby version machine into your application So one thing we have people that are raising like raise hands in the middle of the seats like the rows as well Do we want we're lining up then we're lining up. Okay, so are we are we lining I think we're lining up Apparently, this is the easiest mic runner job ever. Thank you I do what I can Now Mike now Mike has the mic Hello gentlemen. Hello Matt's I was wondering if you could I think you gave Are you announced the ruby three by three last year? Could you give us a update on that the progress that's been made and positives and negatives that have come out in the last year? last year we proved ourselves so for example the The forthcoming ruby to fall in next Christmas We will have the faster the hash and a faster rational numbers, and then we have made several Performance improvement including those Improvement Ruby one two point four will be Slightly faster than Ruby two three so that we we will add up the those kind of improvement Until we will get the three times faster the three comparing to read to all So so I mean that's good. So you feel like the each the releases are The status reports for ruby three right so as we get to four we see it's you know However many times faster on the whatever relevant benchmark. We're using op care it or whatever. We're using right So yeah, okay, and we are now preparing to the some kind of the web application benchmark as As we are along with the opt carrot, which is kind of different from the normal usage It's very interesting. Yeah, it's very interesting We can only run the end body simulation so many times before we realize it's no one really does that people do play Nintendo though So that's better Yes, we can go to another question You are very intent in your talk and not breaking backwards compatibility, which I think is great But I wanted to ask you if you could if there was no drawback to it What are your top three ruby features that you would get rid of? Top three you get this question every year. You should you should just be Yeah, the Paul Paul like the variable the inherited from Pearl and then threads And what else Maybe I I should make evolve a keyword. Oh, that's good one. Yeah Yeah, the old dollar one dollar two Yeah, and I just a broke to take a much much data Instead of the much the result Yeah So some of my friends have suggested there's maybe a one-word answer to this question and if that's true, that's fine I just wanted to know for the new concurrency model Why didn't you use actors? You know We we decided to make no breaking Compasability breaking Breakage so that we have to keep a threat model inside of something we are going to introduce the actor the name actor is You know not fit in that kind of model That's only reason it's very loaded at this point to the term actor Well, I'm wondering what the one word answer is that because a Compatibility, okay, okay, I would have liked because Personally Yes, hey, so Contributing to Ruby as a new contributor is a little tricky to wrap your mind around sometimes I've heard a lot of people talk about that being there's a lot of friction in that process Is the core team thinking about ways to make that easier for new contributors or? Think about other ways to try and bring more people into contributing to Ruby core Since Ruby it has long history of development and we have a lot of constraints but you know we have improved the things a lot better for example we have the We have GitHub repository already, and then we accept the progress to there. So the I'm not sure what What else we can improve that but if you have idea, so just submit to the Ruby bugs The issue trucker I think I'll follow up on that real fast. Are there places that you know, I think People wonder Where like what parts of Ruby if they want to contribute that they could contribute to I got like does cgi.rb You need a new maintainer or whatever you know like of that good example. Do you have any of those off hand? I mean we could I'm not I'm not putting you on the spot here at all obviously, but You know that might be a good thing to have that as a list somewhere I know that I know that but I know that that Ruby core has been very good about finding and just accepting new Maintainers for old for peak things in the standard library for instance Any thoughts there You know the from time to time we have the sometimes the developer meeting in Mostly in Tokyo and then we listed up the things we do and things we have to do and then upon checking the we we put the our Agenda and what logs on top of our wiki so the By checking those wiki wiki pages so that you can find the things we Can't cooperate. I know that at one point there was a big push I mean that was rails was there a big push it there was a big push at one point to like really try and improve a lot of the Documentation we feel like that was a successful push. Yeah, sure. Okay. Yeah Yeah, if you have there are some kind of the undocumented things so you you can explain the things So just submit the pull request to the source code That's always a good in easy place to start to yeah, especially I mean especially now accepting pull requests that yeah helps people get involved I think we yeah, we we don't directly Accept the pull request, but we can easily convert the pull request into the yeah the subversion Subversion merge, you know, yeah, I Think many folks here might be surprised to understand that Ruby actually technically supports tail call Optimization, but I don't think you could have made it harder to use Any chance you're gonna make that more accessible what I think It's up to him Yeah, ask him maybe I mean, I think we've we've talked about this before too Yeah, it's fine So actually we ignore the all requests about the tail call optimization, but we already implemented but it's default disabled so It depends on the request the voice of the request so I So only only a few voices Yeah, very few people are the required okay raise only a few we have some People raise their hands. I guess I was I will follow up with a very technical question Then just just to quell the the minor uprising that's going on right now Yeah, do you want do you want self tail recursion or mutual tail recursion? It's not a recursion, but there are only a tail call so it's not depends on So that you tell it so we were so be mutual so do you like stack traces? Yeah, yeah, that is a problem Technical program that's because that's the main reason that they're not that they don't get turned on Yeah, sometimes So stack trace is very difficult important for debugging. So we need to keep so all of all Suck traces. So say another idea is introduce a new syntax to two-fourth tail call so like if we use a go-to and and function call a call function so it's so For example, it's it can be Tail call so it is so it is intentional but there are of course Go-to is not acceptable Maybe it is a discussion Yes, I'll go from radically technical to radically non-technical I'm wondering if you still enjoy maintaining Ruby and what do you do to keep your interest and Yeah, I'm still enjoying the meeting Ruby. I know for at least for we'll see Ruby I Don't I don't code for a long time Koichi and other core mentioners do code, but you know the but as a language designer does the making Design and the making decisions is quite quite enjoying for me And then yeah, and then I have some other project to work on as a programmer Howdy, I Was wondering what kind of documentation you might have had back when you were a user of one the end future you Or yeah, I was afraid of that response or any Documentation once you had that email list where people started to get involved any documentation at all Even one code comment Well, you've I were all the git commits WIP. I know there was no git, but it was I'll ask us. I'll ask a similar a follow between questions You I you have I remember this you said that those first few posts you you were working on Ruby And you put it on like a BBS or our FTP or something like that and then you told people hey you could download it Did you was it just like download it and was there even a make file It has make file was it but it was just a make file with a bunch of C with a bunch of C Yeah, and they was just like have fun Yes, okay I figured Refresh my memory was it online before after the name was it online before was it so Matt's lisp when it was on no It was online as a Ruby. Oh, okay. I named the Ruby way before I put it on the okay. Yeah, Internet So no no documentation Okay, so Akira Matsuda in Ruby come Brazil talked a little bit about that some of the standard library is Requiring maintainers and that you are making some effort to extract the standard library from core Ruby into their own Repositories yeah in order to make it easier What's the update on that and how can we stay up to date on what are those libraries? Yeah Back to one eight era. So we didn't have the proper Ruby gem systems ecosystem So the I made some kind of decision. We put everything we need into one distribution So it's so once you install the Ruby So you can do the xmn processing the web a web application Wavesing, but I still love rex ml. I'll just put that out there But go ahead. Yeah, and then we gather those kind of those library out of the internet But that's as time passed. So the some Mentors just disappeared some mentors just graduated from school and And No longer work for Ruby and no time for work work for the Maintenance turn libraries. So for those kind of reasons so that we have some some maintained The library in the standard standard distribution. So the to resolve and then yeah, we Yeah, so the for those kind of reasons so we gradually moved that kind of standard library out of standard distribution to the gems for example, we recently put Tk out of out of standard distribution. I don't know. I mean We made the Tk as a bundle gem. So we can you can up update the Tk gem Independent from the Ruby versions. So the then we gradually moved those gems out of the standard distribution gradually and then so the we I think we have the list of maintenance I in the week pages and then So the week you can find the un-maintained the standard library there And yeah, I'm happy you raise your hand I Have a question for you as a language designer So Ruby 2 has been remarkably easy to upgrade to at least for my company and I'm just wondering if you know Basically, I just see improvements every time we upgrade Do you have any big regrets about Ruby 2 that you haven't been able to address and that you want to address a Ruby 3 that We haven't mentioned yet other than threads I don't know but I Said I try to keep compatibility For no reason and I mean, I mean if there's reason so we Make some incompatibility So What But those kind of incompatibility should be minimal and not you know It should not Horm many people like up maybe two or three people Well, like I give you like I I have this this question as well like the in 2 4 the integer unification has some backwards incompatibility because Like before you could have a method on fix num that wasn't on big num If you if you added it yourself and in the in 2 4 they'll it will be in both places because Fix num and big num are just they're all they will all point to the same class now, right? So you're okay breaking some likes fixing some things and breaking some incompatibility Do you feel do you kind of look at the feature and kind of say like well, you know No one should have been depending on this. I know that we this is many years now, but I know that for instance Redo remember we we we decided that the redo keyword. This is like five years ago We decided the redo keyword was too problematic and it was okay to break back was compatibility, right? So you kind of have to look you want to look at all of those little ones and decide that's small enough or Dangerous enough to break, right? Yeah, and then yeah, I don't think we can remove redo keyword if you have In the block. Yeah, I don't think it works in Koichi. Does it work in no in 2. Oh, it doesn't yeah I didn't think so so so I mean it was a good I guess it was removed in 2. Oh anyway, so never mind Yeah, that's kind of yeah, so the there's no, you know There's no rule that can be breakable, but the compatibility is one of them. So we break compatibility sometimes but a very few times for the sake of compatibility during the the discussion about the possibly adding a code of conduct to Ruby you said that You never wanted anyone to be permanently banned from the Ruby community. Can you just explain why you feel that way? Wait that that long long discussion was kind of confusing so that we you know the Ruby community is a big thing So one can consider yourself as a member of the Ruby community without any Initiation or anything Yeah, maybe maybe she fears on anything so so how can we bound those kind of things? No, no So for that reason so I cannot accept the banning from anyone from the community maybe so there is some kind of the you know the The community or the group of people with that kind of boundary for example We come has the attendee or non attendee we can have this some kind of strict boundary So we can balance anybody who behave very bad from the conference That's okay, but we cannot ban anyone from the You know the big membership So for that reason I refuse that the banning what about what about from that you would consider it maybe from the C Ruby The C Ruby core team right because that's a different that's a yeah, that's not that's a separate very small if yeah if the the discussion was to set up the called a conduct among the C Ruby Development team or something like that it Can it could be possible? But that this discussion was the setting up the code of conduct for the whole Ruby community so that we cannot Set up that conduct the code Yeah, and then we do be there in the committee as self is still vague though Yeah, I mean you'd have to you'd have to start there You'd have to start and say like where do what is the the boundaries? Yeah, that we that we're talking about here Yeah, so Hey, this is a little bit a futuristic question But do you have any big long-term big vision for Ruby like maybe five ten years from now? And how do you think it's gonna transform over that long? Wait, I'm before you answer that question. I will ask I want him to answer your question. I will I it's hard I know this is a hard question. So what I will say instead is Five years ago. So 2011 RubyConf Do you feel like that the things you thought about then that you've actually made good progress to where we are now? Right. Let's start with that question. So think back five years Where were we five years ago and where we are now do we feel like you've we've accomplished a lot? Five years ago 2011 we were in we were in New Orleans Yeah celebrating the 10th anniversary of the RubyConf, right and then we have yeah somewhat 500-ish attendees And then we haven't yet 192 or 193 or something Yeah, the Ruby 2.0 is the biggest of comprehensive in the last five years Ruby 2 We implemented several new things like the module prepend and the refinement and and in the From last say five years Ruby runs much much faster So say at least the 50% faster for most of the cases Yeah Mostly due to the improvement on the garbage quarter and some somewhat of the Internal structure the improvement on the internal structure So the Ruby became faster and then Ruby became more powerful and the Ruby community became become became bigger and the Ruby Position in the technical industry IT industry is more more established, so What okay, so now thinking forward five years do you feel like We are on a good trajectory to continue those things keep doing those things do you? you know put your Future see glasses on Yeah, so the in five years We will have the Ruby 3 in some some form and then we will have the even faster Ruby and then the in by Yeah, then the future will be utilized the multicore with in that time we have Some 100 128 cores on the PC Maybe yeah, maybe and then in addition so the now The Ruby should be Ruby Still I mean, you know the Technology comes at the goals. So the Ruby is no longer Shiny language in at the present time even so the my point is the Ruby is keep improving and keep Becoming more and more powerful so that we can survive in five ten years So I'm not through be able of the phrase that the slogan that from Intel the only Paranoids can survive so so we I try to be paranoid to survive So the surviving last two and twenty years is a kind of kind of big challenge, you know Surviving next ten coming this ten years will be even harder But I try to survive after those kind of challenges Yeah Hi I've I've always been confused about the use of like private and protected methods I think you've mentioned in the past like Having some regrets about the naming either a private and protected and is there any Plans for fixing that in some ways in the future. I Yeah, I confess that I regret other in this load on things especially protected and Yeah, but I I Don't think that we can that fix them without the breaking compatibility. So that I I don't think I can remove them for the sake of beauty At the cost of the pain of the in the community Let's do a quick survey. Who uses protected methods? There's two of you three we'll figure out an option Yeah, something to consider who use protected the correctly Yeah Do you ever use protected methods? No, yeah Koichi, do you ever use protected methods? No, Koichi doesn't use me there. So I bet no who doesn't use them Yeah, probably we have to bring shugo here He probably still uses them he probably the only one Probably he's not using All right, yeah, I've heard he said it he regret. Oh, okay. Well, so I'm gonna consider for Ruby 3 Yes So often in Ruby comp we see a lot of other languages being displayed on slides and talking about other languages I'm curious if there are any other languages that you're playing with or Getting inspiration from I'm a language geek. I love to learn study about the programming language in general. So I recently I studied I checked Elixir and Closure the scholar What else a little bit of a hot skill, which is kind of difficult for me and Some streaming programming language like a pony or I don't remember that I Just read through the Sousa, which is a Google streaming language and Whether we don't have implementation Out of to Google. Yeah, but those kind of language. I think we're got one one last question here Pearl was one of your languages that inspired you some of the features in Ruby originally and Pearl 6 came out just last year Besides taking 10 years to come out. Is there anything you can learn from Pearl 6? Actually, I'm pretty satisfied that I see influence from Ruby in Pro 6 And then the beside that I I'm pretty impressed by the their rules Which is kind of the their internal DSL to Define some new syntax or grammar into the language or something and it is the different form of the regular expression So I'm quite impressive. It was quite impressive, but I'm not sure we can add it to that to Ruby All right. Well, we have 30 seconds left. So we're right on time So I want to thank Matt's and I want to thank all of you for all of your questions and I want to thank you for a really great RubyConf and That's RailsConf COPs open right now. So Time's a ticking Thanks everybody for coming. We've got social available right outside those doors Go out there. Have a good time. Talk with your fellow Rubyists, and we'll see you next time. Thanks