シンガポーと日本の他の国で英語のキーノートは常に私に慣れています日本人はわかりませんか?それは簡単な言語です特に中国人のキャラクターは感じます今日のキーノートは過去と未来のロビープログラミングのキーノートのタイトルはスーパードライブロビーです英国で見た時にスーパードライブロビーのスーパードライブロビーを見てみて日本語は極度感想しなさいそれが極度感想しなさいそれが何か日本語はとても意味ない今日スーパードライブロビーのとても意味ないまず歴史の話を最初年齢の時少し前に写真を撮った時このようなコンピュータを始めましたこのコンピュータは79年代のマーケットで4つのコンピュータ400歳の基本のプログラミングの基本のインタプリートをとっています每個1つのタイトルをAとBと26つのタイトルを全部とてもとてもプログラミングのインタプリートをとてもスーパードライブの時そのタイトルを見たことが思っていませんそれを思っていましたどう思いますかそして私は最初に小さな環境を採用しています私はそのような状況を覚えていません私はそのような状況で生きています水は気になりません水の中に生きています普通に水は気になりません水の中に生きています後で私は他のプレギュメントの文化を覚えています私はプレギュメントの文化の文化を覚えています私はプレギュメントの文化を覚えていますその前の世界では  Mitglysの世界ではこのuti-dramasはこのような事 Like Pascal in that time was pretty popularand Sea, Lisp and Smalltalkその時に羅刀の機会を拍手にされましたどこかが日本のどこかで彼らの手にある皆が彼らの機会で彼らが彼らの手にある良い記憶を彼らの手にある良い記憶を彼らがこの記憶をパスカアを読むことができます。私はパスカアを読むことを勉強しました。しかし、当時の年齢でパスカアをコンパイラーに入れていません。そのため、高校の生徒の生徒は2000円のパスカアをコンパイラーに入れています。そのため、高校の生徒は高校の生徒に入れています。そのため、私はパスカアをコンパイラーに入れていません。しかし、私はパスカアをコンパイラーに入れています。私たちもパスカアをコンパイラーに入れてはいていて、コンパイラーには Gentlemenと sponge och1がついています。そして そのため私もパスカアおすすめです。私たちのみがパスカア を投入して placełaをなすことができます。それでは、と思いavioriny1と HabJustをみ lcdima Denise を索�背してくださいファンクションはリアルな数字を持っていますどこに行けますか?それがリクエージョンの名前ですリクエージョンはファンクションが自分の名前です若い高校生の人たちにそれが何か迷惑なものですそれがユーザーデファインデートストラクチュースですたくさんのランケージの特徴がそれが最初のリストリクションの基本なものを使っていましたそのランケージの特徴が天のような感じがするその素晴らしいランケージの特徴がその素晴らしいランケージの特徴がその世界のプロゲミングの特徴がそれを知らないことがありませんその時にはそれがそのプロゲミングの特徴が世界中の多くのプロゲミングのプロゲミングの世界中のプロゲミングのそれが全てのインテンションについて全てのプロゲミングの特徴がそのプロゲミングのインテンションを作り、人間について作り、人間についてそのコンプルを私についてなぜわけないか他の人たちがプレギュメントを作ることができますこの理由ではないです私は自分のプレギュメントを作ることができますそのため、私は高校で始めましたしかし、当時には無いオープンソース、無いインターネットがあります私は書き方を学ぶことができますこの小さなコンピュータを使うことは100万例目になります私はこのコンピュータを使うことはできません私はアンクをさせていることができます私はプレギュメントを作ることはできません私は小さいコンピューターを作ることができますペーパーの文字を書くことができます私はプラグミングの文字を書くことができますコンパイラー、インタープリプト、バスタミスの文字を書くことができます私はプラグミングの文字を書くことができます私は地球研究所の學園に入っていた実際は地球研究所の研究所の研究所についてそれを学んだことができますリス、小学校、パスカー、リス、ファイナスのプラグミングの文字を書くことができますファイナスのプラグミングの文字を書くことはできますPython back then, in the early 90s,Python was very infamous programming language.Then I studied a lot.Then 10 years later, I grew up.I haven't changed that much.Anyway, I was in age 27 in 1992.So the year later,I was working as a professional programmer in the software company in Japan.But in Japan, in early 90s, the bubble economy was crushed.So my project was canceled.So the team was scattered among the team.So then I left behind to maintain the product we already created.But I prohibited to develop the further product.So I was in the maintenance mode.So every once in a while, I got a phone call.Your product doesn't work well on my computer.So I replied, okay, reboot your computer.Thank you.So I was boring.Then it was left behind.I was left behind.And then I had my managers.But my manager also had the money-earning project.So his eye on that project.I wasn't supervised at all.So I have time.I haven't controlled by anyone.So I have time.I have a computer on my desktop.So I thought it's about the time to do something.So I just remembered my high school time dream, creating programming language.So that was my primary motivation.Unlike other programming languages,I did not have any particular problem to solve by new programming language.I just wanted to create my own programming language.I just wanted to create my own programming language to amusement and entertain me.And then that programming language,which enhanced my programming joy.So I love to program.So I love to program.Ever since I started programming in early 80s on this tiny computer.But the programming has fun aspect and the boring or traveling aspect.So I wanted to focus on the fun part of the programming.So I worked here designing the idea of programming language was pretty fun.And implementing it is pretty enjoyable.And then in 1995,I put it in the open source.Actually we didn't have the term open source.We called them the free software back then.So in that time,I couldn't explain what makes joy in 1995.So I had a big idea about something that makes programming enjoyableand keeping away from the traveling part of the programming.But actually I didn't fully understand the nature of programming joy.But I know it's kind of philosophical term.But we had rescue.Actually we met virtually on the internet.Those two guys,they are program programmers.The guy on the left,this is Andy Hand.And the guy on the right is Dave Thomas.Those two guys who wrote the book named program programmersfind Ruby on the internet.And then as a nature of the programmers,they tend to love to study new programming language.Appears once in a while.So and then Dave Thomas found Rubyand introduced it to Andy Hand.And then they played it a lot.And then most of us have experience about finding new programming language,play a little.But then just like this,it does fine.And then a few days later,so they threw away the programming language and go to the next one.But for Ruby,I don't know the reason.But Dave Thomas loved it very much.And then Andy Hand agreed.And they started wrote a book on the language they found on the internet.So in year 2000,right after the Y2K problem,so they published the book named the programming Ruby or pickaxe bookjust because we have pickaxe on the front page.And then I got the mails from Dave Thomasabout questioning about the Ruby's feature,design a reason or something like that.I got the hundreds of mails and I have to reply that.Yeah,that's terrific.And then he finished the book in,I don't know,six months in that tick book.And then it was quite amazing job.And then this Dave Thomas,yeah,sides of the grass is.Yeah,reflects the size of the body.Anyway,he had two,he introduced two new concept to the programming,which is the duck typing and the dry.Duck typing is like this.No,duck typing is like this.No matter what inside,the something that works like a duck,the quarks like a duck,we consider it as a duck.So it's a duck.So the duck typing is the fundamental concept of the object-oriented programming,especially in the dynamic typing object-oriented programming.Okay,we do not classify object.We just care,we do not classify.Usually,we tends to classify everything.So in the explanation of the object-oriented programming,we often use the examples like,Okay,there's animals,the part of the animal inherited by mammals.The mammal inherited by humans or something like that.So the attribute was inherited like this and that.But it is the concept of inheritance,but it's not that important in the dynamic type object-oriented programming.So we do not check types.So we just ask,we just call methods on it.So if the object do not respond to the method,it just goes error.So we don't care about inheritance,we don't care about the internal structure of the object.We just care about how it behaves,what method do they have.So we can ignore the inside detail and then focus on the outside interface of the object.So that is the fundamental concept of the object-oriented programming.So that we can ask computers dispatch.So without this concept or the concept of the dynamic dispatch,we have to write downif the method type of the object is this type or we can do this,this,this,this,this and this.The otherwise,if the object type is that,we have to do this and this on that class of object.So we can ask computers to do that TD,the traveling paperwork or bookkeeping.So that we don't have to work just because we are lazy or as a programmer,we must be lazy.We should not work too hard because we are human.We are masters of computers,right?We are not slaves of computers.We are masters of computers.So this is called the 真面目,which is the term to describe the person who is very diligent and serious.And then often,so we Japanese call ourselves 真面目.And then we proud,we sometimes proud of ourselves being 真面目.And then we are keen and diligent,hardworking.We consider those aspects,those attributes as a good part of the Japanese people.But sometimes,the being 真面目 is not good.So the opposite of 真面目 is 不真面目.Not Fu means not,as in Chinese,it is translated by the lack of sincerity,according to Google translation.So which do you prefer,the being 真面目 or being 不真面目?As a programmer,I take lazy way.I'd like to be a 不真面目.I'd like to be lazy.And then it is the spirit of duck typing.You know,I do not want to work hard.So I want to computer work hard.And then this is the simple explanation of duck typing.Okay,the second concept introduced by Dave Thomas is dry.Dry stands for the don't repeat yourself.And it's often called as one of the best attributes of the rail's framework,rubbing rail's framework.So it is the concept to avoid duplicates or concept of redundancy and avoid copy and paste.In the past,at least in Japan,the enterprise software development is measured by the lines of code they produced.So they often copied and pasted the code to enhance their accomplishment.You know,this is a step,the clicking, the selecting, copying, pasting.Okay,your accomplice doubled.But you know,we do not do that no longer.I hope.But because it's bad,the copying and pasting is pretty bad.You spread the bugs all over.You know,copying, pasting,not only copied the code,but it copies bugs as well.So the software follows the copying and pasting.So the full of the bugs copied.That's in the kind of nightmare.Besides that,we are lazy,so we are too lazy to maintain duplicates.So in summary,duck typing and dryis supported by the spread of laziness.So maybe,I believe Dave Thomas is a lazy guy.So am I.So we have been working so hard.In the past 20 years,we are working as a Ruby core team.The we are working so hard for the last 20 years to reduce our burden in the programmingand to become more lazy.So we work so hard to be able to be lazy.And then 20 years later,I was in age 47.I wrote a book about the future of code.Unfortunately,it's not translated.But you know,time flies.20 years has passed.The situation has changed.And then in 1993,when I started Ruby,it was,the world is much more simpler.The Ruby is used for scripting.And then it tends to be the Ruby program that's very small.Maybe 10 lines,100 lines or.And then the computers back then has only one CPU per computers.And then it's the,in that age,we aremoving from procedural programming toward gradually into the object-oriented programming.So it's quite simpler.But in year 2015,right now,we have theweb applications.So we have huge programs.We have the web applications with thousands of lines of code,tens of thousands of code.And the computers has the multi-CPU in one computer.And then we have the high-traffic web services.And then the programming trends willmoving gradually from object-oriented programming toward functional programming.So it,I,you know,as an old guy,so I missed those simple days,scriptings,small programs,single CPUprocedures.And then,you know,Ruby was created in that age.So the early Ruby was optimized to thoseenvironment.So I regret,I inherited too much from Pearl.Anyway,so according to the theory ofevolution,we have to adapt to the surrounding environment,or we will be extinct.So,you know,wehave a lot of other programming languages,like a javascript,typescript,closures,and thescholar,or whatever.So we have tons of new programming languages arising.And then,you know,those guysvery excited about the new new new languages,and then saying,okay,Ruby is out of date,orsomething like that.Okay,that's okay.But we have to,we,as a community,we have to move on toavoid extinction,or to survive.So for,we have adapting new concept,coming around.Webapplications,we are using object-oriented programming,or meta-programming,or DSA,concept ofDSL domain specific language to adapt the web applications.So back in 90s,when I,when Icreated Ruby,so many people complained about Ruby being object-oriented programming language.Sothey said,okay,we don't need any objects in a scripting language,or they said,okay,Ruby is too good to be scripting language.So we don't need object systems in scripting language.So we,you have to go to the other regions,other than scripting,or something like that.Butthe few years later,the web came in.The web application is very easily become complex.Andthe object works very good at web programming.So,you know,so the pro become object-oriented.ThePython has object-oriented feature that introduces later on.And the Ruby,everyone started praising Ruby being object-oriented scripting language.Or meta-programming.So the meta-programming is the very long history inside the Ruby,I mean,this community.But,you know,the many peopleclaimed that,okay,metaprogramming is pretty interesting,in theory,but there's no real-world use case inthe scripting language.But the many people,including DHH,proved,proven,they're wrong.So there'svery many real-world use case in meta-programming.Especially,the system should have to beflexible,and thus,you know,self-modifying,and self-adapting to the new environment.So formetaprogramming,ask power there.And the DSL,concept of DSL,you know,thealso,they once told me about the programming.Most of the programming is the process of designingdomain-specific language for that applications.We design classes,we design methods.So this iskind of process of designing your own DSL for your applications.So the frameworks like Rails,or Sinatra,is kind of like providing DSL to the application.So the Rails and Sinatra can beconsidered as a domain-specific language for web applications.So those concepts help Ruby toadapth in the web application.And then huge programs.So the,in the past,there was theprogramming language named TICL,TCL,two command language.And then the original authorconsidered TICL to be used in a very small programming,like a hundred lines of code.But soonafter that,the many people started using TICL,and then they started writing huge TICLprogramming,like five thousands of lines of code,or maybe the tens of thousands of lines of code.And then TICL lacks the language features for programming modularity.And then this is kind ofHell.So the lessons learned there is that every programming language will have thehuge programming to unexpected by the original designer.Sojust like that in Ruby as well.So in Ruby,there are so many huge Ruby programs.Some of you mightstruggling with Rails application with tens of thousands of lines of code.And Rails itselfis growing.That is huge web framework.And then those features,or objects-orientedprogramming,or meta-programming,or the concept of the domain specific language,is alsosubs to maintain that kind of huge programs.And then the multi-cores.Yeah,multi-core is the kind of traveling problem.And I will explain it later.But we moved on to the native threads inRuby19.And we now have the JRuby and Rubinius,the blocks of the giant locks.So that can use the multi-CPU,multi-cores without handling.And then we have the library named the event machine in CoolIO,which is the event-driven-based programming to support.So we are still working on to utilize the multi-core.The high-traffics,we have the fibers,or the asynchronous IO.And we havethe mult-mruby and the nginx-mruby,which embeds the Ruby interpreter in a web server,so that you don'thave to kick the other Ruby process.And then in this conference,there is a real-world use caseof these mruby-embedded web servers by Shibata-sum.Okay,functional programming,we have the enumeratorsand lazy enumerators.And then we have been added some functional methods inspired by the functionalprogrammings.So we are in 2015,we are here in the process of evolution.So what are we heading next?First of all,we are going to be on the web.So Ruby might be used in embeddingby research computing,or maybe in the server-side and client-side.So for mruby,we will have the session to explain the mult-mruby and the nginx-mruby.I'll have to explain about the mruby.Mruby is thealternative implementation of a Ruby programming language,which is focused on providing embeddable APIsand the smaller footprint.It was designed and implemented by myself.Recently,I have beenworking as a designer of a Ruby programming language.So I made a decision about that.I picked thislanguage feature.I reject this language feature with that.That is my work as a designer.Butwe have the Ruby core team,which is the smarter programmer than myself.So I just have to ask themOK,I design it.You implement it.That's the easy part.But I was born to program.So I need to program.SoI spent half of my time implementing coding mruby.Anyway,and then next step is concurrency.Sothe huge team is removing the global interpreter lock.So Ruby,the virtual machine,is notthreadsafe.It is quite difficult to make it threadsafe.So we try to make it threadsafe by usingthe fine-grained lock.So lock everywhere.We put the lock everywhere.But it slows down the interpreter of huge amount.So we cannot use that.Most of the Ruby programs are single-threaded,not concurrency.So we don't want to throw down those single-threaded programs.So we just abandonedfine-grained lock.So that's why we choose the global interpreter lock.Andvery interestingly,so many people press the Node.js,which is the event-driven server-sideJavaScriptimplementation.And in fact,V8,which is the core of the Node.js,is brilliantly fastJavaScript virtual machine.But at the same time,the Node.js is single-threaded.Sovery few people complained about that.That's so funny.But that tells me,that tells me,if the virtual machine is fast enough,very few people complained about that.Anyway.Sobut we have to do something.So this is my tweet in 2014,August.My big plan for Ruby jail is add more abstraction currency,for example,actors,and add warning when using thread directory,thenremove jail.So we want to move on to the more abstract,more higher-level concurrency model.So the key point is,what is the abstract concurrency model in the future of Ruby?Maybe Ruby 3.0.Somaybe it's actors.Actors introduced by the R1.So we created actors,which is the execution body,kind of like a thread.But those actors do not share data.So they only communicate between the message passing.So it's kind of like a Goal School routine and the channel.So that is actors.Andand Koichi,which is the guy behind the virtual machine,who in charge of the virtual machine,isexperimenting on the share borrower model.It's kind of like a Rust memory model.So the problem is,we in thread programming,we often share the object.As object-oriented programming,it's quite easyto two threads referring to the single object.But if one thread modifies the object,so it couldaffect the behavior of the other threads.And then they affect other threadsindeterministically.That is the problem.So the Koichi isthe idea is that when you pass the object to the other threads,so you have tothe object,the ownership of the object is borrowed from that object to the past object.So the onlythe object,only threads,it's kind of confusing.The threads with ownership,only threads withownership can modify the object.So that only one advanced thread can modify.So in that way,so we canavoid that data confliction without havingmuted the fine-grained rock.Then that might works,but we areexperimenting on it.And my,myself,is experimenting the other ideas,like a stream or pipeline-basedconcurrency.So I,as experimentation,so I designed the new programming language named stream.So it'sexperimental language and experiment for future Ruby concurrency model.If the concept ofthe language stream works well,so that will gradually merge into the Ruby 3.0.So I'm not surewhich one,so actor model or sharing borrowing model or the stream-based model will win.But at this,we cansay we're experimenting,considering,and seriously about adding new,better concurrency model in theRuby 3.0.So let me explain a little bit about the stream.So stream is a language to build up the pipeline inthe program.So this is the simple CAD programs.So read from the standard in to standard out.This iskind of like shell,but the program line itself only creates the pipeline.At the end of theprogram,the event loop started,then event loop reads from standard in,then write data to thestandard out or something.The other example is a little bit more complicated.This is a simple echoserver in stream.So this round thing is the function.So the TCP server creates the server socket.So thatgenerates,accepts the client socket.Then when data is pipelined to the function,the functionis called for each data.It's generate,it's path.Each data passed.So it accept the clientsockets,then connect the client socket as input,and the client socket as output.This meansecho.So running this program creates the simple echo server in three lines of code.Notdcprogramming.Just that.So that is a kind of experiment I'm doing.So maybe with other,you know,thepipe is used in Ruby as a bitwise operator.So we might not be able to use the bar as a pipeline connection,but maybe in the future,this model can be introduced in Ruby 3.0.The next field we are going to,the machine collaboration.So the tomorrow,I think it's tomorrow,but the西田さん will explain about the digiming gem.So this gem does the,when you mistype the variables orclass modules.So the Ruby interpreter look for the similar words.And then it says,you said who,butdigiming,not foo,but foo1 or something.So they advice you to fix the type or something.So I wasinspired by this feature.So I'd love to,I mean,bundle this gem into the standard distribution.And I was inspired by this digiming gem,making some kind of proactive or noisy warning.Sothere is the gem and the tool named the Rubercop,which is check your,the styles of the Ruby programs.It is very noisy,but it teaches you the good style of your programs.So theproactive warning is kind of like that.So you,when turned on this proactive warning,so you will be warned and advised,a lot of advice to make your program better.So it's kind of like athe communication between compiler and the programmers to make the software better.Soit is,of course it is optional.It is too noisy for daily use,but sometimes that would be very,very useful.So that might be coming to the Ruby 0.0.And the soft typing.So we are thinkingabout the soft typing.The soft typing is different from the gradual typing nor optional typing.We havethree concepts.The optional typing and the gradual typing is almost the same concept.And the soft typing is not.The optional typing or gradual typing is the,you can specify the static type ofthe expression.So for example,the adding static typing to JavaScript makes type script,which is thestatic type JavaScript,fundamentally.And it is pretty interesting.I knew very much about thebenefit ofstatic typing.You can find the type errors in compile time statically.So that you can findthe many bugs in compile time without running,without testing.So it is quite beneficial.Butat the same time,I'm so dry.So when we see the software with the static typing,it works,of course.And thenwe remove every type information from the code.If the language is dynamically typed,it still works.In that way,the type information is redundant.So by following the principle of dry,so itshould be removed.So soft typing is a type inference.So we can sometimesknow which variable has which type.For example,when we see the assignment,it says A equal 1.So it meansthe variable A is integer.So gathering those kinds of information and then adding some kind ofassumption or restriction.So you can have the 50 to 80% type-saved programs.So if you don't haveenough information about the types,so it's just four bucks to the dynamic typing.So that is soft typing.Soit's kind of the best effort soft typing.So I am adding some kind of the soft statictype-checking into Ruby 3.0,if possible.But I'm not going to add a type declaration,type annotation to Ruby language,just because it's against the concept of dry.So we wanted thesuper dry.To confess,I don't like testing.I do,but I don't like testing,just becausebecause it's redundant.If we are smart enough,if our program writes down,run correctly,we don'thave to test.But I have no idea yet to remove the test.Maybe some kind of proof theory can beused for that one.But this is my ultimate goal.Write down the program.It should run correctly at the first hand,or you can communicate with the computer to fix that one with the writing test.This is my ultimate goal,but I don't have no idea yet.So if you have any idea to step forward tothat ultimate goal,please tell me.Help us.Okay,we will seek dry way anyway.So why do we do all thosestaffs?Last 20 years,we have put all the effort,so many times,so many work hours,so many ideas,so manyknowledge,into the ruby programming language,ruby community,and building up the ruby application,ruby frameworks.Why do we do allthosestaffs?Because we are lazy.We are so lazy.So we work hard to be more lazy.Because we love ruby.Because we lovejoy,given from ruby.Because we love power,given from ruby.So I promise I will do everything diligently,seriously,to avoid extension.To make us more powerful.To make us more lazy.Happy hacking.Thank you.Thank you so much,Mats.I'm sure you guys have lots of questions.If you would like to ask him anything,we have mic set up on both sides of the auditorium.So please make your way to either one of those.We can also bring a mic to you.Yes,okay.Hey,Mats.Hi.So I think that recently we see the old programming ideas being popular again.For example,we have closure,which implements list.We have elixir,which takes ideas fromerlang.Do you think that the current implementation of ruby can survive the next 20 years,or maybe we will need another language that will take the ideas from ruby,but will get rid of all the legacy features.And it will be basicallysomething new.It will give ruby a new life,but it will not be the same language.What's your opinion?That's a good question.But it's,you know,theit's kind of like evolving selection.So the language comes as goals.But you know,as a ruby designer,the extension of ruby is not very,very bad for me.So I try everything to survive.No matter what I want.Okay.Thank you.Do we have any more questions?The new breed of programming languages that are coming out.Ras,Kala,Golang.What features do you find most exciting there that you'd like to take and bring into ruby?Excited.I recently had excited about the concept of the goal,with the concept of the goal routine and channel,and the concept of the structures of typing,and the,you know,those simple static types of language of being,well,I was pretty much inspired by goal.I don't think we can steal something from goal,but so in that sense,what,I don't know.I'm excited.I'm also excited about the recent evolution around the,we see in JavaScript ecosystem,like having the type script,or that,or some kind of those kind of client-side systems.Are there any other questions from Matt?Yes.Okay.Hi Matt.So you talked a little bit about how you go about designing new implementations and things that you're adding to ruby as it grows and evolves.What's your process when you sit down to design something new or add something new,whether it's something you're coming up with or something you saw in another language.How do you go about designing that?So let's separate the topic between designing ruby or designing other programming languages.So in designing ruby,so it's,the basic part of ruby is kind of almost done.So we can add very teeny features.We are only able to add other teeny features.So the most of them are proposal,based on proposals,like the people in the community come up with the ideas,and then how about adding this feature or that,we see that other language or something like that.So the most of them,we have to reject most of them just because we have to keep compatibility,but sometimes we see the very brilliant idea,so we can introduce them.We also talked about those bigger features,like I explained about the concurrency.So the design and process of ruby itself is going like that.So we have very small room for change.So since the literally millions of people using ruby right now,so we cannot break anything existing.So they are really room to change in the ruby.In contrast,so designing,for example,the early stage of ruby,when no one was using ruby,or the designing other programming languages,that just started.So we think of the usage,and then we focus on,I focus on,what to say,the how I feel when we call it.So the,when designing API,the syntax,the language features,so I imagine how I feel,how a user feel when using that particular features.Thank you.I'm wondering about,is MRI...Can I ask you a question?You can ask me tomorrow,my talks tomorrow.I'm wondering,is MRI ever going to get a jit?What?Are we ever going to get a just-in-time compiler?And what do you think about the memory trade-offs of having an just-in-time compiler?We have two concerns.So the jit fundamentally is not portable.So it is the particular with that particular CPU,the architecture,or maybe we can rely on the other,the jit framework like LLVM.The open-source software with long history,so we don't want to rely on the huge other software,exist outside,not controlled by our project,just because the open-source software comes and goes.So if we rely on the LLVM,so when something happened,when we cannot use the LLVM longer,so we will meet a serious problem.So when we have to rely on the other outside project,it should be optional,or maybe it should be maintained by ourself.So this is one problem.The second one is the memory consumption.So when we jit,just-in-time compile everything,so we consumed a lot of memory,the compiled software.And in many cases,the memory is the tightest resource in the environment,especially in the server side.So in that sense,we are very concerned about jit.So of course we are discussing about adding jit once in a while.And for those reasons,we are very slow to start creating jit.And I have wanted.I think it's kind of related to Eric's questions.Because for example,compared to other languages,for example like Python,it's being funded by Google,and they are focusing on making it very fast.Even there's talk about making it as fast as C.So I think,for example,what everyone was asking,what is the direction,what is your view on that,where there's a focus on making Ruby running faster.I know that there's a lot of features that you have considered putting into Ruby to make everyone's life better.But what is your view on that,in terms of speed of the language?Well,I don't know.No one complained about the faster Ruby.So we are working on making it run faster and consumes less memory.So recent years,last two,three years,the performance and the memory consumption is our focus,rather than adding new features.So we introduced a new garbage collector to regain performance,and we changed the internal structure a lot to reduce the memory.So those two features has been our primary focus to improve the performance.We are keeping,we will keep doing that for coming two years or one or two years.Thanks.Okay,thank you so much,Mats for joining us.Mats is going to be back again later this afternoon.We're going to have a panel with all the Ruby committers who are here in Singapore at four o'clock.So you'll have time to ask them more questions.So start to think of them.Thank you again so much.Thank you.