[#34194] File.read (または String#include?) でSEGV — wanabe <s.wanabe@...>
ワナベと申します。
[#34200] Resolv.getaddress がエラーになる — "Kouhei Yanagita" <yanagi@...>
柳田です。
[#34239] MVM interface draft — Nobuyoshi Nakada <nobu@...>
なかだです。
[#34261] ComplexFloat — "Kenta Murata" <muraken@...>
村田です.
村田です.
なかだです。
むらたです.
こんにちは、なかむら(う)です。
むらたです.
こんにちは、なかむら(う)です。
むらたです.
In article <[email protected]>,
むらたです.
まつもと ゆきひろです
利点としては、拡張ライブラリが書きやすい、ということ。正当化の理由とし
むらたです.
> 私にはいびつな進化という感じはしません.むしろ,せっかく C で実装できるのに
むらたです.
まつもと ゆきひろです
むらたです.
まつもと ゆきひろです
むらたです.
まつもと ゆきひろです
むらたです.
In article <[email protected]>,
むらたです.
In article <[email protected]>,
むらたです.
In article <[email protected]>,
むらたです.
まつもと ゆきひろです
むらたです.
まつもと ゆきひろです
むらたです.
原です。
まつもと ゆきひろです
遠藤と申します。
原です。
原です。
> 1. ComplexFloat を組込みにし、Complex を標準ライブラリとして提供する。
原です。
> 分かりににくかったですが、これは、ComplexFloat を含めた組込みの数体系が
こんばんは sheepman です。
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
Complex と ComplexFloat とクラスをふたつに分ける理由がどうに
原です。
まつもと ゆきひろです
原です。
[#34266] Ruby1.9 での $SAFE==4 時の autoload 動作 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#34272] patch for [ruby-core:14537] — wanabe <s.wanabe@...>
ワナベと申します。
[#34278] Re: [ruby-cvs:23187] Ruby:r15947 (trunk): * lib/generator.rb: removed obsolete library. [ruby-core:16233] — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
[#34285] Complex#scalar? returns false — "Kenta Murata" <muraken@...>
むらたです.
[#34313] Enumerable#find_index vs. Array#index — "Akinori MUSHA" <knu@...>
[ruby-talk:178495] が発端で Enumerable#find_index というのが
まつもと ゆきひろです
[#34352] patch for — wanabe <s.wanabe@...>
ワナベと申します。
[#34391] Preparing for 1.8.7-preview1 — "Akinori MUSHA" <knu@...>
延び延びになってしまいましたが、ようやく enumerator 関連、
[#34393] fluent comma — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34402] OpenSSL::SSL::SSLContext#set_params — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#34430] str_new() may create broken string — wanabe <s.wanabe@...>
ワナベと申します。
[#34460] patch for ruby-dev:34236 — wanabe <s.wanabe@...>
ワナベと申します。
[#34476] coerce with Rational and Complex — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34512] [ruby-core:16238]の検証 — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#34540] 0**-1 == 0 ? — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[ruby-dev:34239] MVM interface draft
なかだです。
先々週になりますが、ささださんといろいろ話し合いしてきました。そ
のうち、MVMのCインターフェースに付いての件です。
まだ漏れなどあるかもしれませんが、とりあえず。
= VM C API案
== 用語
とりあえず以下の用語を使うことにします。
--- エンジン
ドライバから呼び出されて、rubyの処理を行なうライブラリ。
--- ドライバ
エンジンを利用するアプリケーション。
rubyコマンド、erubyコマンド、mod_rubyなど。
== 初期化/実行
初期化処理は、プロセス全体に対するものと、VM単位に対するものに分
けられます。前者は、一プロセスで一回だけ、メインネイディブスレッ
ドで呼び出さなければなりません。
=== プロセス初期化
--- ruby_sysinit(int **argc, char ***argv)
システムごとに必要な初期化を行なう。
--- RUBY_INIT_STACK
メインネイディブスレッドのスタック情報を保存する。
=== VM初期化
--- ruby_vm_new(void)
新しいVMを作成する。ruby_init()は、新しいVMを作成した後、そ
の上のメインrubyスレッドも同時に作成する。
--- ruby_vm_parse_option(rb_vm_t *vm, int argc, const char *argv)
コマンドラインオプションをパースして、結果をvm内に保存する。
-eオプションまたはスクリプトをコンパイルして、メインスレッド
が最初に実行するコードとして保存する。
=== VM実行
--- ruby_vm_run(rb_vm_t *vm)
VMの実行を開始する。
exit statusを返す。
== 属性その他
ruby_vm_parse_option()はrubyコマンドの仕様にあわせているため、他
のドライバの目的には合うとは限りません。そのような場合、VMの作成
と実行の間に、必要なパラメータをセットすることになります。
--- ruby_vm_get_argv(VALUE vm)
vmに保存されたARGVを取り出す。
--- ruby_vm_set_argv(VALUE vm, int argc, VALUE *argv)
vmで使用されるARGVを設定する。
--- ruby_vm_init_env(VALUE vm, char **envp)
vmで使用される環境変数を設定する。
--- ruby_vm_getenv(VALUE vm, const char *name)
vm中の環境変数を取り出す。
--- ruby_vm_setenv(VALUE vm, const char *name, const char *value)
vm中の環境変数を設定する。
--- ruby_vm_get_pwd(VALUE vm)
vmのカレントディレクトリを取り出す。
--- ruby_vm_set_pwd(VALUE vm, const char *pwd)
vmのカレントディレクトリを設定する。
== ObjectSpace
各VMがネイティブスレッドで並行動作できるようにするため、それぞれ
独立したObjectSpaceを持ちます。結果として、あるVMで作られたオブ
ジェクトを別のVMに渡すことはできません。
== ネイティブスレッドインターフェース
ruby以外で作成されたネイティブスレッドからエンジンを実行するため
には、そのスレッドがruby VMのいずれかに登録されている必要があり
ます。一つのスレッドを複数のVMに登録することも可能ですが、同時に
実行できるのは一つのVMだけです。複数VM上で同時に動作することはで
きません。
また、同じネイティブスレッド上であっても、異なるVMのオブジェクト
を混ぜて使用することもできません。
--- ruby_vm_register_thread(VALUE vm)
ネイティブスレッドに対応するThreadインスタンスを作成して、VMに登録する。
--- ruby_vm_release_thread(VALUE vm)
Threadインスタンスからネイティブスレッドを解放する。
--- ruby_vm_enter_thread(VALUE vm)
rubyスレッドとしての動作を開始する。
--- ruby_vm_leave_thread(VALUE vm)
rubyスレッドとしての動作を終了する。
名前は未定ですが、ruby_vm_enter_thread()した状態でコールバックを
呼び出して、終了後にruby_vm_leave_thread()を実行するものも予定し
ています。
== プリコンパイル
--- ruby_vm_compile_file(const char *filename)
--- ruby_vm_compile_cstr(const char *src)
--- ruby_vm_compile_string(VALUE srcstring)
スクリプトをコンパイル済みデータに変換する。
--- ruby_vm_run_file(rb_vm_t *vm, const char *filename)
--- ruby_vm_run_cstr(rb_vm_t *vm, const char *src)
--- ruby_vm_run_string(rb_vm_t *vm, VALUE srcstring)
スクリプトをvm上で実行する。
--- ruby_vm_run_compiled(rb_vm_t *vm, compiled...)
コンパイル済みデータをvm上で実行する。
--- ruby_vm_run_cfun(rb_vm_t *vm, (*func)(), void*)
funcをvm上で実行する。
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦