[#33948] Schedule for the 1.8.7 release — "Akinori MUSHA" <knu@...>
Hi, developers,
[#33955] --encoding affects script encoding — sheepman <sheepman@...>
こんばんは sheepman です。
なかだです。
[#33962] Ruby1.9.0でのインタプリタ組み込みについての質問 — Masayuki Yamaguchi <Yamaguchi.Masayuki@...>
山口と申します。
[#33966] Re: [ruby-cvs:22881] Ruby:r15644 (trunk): * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_chomp): test — Tanaka Akira <akr@...>
In article <200802291457.m1TEv6nh008515@ci.ruby-lang.org>,
まつもと ゆきひろです
[#33974] Test::Unit::Collector::Dirがtest_*.rb以外集めてくれない — "Ken Date" <itacchi@...>
こんにちは、伊達です。
[#33983] Re: [ruby-cvs:22913] Re: Ruby:r15674 (trunk): * gc.c (add_heap): sort heaps array in ascending order to use — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
In article <E1JWAV5-0001MG-9W@x61.netlab.jp>,
[#34011] Should --verbose be equal to -v ? — Yugui <yugui@...>
Yuguiです。
まつもと ゆきひろです
西山和広です。
Yuguiです。
[#34020] MurmurHash problem — Nobuyoshi Nakada <nobu@...>
なかだです。
[#34030] uint32_t — KIMURA Koichi <kimura.koichi@...>
木村です。
[#34037] Ruby performance gains on SPARC — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#34067] Array#take,take_while,drop,drop_whlie — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34068] lgamma_r requires _REENTRANT on Solaris — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34077] 異なるエンコーディングだと同じバイト列でも==にならない件 — rubikitch@...
るびきちです。
[#34086] extend spawn to change attributes of child process. — Tanaka Akira <akr@...>
spaen, system, exec, IO.popen で、起動する子プロセスの属性を
[#34093] 拡張ライブラリ初期化中でのmodule_eval — Kouhei Sutou <kou@...>
須藤です。
[#34095] (再送) Cygwin で Resolv.getaddress が失敗する — Kouhei Yanagita <yanagi@...>
こんにちは。柳田です。
こんばんは、植田と申します。
柳田です。
[#34105] rational.rb, complex.rb and mathn.rb — Tadayoshi Funaba <tadf@...>
rational と complex が組み込みになったことで、lib/mathn.rb の意義は薄
現時点で rational.rb と complex.rb を残しているのは、それが無難だから
で、かなり選択肢を絞った叩き台です。
けいじゅ@いしつかです.
原です。
> 私も Complex の組み込みは Rational とは比較にならないくらい、仕様が決め
まつもと ゆきひろです
> Mathモジュールは伝統的にlibmのラッパーであったので、それを逸
原です。
> (1) (-8)**Rational(1,2) は複素数1.0+1.7320508*i
[#34109] LP64: date.rb:321:in `convert': integer 86400000000000 too big to convert to `int' (RangeError) — Tanaka Akira <akr@...>
LP64 なマシンで test-all が動かなくなっています。
[#34144] [質問2点] C からの定数参照 & thread switching コストの低減 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#34158] Complex組み込み — Masahiro TANAKA <masa16.tanaka@...>
Complexが組み込みになるそうですが、これはcomplex.rbを踏襲して、
原です。
> 今までの Complex は、complex.rb にほぼ残して、たとえば Rational 成分
原です。
> そうです。Complex が難しい、という話を書いておくと、
まつもと ゆきひろです
> |僕としては、/ 演算子の振舞いについて前向きに検討してほしいです。
まつもと ゆきひろです
> ふむ。では、/ のふるまいを
まつもと ゆきひろです
> |僕は、quo がいいと思います。
まつもと ゆきひろです
> となるようですが、別の実装として、
田中です。
> 最初に言っておきますが、気を悪くされたのならすみません。
村田です.
[#34159] ruby-trunk Marshal.dump bug — nagachika <rucila@...>
nagachika と申します。
[#34163] Array#shift/unshift の高速化 — wanabe <s.wanabe@...>
ワナベと申します。
[#34189] Re: [ruby-cvs:23106] Re: Ruby:r15866 (trunk): * numeric.c (num_quo): should convert its operand to Rational. — Tadayoshi Funaba <tadf@...>
間違って送ったので、再送。
> > > Log:
[ruby-dev:34081] Re: 異なるエンコーディングだと同じバイト列でも==にならない件
成瀬です。
2008/3/18 <rubikitch@ruby-lang.org>:
> 僕としては、エンコーディングは空気のような存在であるべきだと思っています。
エンコーディングは空気ではありません、文字列の同定に必要不可欠な情報です。
極端なたとえですが、分数の分母みたいなものです。
日本語だけでは同じバイト列で違う意味というケースが想像しづらいかもしれませんが、
例えば ISO 8859 シリーズのエンコーディングを持つ文字列が入り乱れている場合には、
ISO-8859-1 の \xC0 と ISO-8859-2 の \xC0 で == が成立しては困ります。
> Ruby 1.9では同じバイト列であっても異なるエンコーディングの場合は == にはなりません。
> 方向性としては正しいかもしれませんが、ハマるケースが多いのではないでしょうか?
よって、必要な情報が落ちているのですから、ハマるべくしてはまっているのだからしょうがない、
ということになります。といっても、おそらく ISO-8859-1 の \xC0 と ISO-8859-2 の \xC0 で
== が成立してしまう場合でのハマり方に比べればはるかに浅いものでしょう。
> String#inspectがencoding情報を表示しない以上、
> 「同じ文字列なのになんで==にならないの!?おかしい!」と思う人が多いと思います。
String#inspect は永続化用のメソッドではありませんから。
たぶん inspect で encoding が表示されてもうれしくないんじゃないですかねぇ。
String#dump あたりだとうれしくなる人もいそうですけれど。
> 異なるエンコーディングの文字列を結合できないのは当然だと思いますが、
> せめて == での比較は許してもいいのではないでしょうか?
> Rubyの == はFixnumとFloatの比較を許すなど空気を読んでくれる演算子だと思っていますが、
> 現状の String#== は厳密すぎると思います。
> より厳密な比較ならばeql?がありますし。
String は基本的に文字列の比較なのですから、文字列の比較の比較であるべきでしょう。
文字列の比較がどうあるべきかを考えれば挙動は決まってきます。
# 方向性としては、むしろ EUC-JP の "あ" と Shift_JIS の "あ" で == が成立するとか、
# そっちの方向に進むのがあるべき姿じゃないかと。
というわけで、バイト列の比較が欲しいのなら String を ASCII-8BIT にするか、
さもなくばバイト列としての比較を行う新しい方法を提案する方が妥当でしょう。
> いちいちforce_encodingをつけるのも気持ち悪いですし。
経験的に、いちいちつけないといけない場合があれば、
それはそれ以前の段階が間違っているサインであることが多いです。
> たとえばネットワークから読み込んだときサーバーが実際と異なるcharsetを吐き出した場合とか。
> 身近な例では何気なく下のようなコードを書いた場合です。
>
> # -*- coding: euc-jp -*-
> # 日本語を含むコード
> RUBY_VERSION # => "1.9.0"
> RUBY_RELEASE_DATE # => "2008-03-14"
> GZIP_MAGIC = "\x1F\x8B"
> open("/tmp/compressed.txt.gz", "r") do |f|
> magic = f.read(2) # => "\x1F\x8B"
> magic == GZIP_MAGIC # => false
> if GZIP_MAGIC.respond_to? :encoding
> GZIP_MAGIC.encoding # => #<Encoding:EUC-JP>
> magic.encoding # => #<Encoding:ASCII-8BIT>
> end
> end
これの場合は、
> GZIP_MAGIC = "\x1F\x8B".force_encoding("ASCII-8BIT")
が正解ですね。
これだけなら妥協できる範囲だと思いますがいかがでしょう。
なお、ここの force_encoding が面倒ならば、バイト列リテラルの提案という手もあります。
--
成瀬ゆい
naruse@airemix.com