From: Yui NARUSE Date: 2012-01-20T17:02:26+09:00 Subject: [ruby-dev:45140] [ruby-trunk - Feature #5820] Merge Onigmo to Ruby 2.0 Issue #5820 has been updated by Yui NARUSE. Ken Takata wrote: > 私としては、せっかく (?au) を入れたので使えないのはもったいないなと思います。Perlの他にはPythonでも /u 相当が使えることですし需要はあるでしょう。 > /u がぶつかる問題は、大文字で /A/U にするとか? /A /U は今度は Perl が /A /U を導入した時に困るので、2.0 で /u を deprecated にして、どこかで変更ですかねぇ。 > /d は確かに悩ましいですが、/d で 1.9 仕様とするか、1.9 仕様は破棄して /a をデフォルトにする(/d は無し)か、どちらかしかないのではないかと思っています。(/a で 1.9 仕様とするのは \b の挙動を考えると選択肢からは除外したい。) そうですね、/d で 1.9 ですかね。 > なお、#note-1 のマージ方法だと、enc ディレクトリ以下をコピーしていないため以下の制限があります。 > tool/enc-unicode.rb (と tool/CaseFolding.py) もマージが必要です。 https://github.com/nurse/ruby/tree/onigmo マージしました。 以下のような変更をしています。r34236 は未マージです。 * enc/cp932.c 内の sjis.c への参照を shift_jis.c へと変更 * enc/cp932.c から enc/windows_31j.c に rename * Windows-31J のエンコーディング定義を enc/shift_jis.c から enc/windows_31j.c に移動 * enc/koi8.c を削除 (KOI8ってエンコーディングは存在しないはず。これが何者なのかわからない) * enc/cp1251.c を削除 (Ruby では enc/windows_1251.c) > 8,9についてはJIS X 0208を基準にしているので、JIS X 0212や0213はどうするのかという課題があります。 まず、JIS X 0213 については、現在の Ruby は黙殺しています。 仮にサポートするとしても、Shift_JISX0213/EUC-JISX0213 などの 0213 系エンコーディングでの話でしょう。 また、SJIS 系エンコーディングでは JIS X 0212 を含むエンコーディングが存在しないのでこれも関係しません。 EUC-JP と eucJP-ms は JIS X 0212 を含むので、対応するのはありかもしれません。 ---------------------------------------- Feature #5820: Merge Onigmo to Ruby 2.0 https://bugs.ruby-lang.org/issues/5820 Author: Yui NARUSE Status: Assigned Priority: Normal Assignee: Yui NARUSE Category: M17N Target version: 2.0.0 Ruby 1.9 では正規表現エンジンや M17N の基盤として Oniguruma を用いています。 これを 2.0 では Oniguruma の改造版である、k-takata さんの Onigmo に置き換えようという話です。 https://github.com/k-takata/Onigmo/tree/tmp/ruby-2.0.x この取り込みによる影響は以下の通りです。 * 100%互換 (既存のテストが全て無修正で通る) * いくつかの新機能 [ruby-dev:44410] * 正規表現   * \K, \R, \X, (?(cond)yes|no), \g<0>, \g<+n>, (?au)   * Perl 5.10互換の名前参照(←Rubyには不要でしょう。) * Shift_JIS, EUC-JPで、全角アルファベットなどの大文字小文字同一視検索に対応。 * Shift_JIS, EUC-JPで、\p{Han}, \p{Latin}, \p{Greek}, \p{Cyrillic} に対応。 * 最適化 * 暗黙のアンカーによる最適化を実装。 * http://redmine.ruby-lang.org/issues/3568 で無効化された最適化を再度有効化。 現状は POSIX 文字クラスに非互換があり、それが解決されればマージ可能と認識しています。 -- http://bugs.ruby-lang.org/