今回のセッションは、MVとロームの話を始めましょう。前回の話題は、アナウンスメントを作りたいと思います。このプレゼンテーションは、少し技術的です。このプレゼンテーションは、RubyとDazazanを使っています。このプレゼンテーションは、MVとDazazanのインプリメンテーションを説明します。このプレゼンテーションは、MVとDazazanの説明をしなければなりません。私たちの説明を説明します。私はユリエヤマネです。私はマサヨシータカハシーです。私はチームヤマネコです。このプレゼンテーションは、MVのアプリケーションとレベルプレゼンテーションを説明します。私はユリエ。私はマイクコンピューターとリアルタイムOSを説明します。私はトッパーのプロジェクトです。トッパーのプロジェクトは、リアルタイムOSとツールを使っています。私はデモストレーションとプレゼンテーションを説明します。私はユリエ。私はレベルプレゼンテーションとプレゼンテーションを説明します。レベルプレゼンテーションとプレゼンテーションを説明します。私はルビー・ジェム.orgのメンバーです。2019年にルビー・Kaigi 2019のフクオーカーが開催されます。次のアプリケーションについてお願いいたします。では、主題を説明します。G-StalkはM-LubyとZoneです。まず、私はM-Lubyについて説明します。M-Lubyはルビー・ジェルビー・ルビナース・オープナースのインプレイのインプレイです。Lubyはライトウェイトルビーです。M-Lubyは小さなインプレイのインプレイです。C-LubyとJ-Lubyのインプレイです。LubyはI-SOULのスタンダードです。M-Lubyは2タイレットエリアを作り、サーバーやゲームのアプリケーションを作り、フォーカーやエンベレートシステムを作り、マイクコントローラーボールを使って、M-Lubyを使ってみました。このスタイルについて説明します。左のスライドはNucleo F401REです。アームコアテックスM4マイクコントローラーのボールです。ライトはM5スタックです。中国や日本のフェーマスボールです。ESP32マイクコントローラーです。Nucleoボールです。LCDはジョーシティックです。カーソを見ることができます。このジョーシティックコントローラーでカーソを取り除きます。マイクコンピューターはM5スタックです。ブーザーと3ボタンを使って、音楽を楽しみましょう。Lubyを使って、マイクコントローラーを使うことができます。マイクコントローラーのマイクコントローラーはシングルジップの小さなコンピューターです。NPU、LAM、DOM、ペフェルなどのマイクコントローラーはマイクコントローラーはスマートフォン、ホームアプライアンス、オートモビルなどのマイクコントローラーです。M-Lubyを使うことができます。M-LubyとM-Lubyはバイトコールのポジションです。M-Luby、VM、コンピューターは完全に分離されています。M-Luby、VM、コンピューターはバイトコールのポジションに使うためにM-Lubyファイルを使うことができます。そのバイトコールを使うためにM-Lubyに使うことができます。C-Luby、VM、コンピューターはシチュルビですがバイトコールを使います。VMのコンピューターのポジションはスマートレンジのパネルに使いました。MV2.0に関しては、次の月にも、MVフォーラムに関することができるかもしれません。MVの一番大きなアプレイは、アプレイは、コンパチビリティに関することができるかもしれません。アクテクトラムのアクティクトラムは、完全に違和で、マネーゼルのMV1.4で2つのアクティクトラムを使いません。しかし、マネーゼルのMV2.4で2つのアクティクトラムを使いません。では、ROMの話をします。ROMは、リードオンリーメモリーのアブリビティテーションです。ROMは、ノンバラタルメモリーです。ROMは、リードオンリーメモリーのアブリビティテーションです。ROMの選び方は、こっちは、EEプロンのDinoマネーゼルです。EEプロンは、アブリビティテーションの機能バイの賭け物の賭け物でーすオンリーメモリーを使い、EEプロン市民の農家一直リクラリアの賭け物の機能、そこ intelligentpassと略在し合いで、フラッシュロームやフラッシュメモリーは エイブロンのようなものですフラッシュ onlyのパープロークのユニットは パーヴァイトユニットですユニットはUSBメモリーです現在、マイクロコントローラーは フラッシュロームとメインストレッジを使いますリレーションについては、 ロン、エイブロンとフラッシュを作っていますロンはエイブロンの部分で、 フラッシュメモリーの部分はテンションなどですみなさん、ロンを最初にイメージしているの?ロンにはダークが多くありませんマイクロコントローラーは常にランクキャパシティです。特にチップボーズです。これがマイクロコントローラーのリストを使っています。最後のアイテムは、アドリノウノは他の違いです。アドリノウノは普通のMVを使っています。他のボーズは、MVを使っています。このボーズは、小さなランクキャパシティを使っています。エクスペンシブボーズでは、ランクキャパシティを使っています。マイクロコントローラーは、このランクを使っています。最初に、このカスターは、マイクロコントローラーは、シンプルファクションを使っています。ランクキャパシティは、少ないランクキャパシティを使っています。また、このアイテムは、パワーコンスタプチョンの問題です。ランクキャパシティは、それを取り付ける必要があります。つまり、強いコンサプションが増えられます。このページについて、スタッグエクスチェンジで答えたのですが、このページについて、プレイしてください。2つの理由は、ルビが前後のエクスチューションを使用することができます。ルビは前後のエクスチューションを使用することができます。このページについて、スタッグエクスチューションを使用することができます。最初に、メモリーアニシャライゼーションを使用することができます。ルビは、メモリーチャレンジでGCを使用することができます。GCのイニシャライゼーションについて、GCのイニシャライゼーションはGCで使用することができます。アナザシンのアニシャライゼーションは スタンダードクラシーでバレアルのクラシーを ルビに使用されていますクラシーを前に ウラルビスクリプトに 準備させる必要が必要です2つの問題は アニシャライゼーションはスタンダードクラスの アニシャライゼーションはこのタイミングは スタンダードクラシーをランに設置することができますつまり アニシャライゼーションに 行動することができますランは スタンダードクラスの アジェクトを 使用することができますそのため アジェクト、クラス、カーネル、 ニュメリックスタンダードクラス、ストリーン等の スタンダードクラスを使用しますとても人間があると言われ、スクリプトラインには覚えていないことがないと思います。しかし、オジェクトのした言葉にはC++やマイクルパイソンの特徴はありません。物理とその作業をしているのは、つまりは秘密的なセフォーターでもあることについては、どうしてこのような違いは?そのため、Rubyは非常にダイナミックな文化です。さらに、Rubyのキャラクターリストはダイナミックです。Rubyのもちろん、もちろん、数値の数値が移動されていることができます。Rubyのもちろん、もちろん、、もちろん、もちろん、もちろん、もちろんこのおまけを活じてRubyはコントローラ не容不明な問題になりました。この問題を説明します。エンベレートサ Regent護などのりこんにちはがそのため、ランを使用するために、ダイナミックランディエッジ、オブジェクト、スタンダードクラシス、コンシウムラン、これについては、ここについては、これについては、コントラディクションを使用するために、ダイナミックランディエッジ、空身とスタティックストレッジロームのコントラディクションを使用するために、ダイナミックランディエッジ、スタッティックストレッジローム、レストロークがCと呼ばれる structure is called MRBState.MRBState holds the mainststandard class objects as a member of the structures.The MRB class object is an R-class structure in C.R-class structure has membersIV and membersMT.In MRB, IV is an aberration for the instance variable.MTはメソドタイプのアブリベーションですメソドタイプは名前を説明します一つのクラスを使うメソドタイプはクラスを使うタイプですクラスはインターナルデータでクラスを使うクラスの情報を使っています例えばクラスの名前はここですこれはRクラスの説明です thus, IB and MT are in Rクラス as IBTVL and IBTVL structureand KHMT structure, respectivelyMRB object header is a common header of objectsand super is a pointer to superclassちなみに,ROM and RAM are used properlyROMs are immutable in terms of modern programming languagesand RAMs are mutableMT structures may be mutableMT structures may be immutableROMs and RAMs are shown in this figureROM is on the left and ROM is on the rightMRB state is changed at runtimeROMs need to be placed in RAMbut the class object itself can be placed in ROMhowever, the tables that manage the instance variablesand the tables that manage the method is in RAMbecause it changes while executingand even if the table of method is in RAM30 methods definition can be placed in ROMas I mentioned earlier, method may be added at runtimethe added method will be put in RAMThus, if we understand how to use ROM and RAM wellwe can use ROM without changing the dynamic nature of Rubynow let's explain about the symbol tablethe symbol table is a table related to name inside MRBnames such as class names and method namesare managed as symbolsthe entity of the symbol class in Rubyis this symbolthe symbol table has numeric id and string namethis symbol id is used to manage method and classes inside MRBtherefore, in order to put methods and classes in ROMthe symbol table must be placed in ROMin normal MRB, the symbol table is also stored in RAMso we need to change it here as wellin the expression so far, I think we were able to share our problemlet's think about an implementation to solve itand this is a small program to use embedded to MRBit's just to show hello worldthe function MRB open here is the initialization of MRB selfthe next if statement is exception handlingwhen initialization failsand the next function MRB load stringread and execute Ruby scriptsgiven as a character stringslike a put hello worldthat is MRB open is the initialization processthat we are targeting herethis is the outline of MRB openfirst, we initialize memory managementand initialize the symbol tablenext, we initialize basic classes such as class classobject class and kernel modulesince basic class bootlapping requires special workit is separated from other general classesthen, the class definition written in Cthe class definition written in Rubyand the class definition by MRB gemswhich is Ruby gems for MRB are initializedlet's consider how to put the symbol table in RAMto search for symbol names from a symbol IDit would not be a problem with a simple arrayin order to efficiently retrieve the symbol IDfrom symbol name, some ingenuity is necessaryhere, we use GPARFGPARF is what is called a perfect hash function generatoractually, it is also famous used in sylvieplease refer to this URL for the details usageand we find symbols used in MRBhere, we simply scan the MRB source codeand extract the strings that are supposed to be symbolsthe extracted symbols are stored in JSON formatand converted to a key file for GPARFby another scriptthen, converted into C language source using GPARFthis make it easier to edit symbols at the stage of JSONdetecting method also use a similar method as detecting symbolslike thisby the way, how can we arrange structure in C into RAMan easy way is putting the const qualifieranother way is preparing special segment with linker scriptbut if you do not need to do something complicated so farconst is enoughthis is a code generated by GPARFin GPARF by generating static const like thiswe arranged an array of names and dataused by hash function in ROMcomparing the result of using ROM and not using itmemory usage is reduced by about 20%however, there are places I have not done yetso, I will try for further improvementfuture worksI will also explain what is currently under developmentand what we plan to development laterthere are three issues herecurrently, we have tried to put iLab structure on ROMin addition, we should support mruby 2.0explained firstfor the more, I would like to give feedback to mruby repository as wellfirst, I will explain the iLab structuremruby iLab is a structure for managing compiled ruby script in mrubythe right side is the definition of the structureruby scripts in standard libraryand mrb gems become iLab structuressince iLab are placed in RAMwe want to make them on ROMwe have an idea to put iLab on ROMthat executing mruby open to generate iLab structuresand dump them all as C language codefor doing this, we can generate a JSON file for symbolsat the same timesince it's still on work in progressand the measurement method is different from the previous chartso we cannot compare thembut when we use ROM through historywe should reduce their RAM memory so muchlike this chartmruby 2.0the implementation of instance variableseem to be changed significantlywe should also make change for thatleft side is mruby 1.4and right side is mruby 2.0mruby 1.4 use a hash structurebut mruby 2.0 use a segmentary structureso we can fix this structurefor this method to be widely usedit's necessary to implement it without modifying mruby itselfunfortunately the current part cannot workwithout modifying mruby slightlyfor example when implementing method of mruby in Cstatic declaration is given to some functionslike this figurelike the figuresthereforeeven if you try to put a point to this function in ROMan error will occur at compile timewe'd like to ask math how fix to avoid thisand here is the good news I'd like to tell youthis project was selected by ruby association ground committeewe are very happy to be chosenwe will do our best to make a good result by all meansthank you so muchthank youok I summarize the talkROM is small in embedded devicesso we want to make more use of ROMon the other hand since ruby is a dynamic languageevery class object can be mutablebut even if the object is mutableyou can divide it into elementand put some of them in ROMlet's use mruby on the address boardwe have got a lot of opinionsand cooperation for our workswe really appreciate themthank you for comingand let's enjoy mrubythank you