[#45085] [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC — Narihiro Nakamura <authorNari@...>

11 messages 2012/01/04

[ruby-dev:45134] [ruby-trunk - Feature #5820] Merge Onigmo to Ruby 2.0

From: Ken Takata <kentkt@...>
Date: 2012-01-15 05:38:09 UTC
List: ruby-dev #45134
Issue #5820 has been updated by Ken Takata.


私としては、せっかく (?au) を入れたので使えないのはもったいないなと思います。Perlの他にはPythonでも /u 相当が使えることですし需要はあるでしょう。
/u がぶつかる問題は、大文字で /A/U にするとか?

/d は確かに悩ましいですが、/d で 1.9 仕様とするか、1.9 仕様は破棄して /a をデフォルトにする(/d は無し)か、どちらかしかないのではないかと思っています。(/a で 1.9 仕様とするのは \b の挙動を考えると選択肢からは除外したい。)

なお、#note-1 のマージ方法だと、enc ディレクトリ以下をコピーしていないため以下の制限があります。

1. Unicode系エンコーディングで、\X, \R が仕様通りに動作しない。(OnigEncodingType にflagsメンバを追加して、それを参照しているため。)(鬼雲新機能)
2. Unicode系エンコーディングで、\p{In_XXX} によるUnicodeブロック名が使えない。(鬼雲新機能)
3. Unicode系エンコーディングで、大文字小文字変換テーブルがUnicode 6.0に対応していない。(鬼雲新機能)
4. Unicode系エンコーディングで、\p{C} が正しくない。(\p{Cn} の範囲が含まれていない。)(Ruby 1.9のバグ)
5. Unicode系エンコーディングで、\p{LC} (\p{Cased_Letter}) が使えない。(鬼雲新機能)
6. Unicode系エンコーディングで、本来は内部実装用の \p{NEWLINE} が使えるようになってしまっている。(鬼車5.9.2のバグ(?))
7. Unicode系エンコーディングで、なぜか 0x09~0x0d が \p{Print} に含まれている。(鬼車5.9.2のバグ(?))
8. sjis/euc_jpで、全角アルファベット、キリル文字、ギリシャ文字の大文字小文字同一視検索ができない。(鬼雲新機能)
9. sjis/euc_jpで、\p{Han}, \p{Latin}, \p{Greek}, \p{Cyrillic} が使えない。(鬼雲新機能)

8,9についてはJIS X 0208を基準にしているので、JIS X 0212や0213はどうするのかという課題があります。
tool/enc-unicode.rb (と tool/CaseFolding.py) もマージが必要です。
----------------------------------------
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/

In This Thread