[#34261] ComplexFloat — "Kenta Murata" <muraken@...>

村田です.

117 messages 2008/04/06
[#34280] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

村田です.

[#34286] Re: ComplexFloat — Nobuyoshi Nakada <nobu@...> 2008/04/10

なかだです。

[#34288] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34290] Re: ComplexFloat — "U.Nakamura" <usa@...> 2008/04/10

こんにちは、なかむら(う)です。

[#34293] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34296] Re: ComplexFloat — "U.Nakamura" <usa@...> 2008/04/10

こんにちは、なかむら(う)です。

[#34298] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34300] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/10

In article <[email protected]>,

[#34301] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34303] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/10

まつもと ゆきひろです

[#34314] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/10

利点としては、拡張ライブラリが書きやすい、ということ。正当化の理由とし

[#34316] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34317] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/10

> 私にはいびつな進化という感じはしません.むしろ,せっかく C で実装できるのに

[#34318] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34322] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/10

まつもと ゆきひろです

[#34328] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/11

むらたです.

[#34331] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/11

まつもと ゆきひろです

[#34340] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/11

むらたです.

[#34341] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/11

まつもと ゆきひろです

[#34362] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34363] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/12

In article <[email protected]>,

[#34367] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34368] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/12

In article <[email protected]>,

[#34364] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/12

まつもと ゆきひろです

[#34366] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34386] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/13

まつもと ゆきひろです

[#34415] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/15

むらたです.

[#34439] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/17

原です。

[#34442] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/17

まつもと ゆきひろです

[#34451] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/18

原です。

[#34455] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/18

> 1. ComplexFloat を組込みにし、Complex を標準ライブラリとして提供する。

[#34457] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/20

原です。

[#34458] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/20

> 分かりににくかったですが、これは、ComplexFloat を含めた組込みの数体系が

[#34502] Re: ComplexFloat — sheepman <sh@...> 2008/04/24

こんばんは sheepman です。

[#34601] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/05/07

まつもと ゆきひろです

[#34603] Re: ComplexFloat — keiju@... (石塚圭樹) 2008/05/07

けいじゅ@いしつかです.

[#34614] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/05/08

まつもと ゆきひろです

[#34621] Re: ComplexFloat — keiju@... (石塚圭樹) 2008/05/08

けいじゅ@いしつかです.

[ruby-dev:34239] MVM interface draft

From: Nobuyoshi Nakada <nobu@...>
Date: 2008-04-03 13:06:32 UTC
List: ruby-dev #34239
なかだです。

先々週になりますが、ささださんといろいろ話し合いしてきました。そ
のうち、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はできる。
    中田 伸悦

In This Thread

Prev Next