[#46329] [ruby-trunk - Feature #7252][Assigned] version number of 2.0 release — "usa (Usaku NAKAMURA)" <usa@...>

26 messages 2012/11/01

[#46350] RubySpecメンテナ — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

15 messages 2012/11/02
[#46352] Re: RubySpecメンテナ — Urabe Shyouhei <shyouhei@...> 2012/11/02

On 11/01/2012 07:43 PM, Yukihiro Matsumoto wrote:

[#46414] [ruby-trunk - Bug #7287][Open] please rename atomic.h which conflicts with /usr/include/atomic.h in Solaris10 — "ngoto (Naohisa Goto)" <ngotogenome@...>

10 messages 2012/11/06

[#46434] トラップハンドラで許されない操作はなにか — KOSAKI Motohiro <kosaki.motohiro@...>

GyRCPi46aiRHJDkbKEIKCltCdWcgIzcxMzRdIBskQiRyRDQkWSRGJCQkRj88SiUkSjtFTU1MZEJq

9 messages 2012/11/06

[#46440] [ruby-trunk - Bug #7300][Open] Hash#[] の挙動が 1.9.3 と異なっている — "hsbt (Hiroshi SHIBATA)" <shibata.hiroshi@...>

12 messages 2012/11/07

[#46477] Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...>

refinement を導入するときの性能に対する excuse が「method cache に殆どあ

20 messages 2012/11/11
[#46480] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/11

前田です。

[#46488] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...> 2012/11/12

 ささだです.

[#46491] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/12

前田です。

[#46493] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...> 2012/11/12

 ささだです.

[#46495] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/12

前田です。

[#46497] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...> 2012/11/12

(2012/11/12 18:20), Shugo Maeda wrote:

[#46501] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/12

前田です。

[#46513] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Nobuyoshi Nakada <nobu@...> 2012/11/14

なかだです。

[#46509] [ruby-trunk - Bug #7344][Open] gem pristine bigdecimal が失敗してしまう — "hsbt (Hiroshi SHIBATA)" <shibata.hiroshi@...>

31 messages 2012/11/13

[#46520] [ruby-trunk - Bug #7356][Open] ruby-2.0.0-preview1 で adlint-2.6.10 が性能劣化 — "yanoh (Yutaka Yanoh)" <yutaka@...>

11 messages 2012/11/15

[#46647] [ruby-trunk - Bug #7452][Assigned] Main thread is stopped after running finalizers if the main thread has a finalizer — "mrkn (Kenta Murata)" <muraken@...>

8 messages 2012/11/28

[ruby-dev:46366] Re: [ruby-trunk - Bug #2154][Assigned] filesystem encoding of UNIX

From: "U.Nakamura" <usa@...>
Date: 2012-11-02 11:32:03 UTC
List: ruby-dev #46366
こんにちは、なかむら(う)です。

In message "[ruby-dev:46310] Re: [ruby-trunk - Bug #2154][Assigned] filesystem encoding of UNIX"
    on Oct.29,2012 10:57:06, <[email protected]> wrote:
> その時点の記憶はすでにないのですが、おそらく、
> locale と異なる encoding でパス名を扱いたい場合に、
> 設定できるようにするためではないかと思います。
> 
> とくに指定しなければ、default external は locale から設定されるので、
> 「UNIXにおけるfilesystem encodingはlocaleである」というのはそれほど
> 変ではないのではないでしょうか。

ふむ。
とすると、本当は、filesystem encodingを明示して設定するAPIが
合ったほうがいいんでしょうかね。
2.0.0にも間に合わなわなさそうなので今は深入りを避けますが。


さて、ここで問題なのですが、localeがUTF-8だとして、

  p File.expand_path("a").encoding                             # A
  Encoding.default_external = Encoding::EUC_JP
  p File.expand_path("a").encoding                             # B
  p File.expand_path("a".encode(Encoding::SHIFT_JIS)).encoding # C

としたとき、A, B, Cはそれぞれどうなるべきでしょう?

filesystem encoding(=default_external)を尊重するなら、

  A: UTF-8
  B: EUC-JP
  C: EUC-JP

になるはずで、1.9.3-p286は実際そうなります。
一方で、実は現在のtrunkは引数のencodingを尊重しており、

  A: US-ASCII (script encodingがそうなので)
  B: US-ASCII
  C: Shift_JIS

になります。

この辺色々悶々としていてるのですが、現時点での私の考えとして
は、

  * ファイルシステムのencodingが原則として固定であるプラット
    フォーム(つまり例えばWindows)では、内部変換を行い、引数の
    encodingで結果を返す。

  * ファイルシステムのencodingが個々の利用者にゆだねられてい
    て、システム的にはバイト列として扱われているプラットフォ
    ーム(つまり普通のUnix)では、内部では単にバイト列として扱
    い、default_externalにforce_encodingして結果を返す。

とするのがよいのかなあ、と思っています。
プラットフォームによって挙動が違うのがやや残念ですが、結局こ
れが既存のスクリプトに最も影響を与えない方法なのかなあ、と...

皆さんどう思われますか。


それでは。
-- 
U.Nakamura <[email protected]>


In This Thread