タグ

mrubyに関するrokujyouhitomaのブックマーク (32)

  • mrubyのJITの概要 - Qiita

    まあ、VMをぶん回すようなプログラムだと、大体5~10倍くらいの速度が出るようです。文字列処理やIOなどCで書かれたライブラリを多用すると速度の差は縮まるでしょう。 ##内部構造 mrubyのJITはTracing JITです。Tracing JITそのものはググってください。mrubyのVMのバイトコード命令をフェッチして命令毎の処理に分岐するところで制御を乗っ取って実行回数をカウントします。実行回数がある閾値になったら機械語を生成し、次にこの命令を実行したら生成した機械語を呼び出します。 概要をつかむのは名古屋Ruby会議03で発表させてもらったスライドがいいと思います https://www.slideshare.net/miura1729/mrubyjit 内部構造の詳細はこちらを見てください あなとみー おぶ mrubyのJIT (その1) このあと、連続していてその13まであり

    mrubyのJITの概要 - Qiita
  • HTTP/2サーバーh2oでサーバプッシュを試してみた

    HTTP/2 serverであるh2oで初めてのサーバプッシュを試してみた。 今回はh2o_mrubyも触ってみたかったということで、h2oをmrubyとともにビルドして少し触ってみた。 前回試してみたnginx_mrubyと同じくh2o_mrunyもサーバーをrubyで動的に制御することができる。 サーバプッシュとはHTTP/1の場合、サーバーはクライアントからのリクエストに応じて、レスポンスを返すものでした。 しかし、HTTP/2の場合はクライアントからのリクエストがなくても、サーバーからレスポンスを返すことができる。 今回はresouce hintsにあるように、リクエストヘッダーにlink:<style.css>; rel=preload; as=stylesheet のようなLinkヘッダーを追加してレスポンスを返すようにした。 こうすることで、h2oサーバーは予めクライアントが

  • 組み込みC言語プログラマのためのmruby入門(後編) ―― mrubyの組み込み方とJavaとの違い

    連載では,主にC言語で開発している組み込みプログラマを対象に,Rubyおよびmrubyについて解説している.今回は,mrubyをアプリケーションに組み込む方法について概要を説明する.また,組み込みJavaなどの類似技術との違いについても述べる.(編集部) 技術解説・連載「組み込みC言語プログラマのためのmruby入門」 バック・ナンバ 前編 Rubyとmruby,何が違う? どう違う? 中編 mrubyをお手軽に体験する! 3.mrubyの組み込み方 mrubyのコアはバイトコード処理系です.前回は,対話的にmrubyのプログラミングができるアプリケーションmirb.exeを使いましたが,mirbは文を入力するたびに内部でバイトコード・コンパイラが実行され,バイトコード・インタプリタにより実行されています.mruby.exeも同様の機能を持っていますが,同時に事前コンパイルされたバイトコ

    rokujyouhitoma
    rokujyouhitoma 2017/03/10
    mrbcすばらしいな。
  • mruby/c

    mruby/c(エムルビー・スラッシュ・シー)は、プログラミング言語「Ruby」の高い開発生産性と可読性の特徴を引き継ぎつつ、プログラム実行に必要なメモリ消費量がmruby(組込み向け軽量Ruby)より少ない開発言語です。小さなワンチップマイコンでも動作するように開発しており、センサーネットワークやウェアラブルデバイスなどの小型端末のソフトウェア開発、既存デバイスへのDSL追加に適しています。 「mruby/c」はRubyの文法に基づいており、Webアプリケーション開発からマイコンを用いた組込み・IoTシステム開発に至るまで、全て「Ruby」で実現することができます。 mruby/cは、しまねソフト研究開発センターと国立大学法人九州工業大学(田中和明准教授)との共同研究によってオープンソースとして公開しています。mruby/cソースコードはGitHubでダウンロードできます。 お知らせ m

    mruby/c
  • H2O x mrubyで人はどれだけ幸せになれるのか

    4. Copyright © DeNA Co.,Ltd. All Rights Reserved. H2Oとは !  https://h2o.examp1e.net/ !  Google翻訳いわく !  おおむねこの通りです(⾚字部分を除いて) !  みんな⼤好き某kazuho sanが開発 !  現在の最新verはv2.2.0-beta1 4 H2Oは、古い世代のWebサーバーと⽐較して、 CPU使⽤率が低いユーザーに迅速な応答を提供する、 新しい世代のHTTPサーバーです。 基盤から設計されたサーバーは、優先コンテンツ配信と サーバープッシュを含むHTTP / 2機能をフルに活⽤し、 Webサイトの訪問者に有望な経験を提供します。

    H2O x mrubyで人はどれだけ幸せになれるのか
  • Itamaeのmruby実装「mitamae」が大体いい感じになった話 - k0kubun's blog

    Roppongi.rb #2 で「mitamae」について話してきた Roppongi.rb #2が "Infrastructure x Ruby" をテーマに開催され、そこで RubyなしでItamaeレシピを実行できる「itamae-go」を作った - k0kubun's blog 話と pure mrubyで実装されたItamae「itamae-mruby」を作った - k0kubun's blog 話をしてきた。 いいたかったことはスライドの通りだけど、枠が15分でいろいろ漏れた話を書いておく。 mitamaeの現状について なんでitamae-mrubyからMItamaeに変えたの というか一昨日までmitamaeはitamae-mrubyという名前だった。エエー。変えた理由は真面目な奴がいくつかあるんだけど、あえて不真面目な奴だけ書くと、名前が微妙なソフトウェアは流行らない気が

    Itamaeのmruby実装「mitamae」が大体いい感じになった話 - k0kubun's blog
  • IPC Namespaceをまたいだプロセス間で、pipeでやりとりする。mrubyで。 - ローファイ日記

    Introduction to Linux namespaces - Part 2: IPC | Yet another enthusiast blog! こういうブログ記事があって、元記事はC言語なんだけど、これと同じことをmrubyでもやってみたサンプル。なお元記事は clone(2) だけど今回はforkしてから unshare(2) している。clone未実装なんで。。 reader, writer = IO.pipe puts " - Hello ?" p = Process.fork do Namespace.unshare(Namespace::CLONE_NEWUTS | Namespace::CLONE_NEWIPC) writer.close reader.read # blocking system "hostname 'In-Namespace'" puts " -

    IPC Namespaceをまたいだプロセス間で、pipeでやりとりする。mrubyで。 - ローファイ日記
  • Web界から組み込みに向けられた刺客「mruby」はこう使われている

    Rubyの良さを組み込みに」を合言葉とする開発言語「mruby」は公開以来、着実な進歩を遂げ、さまざまな場面での利用も進んでいます。ここでは「Web界から組み込みに向けられた刺客」(まつもとゆきひろ氏)たる、mrubyの採用事例を紹介します。 mruby(軽量Ruby)は経済産業省「地域イノベーション創出研究開発事業」として2010年に始まり、2012年4月にオープンソース(MITライセンス)として公開された組み込み向け開発言語です。「Rubyの良さを組み込みに」を合言葉に開発されたmrubyは発表よりはや3年、たくさんの人々の協力でさまざまな形の改良がくわえられ、現在ではライブラリは170を超え、デバッガー対応の安定版「mruby V1.2.0」が発表(2015年11月)されるなど着実に進化しています。 Rubyは開発しやすい、生産性の高い言語としてWeb開発などに広く使われている言語

    Web界から組み込みに向けられた刺客「mruby」はこう使われている
  • mruby で同期呼出を非同期化する話(もしくは H2O の mruby ハンドラでネットワークアクセスする話)

    ■背景 H2Oではバージョン1.5より、mrubyを用い、Rackのインターフェイスに則った形でハンドラを書けるようになっています。 この機能を提供している目的は、正規表現による書き換え等を用いる複雑な設定ファイルではなくプログラミング言語を用いることで、ウェブサーバの設定をより簡潔に拡張しやすくするためです(Apacheのmod_rubyやmod_perlのようにウェブアプリケーションをウェブサーバ内で実行可能にすることではありません)。 とは言っても、現実のウェブサーバの設定においては、外部のデータベース等に問い合わせた結果に基づいたルーティングが必要になることがあります。 H2Oのようなイベントドリブンなウェブサーバ上で動作する、同期モデルを採用するRackインターフェイスを用いて記述されるハンドラ内において、データベースへの問い合わせをどのように実現すれば良いか。問い合わせが同期的

  • mrubyのJITにおけるメソッド再定義の対処方法 - Qiita

    Rubyはメソッドの再定義が出来るのですが、これがJITコンパイラを作るときに問題になります。メソッドそのものを再定義しなければならないのはもちろん、各所に散らばっているそのメソッドを呼び出している元も書き換えなければならないからです。さもなければ、再定義されているかを毎回チェックする必要があり、大幅に速度が落ちます。 mrubyのJITではコードの自己書き換えを駆使することで速度を落とさず再定義に対処しています。ただし、メモリ効率が悪いので、頻繁な書き換えには向きません。 mrubyのJITではこんな感じで生成コードを管理しています。この場合は、メソッドfooの場合です。 entry tableってのがあって、RITE VMの命令毎に対応する機械語コードのアドレスが入っています。Tracing JITなのでプログラムが全て機械語になっている保証はないですので、これを見て対応する機械語命令

    mrubyのJITにおけるメソッド再定義の対処方法 - Qiita
  • resolve issues using mruby by kazuho · Pull Request #471 · h2o/h2o

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    resolve issues using mruby by kazuho · Pull Request #471 · h2o/h2o
  • H2O version 1.4.0 released with outstanding support for forward secrecy and load balancing (and the experimental mruby handler)

    H2O version 1.4.0 released with outstanding support for forward secrecy and load balancing (and the experimental mruby handler) Today I am happy to announce the release of the H2O HTTP/2 server version 1.4.0. There have been a few changes and bug fixes from version 1.3.1 (that showed big performance improvements over the older generations of HTTP servers without support for request prioritization)

  • H2Oのmruby拡張が実用的になってきた件 - 人間とウェブの未来

    H2Oにmruby拡張の提案を行いmergeされてから幾つかのPRを経て、少しずつ実用的になってきました。 github.com 今日は簡単にその使い方を紹介しようと思います。 h2o_mrubyを有効化したh2oをビルド h2o_mrubyを有効化してビルドするのは簡単で、OSのライブラリ環境(/usr/lib/以下とか)にlibmruby.a等のmrubyライブラリがある状態で、 cmake -DWITH_MRUBY=ON . make h2o するだけで、h2o_mrubyが有効化されたh2oバイナリがカレントにビルドされます。簡単ですね。 またこの記事も参考にすると良いかもしれません。 qiita.com 使えるメソッド mod_mrubyやngx_mruby程メソッドはまだ充実していませんが、少しずつ使えるものを実装しています。また、mod_mrubyやngx_mrubyとの互換

    H2Oのmruby拡張が実用的になってきた件 - 人間とウェブの未来
  • h2o_mrubyがh2o本家にマージされました - 人間とウェブの未来

    hb.matsumoto-r.jp 先日、h2oの勉強がてら独自モジュールとして、h2o_mrubyというモジュールの開発をはじめてみました。所謂mod_mrubyやngx_mrubyのように、Webサーバの内部処理をmrubyでコントロールするためのモジュールです。そうこうしていると、h2oの作者の id:kazuhooku さんが、以下のようにツイートされていました。 h2o組み込みの言語を選ぶなら、個人的にはmruby>>luaだし、ビルドまわりがきれいにまとまるならmergeしちゃいたい— Kazuho Oku (@kazuho) 2015, 6月 23 おお、これは家へ取り込んで頂ける可能性もあるな!!??と思い、急遽実装を家用に書き直して、数日前にPRを出しました。 github.com そして、幾つかの修正やテストの実装を経て、今日の朝方ついにh2o家に無事マージされま

    h2o_mrubyがh2o本家にマージされました - 人間とウェブの未来
  • FPGAでmrubyを動かす

    2. 自己紹介 twitter: @kimu_shu (きむしゅ/木村 修太)  趣味でマイコンとか使って電子工作する人。 ここ数年はFPGAをいじってます。  仕事は組み込み機器のOS、ドライバ、BIOSなど。  Ruby好き。マイコン工作に応用できるmruby楽しい!  “Word boxing”をmruby家に入れた人 1 3. FPGAにソフトコアCPU(Nios II)を載せ、mrubyを動かす例。 ボードには terasic DE0 を利用。USBキーボードを接続し、 直接Rubyスクリプトを入力して即実行可能。 Ogaki Mini Maker Faireやコミケで展示してきました。 作ったもの紹介 mirb実行中 • Altera CycloneIII (EP3C16F484) • SDRAM 8MB • SD-Card • USB Keyboard etc. 2

    FPGAでmrubyを動かす
  • mod_mrubyの逆襲(mod_luaよりパフォーマンス良くなったよ)

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 さてさて、これまでの研究の論文化や研究会発表等が落ち着いたので、mod_mruby触ってます。 mod_mrubyGithub 前回、mod_luaにパフォーマンス面で完敗したわけですが、ついにやりました。mod_luaを超えてやりましたよ! 工夫した所 何を変えたかいうと、前回の実装ではmrubyスクリプト実行毎に、 mrb_open()実行 mrb_define_module()やmrb_define_class_method()を実行 mrb_parse_file()実行 mrb_generate_code()実行 mrb_run()実行 していました。しかし、Apacheの特性上プロセスやスレッドをプールさせて使いまわすため、少

    mod_mrubyの逆襲(mod_luaよりパフォーマンス良くなったよ)
  • mrubyのVMざっくり解説 - mirichiの日記

    なんとなく、mrubyのVMの基的なところを書いておこうと思ったので。誰かの参考になれば。 大きな仕様的なところは、 ・32bit固定長のバイトコードを解釈して動作する。 ・レジスタをスタックに確保するタイプのレジスタマシンである。従って、スタックの任意の位置をレジスタ番号で指定して直接読み書き可能。 ・メソッドやブロックなどの単位でバイトコードがirep構造体にまとめられている。 みたいな感じ。 スタックの使い方 スタックトップがレジスタのR0となり、以下、R1、R2・・・と名前が付けられる。スタックの型はmrb_valueの配列であり、つまりmrubyオブジェクトが詰まっている。irepのコードを呼び出すとき、スタックの上から順に以下のような情報を積んでから呼ばれる。 (引数が2個あった場合の例) R0 |self | R1 |argument1| R2 |argument2| R3

    mrubyのVMざっくり解説 - mirichiの日記
  • GitHub - mitchellh/go-mruby: Go (golang) bindings to mruby.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - mitchellh/go-mruby: Go (golang) bindings to mruby.
  • mruby 安定版 v1.0.0について軽量Rubyフォーラムの中の人に聴いてきた

    Ruby東京プレゼンテーション2014に登壇していたら、同じく登壇していたMatzがいきなり「mruby 安定版 v1.0.0をさっきリリースした」とさらっと言ってました。聞いてないwww なにがなんだかさっぱり分からないので、会場に居た軽量Rubyフォーラムの中の人に話を聞いてきました。 引っ越し準備でゆっくり書いているヒマがないので、箇条書きで失礼します。 v1.0.0とはなにか? 2014/01/10版をただフォークしたもの。開発版から変更点なし。 なにをもって安定版としているのか make testが通ってるモノが安定版。 個別のmrbgemsをインストールして、make testをテストを実行。 テストはどうやってやっているの? make testと、コンパイル条件変更して、Windows, Linux, OSXでテストを実行。 誰がリリースしているの? 軽量Rubyフォーラムが

    mruby 安定版 v1.0.0について軽量Rubyフォーラムの中の人に聴いてきた
  • GitHub - AlekSi/gomruby: DEPRECATED. Embeds mruby (mini Ruby) VM into Go.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - AlekSi/gomruby: DEPRECATED. Embeds mruby (mini Ruby) VM into Go.