[PHP-dev 26] Re: ZendのSJIS 対応パッチを作ってみました

Masaki Fujimoto php-dev@php.gr.jp
Wed, 04 Jul 2001 10:21:46 +0900


ふじもとです。

On Tue, 03 Jul 2001 11:50:59 -0500
Rui Hirokawa <louis@cityfujisawa.ne.jp> wrote:

> 
> 廣川@ハンツビルです。
> 
> Shift_JISのパッチですが出張中でMS-Windows環境でのコンパイルができないの
> で、まだ試せていません。
> 時間があったらLinux環境だけでもチェックしてみます。
> 
> 帰ったらMS-Windows版のバイナリを作ってみようと思います。

すみません、このパッチはいってみればαみたいなもので不備な点がたくさんあ
ります。ZTSに対応していないのもその一つです。というわけでWin32ではまだ動
作しないと思います(今週末にでも対応しようとは思っていますが)。

> 
> このパッチですが、
> Zendの方でもZend engine2に向けてAPIの見直しに入っているようですので、
> パッチを投げてみる価値はあるかもしれません。
> (PHP3みたいにローカルなパッチを作るのは避けたいですし。)

Zend Engine2になるのですね。初耳です。いいことを教えていただきました。

> デフォルトの状態でのパフォーマンスを落とすようだと採用されないかもしれな
> いですが、SJIS以外の動作に影響がほとんどないようでしたら受け入れられやす
> いと思います。

うーん、これに関してはいろいろ考えていたのですが結構むずかしいです。Zend
Engineバージョン1.06(最新は1.07ですね)のみに対応するのでしたら力技でなん
とかなるのですが、これをやると状態遷移がちょこっと変わると、SJISパッチも
一から書き直し、ということになりかねませんので...
また、エンコーディング自動検出部分に関してはどうしてもパフォーマンスに影
響せざるを得ないですし。

となると、HAVE_MBSTRINGかMBSTR_ENC_TRANS(もしくは新たなオプション)を見て
コンパイル時に決めるしかないでしょうか?

一応これに関しては暇をみてベンチマークしてみます。

なにはともあれ、パッチを投げるにしても

- 十分なテスト
- ベンチマーク
- ZTS対応
- CXXでのコンパイル対応(zend_language_scanner_cc.ccの変更)
- エンコーディング自動検出部分の改良

が必須です。特にエンコーディング自動検出部分はLATIN1等での動作が怪しいの
でmbstringのソース等を参考にして速く正確になるように改良する予定です。8
月中くらいにできるとよいのですが。

# その前にZend社が対応してくれたら、嬉しいような悲しいような

ついでですが、スクリプトのエンコーディング自動変換機能に関しては只今悩み
中です。この処理はZend Engineの中(yyinputのwrapper)で行うのが望ましいと
思うのですが、Zend Engineがphp.iniを読みに行くのは非常にためらわれるので
す(というか、許されないとおもわれます)。

何かよい考えがおありでしたらお聞かせください。

長々とすみませんでした。

--
Masaki Fujimoto
fujimoto@studio.co.jp
http://www.studio-m.com/