From: SASADA Koichi Date: 2009-01-19T13:58:21+09:00 Subject: [ruby-dev:37787] Re: VMまわりのシンボルにも「rb_」を付けてほしい  ささだです. Tadashi Saito wrote:: > さて、rb_等のprefixが付いていないシンボルに対して何らかの措置をとるパッチを > 一通り投げました。それらは以下のようにしてチェックしたものです。 > > $ nm -gD libruby-trunk.so|grep -v ' U '| >> egrep -iv ' (rb|ruby|Init|onig|st|_)'| awk '{print $3}' > > この中でdln_*とnode*は何か理由がある、と聞いたので放置しておくとすると、 > 残りはYARVで導入されたもののようです。それらを以下に挙げます。 > > insn_make_insn_table > insns_name_array > iseq_build_from_ary > iseq_compile > iseq_load > iseq_translate_threaded_code > vm_collect_local_variables_in_heap > vm_cref > vm_debug_print_post > vm_debug_print_pre > vm_debug_print_register > vm_env_dump_raw > vm_get_insns_address_table > vm_get_ruby_level_caller_cfp > vm_get_ruby_level_next_cfp > vm_get_sourceline > vm_invoke_proc > vm_jump_tag_but_local_jump > vm_localjump_error > vm_make_env_object > vm_make_jump_tag_but_local_jump > vm_make_proc > vm_proc_dump_raw > vm_stack_dump_each > vm_stack_dump_raw > vm_stack_dump_raw_current > vm_stack_dump_th > vm_stack_to_heap > vm_thread_dump_regs > vm_thread_dump_state > > これらにも rb_ を付けていただけないでしょうか。 > > 以前ささださんにお会いした時、少しお話ししたのですが、これらは外部で利用して > ほしくないために、意図的に rb_ を省いているということでした。 > > しかし、「外部から使われたくない」ことと、rb_ がない(これまでの規約に反する) > ことで「名前がかぶる」という可能性は、分けて考える必要があるのではないで > しょうか。 > > たとえば皆さんご存知のとおり、VMという言葉は言語処理系に限らず、様々なレベルで > 使われる言葉です。よってvm_というprefixだけだと、どんなVMか分かりません。 > RubyVMを組み込んだ他の種類のVMが実装されれば、当然vm_というprefixが使われる > 可能性があるでしょう。もっと言えば、Virtual Machineかどうかさえ分かりません。 > > そういった可能性を考えず rb_ を省くのはあまりうれしくない、と自分は考えます。 > 「これはRubyである」というrb_ prefixを付けた上でならば、名前がぶつかれば > 「rb_はRubyで使われるから避けてね」と説明できるでしょうし、C APIの作者からも > わかりやすくなると思います。 > > それで、外部からの利用を意図しているAPIと区別がつかずに困る、というのであれば、 > それはドキュメントで明示するのが本筋ではないかと思うのですが、どうでしょうか。  この問題について,prefix を付けるのは agree だけれど,rb_ でいいのか, という議論がありました.で,内部で利用するためのものは prefix を分ける か,と考えて,じゃぁ rbi_ にしようか,という話もあったんですが,なんか しっくりしないねぇ,といって pending になっていました.  ただ,vm 関連の API は,公開していない構造体である rb_vm_t などを引数 に取ることから,滅多なことじゃ外からアクセスできんだろう,ということで, もう rb_ を付けてしまいました.  その辺が r21651, r21653, r21657, r21659, r21660 になります.  遅くなってしまって大変大変申し訳ないのですが,1.9.1 に間に合えばマージ してもらえればと思います>yugui さん  基本的に,挙動を変えない rename で,test-all の結果が変わらないことは debian/etch で確認しています.また,これらの API に依存している外部ライ ブラリも無いのではないかと思います(1.9 で追加されたということもあるので). *この問題は,rb_ を付けるだけでは足りないかもしれない微妙な問題も はらんでいますが,そのあたりはとりあえず無視で.例えば,st_, onig_  等の関数は本当に ruby 以外から使ってもいいのか,とか. -- // SASADA Koichi at atdot dot net