タグ

mrubyに関するgom68のブックマーク (8)

  • PHPが動くApacheのコンテナ環境をhaconiwaで1万個動かそうとしてみた - 人間とウェブの未来

    RubyKaigiに行くとにサインを求められるすごいエンジニアが書いたhaconiwaというmruby製のコンテナエンジン(コンテナ環境構築の基盤ツール)があるのですが、少し試してみようと思って、とりあえず1サーバ上に1万コンテナぐらい動かそうとしてみました。久々に今回は自分の作ったOSSではなく、OSSの検証レポート的な記事になります。 haconiwaは僕の好きなOSSの一つで、それはなぜかと言うと、 haconiwaでコンテナを作る際に、haconiwa実行環境にはコンテナの要素機能が全て入っている必要はない 必要なコンテナの要素機能を簡単に組み合わせて、自分が実現したいコンテナ、あるいは、それに準ずる環境を作れる haconiwaによるコンテナ定義をRubyのDSLで表現でき、動的な設定や組み合わせの設定を簡単にかける ということができるからです。その特性から、CentOS6のよ

    PHPが動くApacheのコンテナ環境をhaconiwaで1万個動かそうとしてみた - 人間とウェブの未来
  • 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拡張が実用的になってきた件 - 人間とウェブの未来
  • 限定継続の(すごくわかりやすい(かもしれない))解説 - wasabizの日記

    2013-10-03 限定継続の(すごくわかりやすい(かもしれない))解説 ** この記事はmrubyで限定継続(shift/reset)を実装した話の一部です 限定継続とは一般化された継続のようなもので、切り取るスタックの底を指定できるcallccのようなものです。といってもこうやって言葉を並べているだけだと何を言っているか全くわからないと思うのでここから具体的に説明していきます。 限定継続にはいくつか種類があるんですが、とりあえず今はshift/resetという二つの演算子(二つで一つのペアです)を説明します。 説明で使っているAPI mruby-partcontの以下のAPIを使っています。 class Continuation self[*ret] -> value call(*ret) -> value Kernel.#reset Kernel.#shift reset rese

  • mrubyで限定継続(shift/reset)を実装した話 - wasabizの日記

    2013-10-03 mrubyで限定継続(shift/reset)を実装した話 mrubyという組み込み向けのruby実装があります。中身のアーキテクチャはほとんどluaに近いんですがAPIとかがとても洗練されていてソースコードが読んでいてとてもふつくしい。登場からまだあまり時間が経っておらずコードが成熟していないという事もあってなかなかハックしがいがあるソフトウェアです。今回そのmrubyに限定継続オペレータのshift/resetを実装したのでその話を書いてみます。新規性としては 限定継続は家CRubyにも実装されていない 一部の言語の一部の処理系(scheme or ML)以外での実装はほぼ存在しない "Final Shift for Call/cc: Direct Implementation of Shift and Reset"は一つのスタックの上に特殊なフレームを詰んでい

    gom68
    gom68 2013/10/14
  • アリーナのかいしんのいちげき - mirichiの日記

    mrubyにはmrb_gc_arena_save()/mrb_gc_arena_restore()という関数があって、これを使わずにCでオブジェクトを作りまくるとエラーでコケる。この件について作者のMatzが直々に日記を書いておられる。(http://www.rubyist.net/~matz/20130731.html#p01) mrubyとC言語とGCの問題点とその解決策を説明してくれているのだが、これを読んでもなんとなく微妙にわからない。という人は多いのではないかと思う。mrubyのGCを読んだことある人ならわかるんだろうけども。 で、俺も何か書いてみようと思ったわけだ。余計わからなくなるかもしれないが。しかしmrubyのarenaまわりのAPIはかなり内臓が飛び出したような設計だと思うので、使う人がGCとかオブジェクト管理を少し知らないといけないんじゃないかと。 ■さわり まず前提

    アリーナのかいしんのいちげき - mirichiの日記
    gom68
    gom68 2013/08/04
  • mrubyのGCの仕組みを調べた - ブレ男のブログ

    2013年4月18日木曜日 mrubyのGCの仕組みを調べた 時刻: 0:09 動機 LuaのAPIは、Lua内部で扱われる値に関してスタック上であれこれ操作出来るだけで、値自体を直接取得したり作成することはできない。値を取り出したいときはスタック上のある場所にある値の型を調べて、その型の値を取り出すAPIを呼び出す、という具合になっている。この場合、処理系で扱う値はすべて処理系側で管理されているので、ガベージコレクト(GC)できるのもわからんでもない。 しかしmrubyAPIではスクリプト内部で扱う値をmrb_valueとしてC言語側に直接取り出せる。この場合処理系の管理を逃れてしまうことはないのか。またCの関数でmrubyのオブジェクトを作成した瞬間にGCが走った場合に、まだmrubyで管理している変数からの参照がなくて、解放されてしまったりしないのか。 大昔の事しか知らないけど

    gom68
    gom68 2013/05/06
  • ブレ男のブログ: mrubyでカスタムアロケータを指定

    2013年3月12日火曜日 mrubyでカスタムアロケータを指定 時刻: 17:10 mrubyで標準のmalloc/freeじゃなく、アプリ側で用意したメモリアロケータを指定してみる。mrubyの初期化をmrb_open()じゃなくてmrb_open_allocf()にして、引数にアロケータの関数とその関数に渡すユーザデータを与えて呼び出すことで、アプリ側でメモリ管理ができる。 アロケータは typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud); という型の関数で、サイズが0なら解放、0より大きい場合ポインタがNULLなら新規確保、NULLじゃなければ以前確保していた領域をリサイズした結果のポインタを返すことで、アプリ側で任意のメモリ管理ができる。デフォルトだと以下の様なアロケータになっ

    gom68
    gom68 2013/03/19
  • 軽量Rubyの状況まとめ - Kishima's Hateda log

    4/28追記:まだ正式ではないけど公開されたよ! https://github.com/mruby/mruby 神よ 未だ生まれぬ神よ 御身への想い押さえがたきに 我が身は今やはりさけぬ 古橋秀之「ブライトライツ・ホーリーランド」 そろそろ軽量Rubyが公開されるらしい、との話なので、現状見つかる情報を調べてみました。 ほんとは2月の東京Rubyプレゼンテーション2012に行けていれば色々分かったと思うのですが、行けなかったのでネットにある情報を検索してみた次第です。 以前は"Armadillo9でRubyを動かす。"とかやってたりしたこともあり、組み込みスクリプト言語には色々期待してるので、楽しみ。 公開されたら色々遊んでみる予定。 構成 mruby コンパイラ、RiteVM、ライブラリなどを含めた総称 RiteVM YARVに相当する部分 Rubyチップ VM自体をハードウェア化するの

    軽量Rubyの状況まとめ - Kishima's Hateda log
    gom68
    gom68 2012/04/08
  • 1