From: Nobuyoshi Nakada Date: 2008-04-05T10:36:53+09:00 Subject: [ruby-dev:34256] Re: MVM interface draft なかだです。 At Fri, 4 Apr 2008 05:41:44 +0900, Yukihiro Matsumoto wrote in [ruby-dev:34247]: > |> --- ruby_vm_set_pwd(VALUE vm, const char *pwd) > > |> vmのカレントディレクトリを設定する。 > > |このあたりのAPIは、該当VMを実行するスレッド(ruby_vm_runの呼び出し前後と > > |いうことになるのかな)からの呼び出し縛りなどありますか? この辺はvm_run以降は不可と考えています。あくまで初期状態の設定だ けなので。 > > というか、そもそもカレントディレクトリはプロセスごとの情報で > > すべてのスレッドで共有されるのに指定できる意味があるんでしょ > > うか。それとも相対パスを伴うすべての操作に手を入れて、スレッ > > ドごとにカレントディレクトリを持てるようにするのかな。 openat系のある環境ではそれ、なければカレントディレクトリをVMかス レッドごとに持たせようかと思ってます。 > > その場合でもpwd(print working directory)よりはcwd(current > > working directory)の方が良いと思います。 getpwdのpはpresentじゃありませんでしたっけ。 #ついでに一緒に At Fri, 4 Apr 2008 00:10:17 +0900, arton wrote in [ruby-dev:34244]: > > Rubyで実行すれば良いとも思いますが、VMを分割することで実行コンテキストを > > 分けたWebアプリケーションで、メモリー上に保持するセッション情報を交換す > > る、あるいはvmを途中から追加するというシナリオを考えると、オブジェクトの > > VM間のコピーまたは移動を行うCのAPIが用意されているほうが望ましく思います。 それは忘れてましたが、今のところ検討課題です。 > > 危険なオペレーションとなる可能性は承知していますが、エンジン側で用意した > > 監視スレッド(ruby_vm_enter_threadしたスレッドとは異なるスレッド)から、 > > 実行中のvm(スレッド)をできるだけ安全に殺すための > > ruby_vm_shutdown(VALUE vm); > > あるいは > > ruby_vm_kill(VALUE vm); > > せめて > > ruby_vm_raise_exception(VALUE vm, VALUE exception); > > を用意して欲しいです(しかも、Win32で実行可能なようにシグナルに頼らずに)。 シグナルも抽象化して統合できるような、イベントハンドリングの機構 を用意しようという考えはあります。VM間通信についてはまだ具体的に 決まっているわけではなくて、ささださんとは「とりあえずはdrubyモ デルでもいいんじゃなかろうか」という話をしています。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦