[#45703] test_advise failure on GNU/Linux — Tanaka Akira <tanaka.akira@...>

今朝、気がついたのですが、手元で test_advise が失敗します。

11 messages 2012/06/05
[#45705] Re: test_advise failure on GNU/Linux — KOSAKI Motohiro <kosaki.motohiro@...> 2012/06/06

小崎です

[#45735] [ruby-trunk - Feature #6587][Open] proposal: adding new methods File.rootname and Pathname#rootname — "usa (Usaku NAKAMURA)" <usa@...>

14 messages 2012/06/14

[#45745] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult — SASADA Koichi <ko1@...>

見逃していました.

19 messages 2012/06/14
[#45747] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult — Yugui <yugui@...> 2012/06/15

2012/6/15 SASADA Koichi <ko1@atdot.net>:

[#45748] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult — SASADA Koichi <ko1@...> 2012/06/15

 ささだです.

[#45794] :new_pgroup and :pgroup option for spawn. — Tanaka Akira <akr@...>

process.c で気がついたのですが、spawn に Windows 用の :new_pgroup というオプションが

12 messages 2012/06/23
[#45800] Re: :new_pgroup and :pgroup option for spawn. — "U.Nakamura" <usa@...> 2012/06/25

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

[#45818] [ruby-trunk - Feature #6643][Open] io.seek(off, :end) — "akr (Akira Tanaka)" <akr@...>

30 messages 2012/06/25

[ruby-dev:45793] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult

From: SASADA Koichi <ko1@...>
Date: 2012-06-22 10:23:41 UTC
List: ruby-dev #45793
(2012/06/21 15:20), SASADA Koichi wrote:
>> > 
>> > * rb_eval_string_with_filename(VALUE string, VALUE fname);
>> > * rb_eval_string_with_filename_protect(VALUE string, VALUE fname, int* state);
>> > を追加、
>> > 
>> > という提案をします。異論が無ければあとでコミットしますが、特に追加する関数の名前について何かご意見(もっと良い名前)は無いでしょうか。
...
> もう少し考えさせて下さい.

 ええと,本当に欲しいのは rb_ なのか ruby_ なのか,ってところでまた迷っ
ています.迷いすぎ.

 下記,考えながら書いているので,もし間違いがあればご指摘下さい.


ruby_ と rb_ の原則の整理:
(1) ruby_ なのは組み込み用.組み込むアプリが直接呼ぶ API.
(2) rb_ なのは基本的に拡張ライブラリ用 API.下記の制限がある.
  (2-1) すでに VM が初期化済みでなければならない.
  (ruby_ な関数にも,そういうのあるなぁ)
  (2-2) GET_THREAD() で rb_thread_t で取れるスレッドの情報に登録された
        ネイティブスレッドと動かすネイティブスレッドが同じでないといけ
        ない.
  (2-3) SAVE_ROOT_JMPBUF() で囲まれた部分から呼ばれたものじゃないと
     まずい... かも.例外が発生したときに最終的にどうなるか決めている.
  (2-4) GVL を獲得していなければいけない.


 上記に書いていますが,(2-1) は ruby_ でも同じですね.(2-2) も,そうい
うところがある.(2-3),(2-4) が rb_eval_string() ではまりそうです.

 (2-3) については,rb_eval_string_protect() で問題無い気がする.(2-4)
は,スレッドを切り替えなければ自然とそうなると思われる.だから,とりあえ
ずいいのかな.


 こういう懸念がある,という上で,後で変えるかもしれないけど,そんときは
そんとき,ということで突っ込んで頂いてもいいような気がします.お願いでき
ますか? やって頂ける場合は,他の取り下げたコードの revert なども一緒に
やって頂ければ(私のほうで revert しようかと思ったら,何がどうだったかわ
からなくなって断念しました).



----

 アプリ組込みについて,面倒なことといえば,まだシグナルハンドラとかの話
がありますね.その辺も,もうちょっと柔軟に出来る様にしたいと思っています.


アプリ組込み方法(案)
(1) 初級 ruby_options() を使う(お勧め)

(2) 中級 rb_eval_string_protect() を使う

(3) 上級(なんか新しく作る,細かい API)

みたいな感じに,色々用途によって変更できるといいなぁ,と思っています.上
級は inits から自分で自由にやるようなのを想定.

 これについての TODO:

- 上級用の,初期化 API
- アプリ <-> Ruby の通信路(標準的な転送手段)
- 関係無いネイティブスレッド上で安全に Ruby を走らせる方法
- ドキュメント


-- 
// SASADA Koichi at atdot dot net


In This Thread

Prev Next