re2 repacement for Oniguruma
https://gist.github.com/gwtnb/7e813cf1d18358a869fd
- UTF-8有効
- スレッドセーフでビルドされていること
- RPM: oniguruma-devel oniguruma
- Ubuntu: libonig-dev libonig2 (開発者ならlibonig2-dbgも入れよう)
このとき鬼車は利用しない。排他的。
./waf configure --enable-re2jubatus/jubatus#361
- 鬼車 公式 最新版 5.9.4(2013-04-04)
- Ubuntu 12.04, SF 6.4共に 5.9.1 をバイナリ提供
5.9.x?でOKかな。
-
作業ブランチ (鬼車がないとき、 --enable-re2オプションを加えてocnfigureすること)
-
https://github.com/jubatus/jubatus/tree/feature/oniguruma
-
やること:設定ファイルに記述した正規表現の記法は変更せず、実装だけre2から鬼車へ置き換える
-
--enable-re2 オプションを加えたとき、re2の代わりに鬼車を利用する(排他的、どちらか片方を有効にさせる)
-
柏原前準備で作業したこと
-
wscriptの修正: --enable-re2オプション, onigurumaライブラリのチェック
-
re2_??というクラス名から、 regexp_matcher, regexp_filter へ変更
-
regexp_matcher, regexp_filterヘッダの作成
-
やること
-
鬼車のマッチャとフィルターを作成する: onig_matcher, onig_filter のcpp, hpp
-
正規表現の設定をre2(デフォルト)にあわせる
-
実装方針 Onigurumaの利用(たぶん)
-
Re2::FullMatch → マッチしたサイズが文字列全体かチェックすればよさげ
-
Re2::Replace → マッチした部分の置換を手動で実装 かな
-
re2 デフォルトのオプションに気をつける(UTF8有効である) http://code.google.com/p/re2/source/browse/re2/re2.h#506
-
TODO: re2_splitter (plugin) も鬼車移植するか鬼車版のshared object作るようにしないと
- regex_??ヘッダに onig_??かre2_?? のどちらか含まれるように書いちゃった。これらヘッダはインストールしないから問題ない?
- jubatus.pc.in にリンク対象として、re2などの依存を書いてない気がする
- re2のデフォルト設定は、鬼車の使い方で互換性を維持できるか、どこまでカバーするか
- テストコード内でデータを増やすなりetc
RHEL は optional-rpms リポジトリ (インストール直後はデフォルト無効) を有効にする必要がある点、ドキュメントにしましょう。
CentOS/SL はデフォルトのリポジトリで OK なはずです。