* PHP 5.4, 5.5 対応版リリースの提案 [#hda33a00]

- ページ: [[BugTrack2]]
- 投稿者: [[umorigu]]
- 優先順位: 重要
- 状態: 提案
- カテゴリー: 本体バグ
- カテゴリー: その他
- 投稿日: 2014-06-02 (月) 07:22:01
- バージョン: 1.4.7_notb (to 1.5.0 (仮))

** メッセージ [#z632a0b0]
こんにちは。umoriguと申します。いつもPukiWikiを利用させていただいております。
標準状態でPHP 5.4, 5.5 上で動作するリリース((バージョンにこだわりはありませんが仮に 1.5.0 としています))を提案します。

業務でPukiWikiを利用している立場では、スパム対策などの今後予定されている新機能はそれほど必要ではありませんが、
PHP 5.4 への対応は喫緊の課題になっています。
日本中でPukiWikiの5.4対応を待ち望まれている方は多い(特に業務利用において)と考え、この提案を行っています。

CVS HEAD からリリース済み 1.4.7_notb へ、一部変更のバックポートを行うアプローチをとりました。


現状の PukiWiki 最新リリースである 1.4.7_notb は、標準状態で PHP 5.4 で[[動作しません>BugTrack2/349]]。
[[BugTrack2/349]] において既に議論されてる通り、以下の3点の変更を行うことでPHP5.4に対応できます。

- (a) hex2bin がPHP組み込み関数に追加されたことに伴う Fatal: Cannot redeclare hex2bin() エラー
-- (a') (対応) hex2bin 関数のリネーム
- (b) htmlspecialchars() の挙動が変更されたことに伴う EUC_JP 版で日本語が表示されない問題
-- (b') (対応) [CVS版で解決済み] $encoding オプションを指定するPukiWiki独自関数 htmlsc への置き換え
- (c) Call-time pass-by-reference が廃止されたことに伴うエラー
-- (c') (対応) [CVS版で解決済み] Call-time pass-by-reference を使わないようにロジックを変更

ここで、2006年6月以降の pukiwiki CVS HEAD へのcommitをすべて調査・解析しました。(詳細については後述)
ここで、2006年6月以降の pukiwiki CVS HEAD へのcommitをすべて調査・解析しました。
([[BugTrack2/353/Appendix]] に解析結果を示します。)


この結果、リリース済みの 1.4.7_notb に対して以下の変更のみを適用することで、(b)(c)を解決し、PHP 5.4 上で動作することがわかりました。


- (b') の対応を行ったコミット
-- 440 f7cbc36 2011-01-25 15:01:01(GMT) henoheno htmlsc(): Just sugar for htmlspecialchars(), and a foundation
--- URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/f7cbc364781f14d16e4fb9e7187d38a3cd5f9842
- (c') の対応を行ったコミット
-- 25 7038314 2006-08-06 13:17:31(GMT) henoheno BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off  'Warning: Call-time pass-by-reference has been deprecated'  with array_walk (Patched by Ratbeta)
--- URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/7038314a904f40d32f274a25155eb73e1e766806
-- 56 ccbe4a1 2006-10-03 13:33:36(GMT) henoheno BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off  'Warning: Call-time pass-by-reference has been deprecated'  with array_walk (Patched by Ratbeta)
--- URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/ccbe4a18a8304cb7e78827da8e055a9887b00df8
-- 57 a05a72d 2006-10-03 14:16:31(GMT) henoheno A little cleanup: ...(以下略)
--- URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/a05a72d854c5c16e8c7aa25c30266f90922d7d5b
-- 74 6c31b10 2006-10-28 14:35:42(GMT) henoheno Warning: Call-time pass-by-reference has been deprecated
--- URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/6c31b10494503aeb1c147b5d501d555875d52935
-- 128 a869900 2007-02-10 06:21:53(GMT) henoheno Warning: Call-time pass-by-reference has been deprecated
--- URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/a8699001bd64901faacb2b88e375c84101e58d29


CVS版において変更がされていない(a)については、hex2bin 関数のリネームを行う必要があります。



実際に 1.4.7_notb 時点のソース(タグ: r1_4_7_notb) に対して上記の変更のみを取り込んだものを、以下(外部リンク: sourceforge.jp 内)に置きました。ブランチ名 branch_r1_5 としています。

URL: sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits?branch=branch_r1_5


*** リポジトリ構成に対する説明: [#l20a8658]

- PukiWiki リポジトリはCVSですが、今回の提案を行うため、gitリポジトリに変換しています。(sourceforge.jp の仕組み上、個人リポジトリはgitのみ作成できます)
- 1.4.7 リリース以降の CVS HEAD への変更をすべて branch_r1_6 としています。
- 今回提案リリース向けの変更を branch_r1_5 としています。


※ブランチ名は変更できますので、大きな意味はありません。

*** 変更点の説明 [#z47630e3]


- 708438b 2006-06-12 00:35:54 puiwikiadmin This commit was manufactured by cvs2svn to create tag 'r1_4_7_notb'.
-- 説明: r1_4_7_notb のタグを表す
-- sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/c11b96a1219ec8354cbb0e0188ab1ec230307b0c
- c11b96a 2014-05-29 00:58:31
- 2006-06-12 00:35:54 umorigu Rename 'hex2bin' to 'pkwk_hex2bin' because of PHP 5.4+ compatibility
sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits/c11b96a1219ec8354cbb0e0188ab1ec230307b0c
-- 説明: hex2bin を pkwk_hex2bin にリネーム -- (a')の対応
- 35aab06 2014-05-29 01:49:42 henoheno htmlsc(): Just sugar for htmlspecialchars(), and a foundation
-- 説明: "f7cbc36 2011-01-25 15:01:01(GMT) henoheno" の変更 を適用した -- (b')の対応
- bebfb74 2014-05-29 01:57:12 umorigu Replace 'htmlspecialchars' by 'htmlsc'
-- 説明: 35aab06 で対応しきれなかったもの(CVS版ではロジックの変更により存在していない部分など)に対する htmlsc 置換  -- (b')の対応
- 3af552e 2014-05-29 18:35:31 umorigu BugTrack2/343: Use ENT_COMPAT at htmlspecialchars
-- 説明: BugTrack2/343 への対応。1.4.7 との互換性を維持し、1.4.7からの変更を最小にするため、CVS版とは異なるアプローチ(ENT_COMPATの利用)を行った  -- (b')の対応
- 82e9b99  BugTrack2/182: With php.ini: allow_call_time_pass_reference = Off
-- 説明: "ccbe4a1 2006-10-03 13:33:36(GMT) henoheno" の変更 を適用した -- (c')の対応
- 8d7e725 2014-05-29 18:39:30 henoheno A little cleanup: ...(以下略)
-- 説明: "a05a72d 2006-10-03 14:16:31(GMT) henoheno" の変更 を適用した -- (c')の対応
- e34ba71 2014-05-29 18:39:31 henoheno Warning: Call-time pass-by-reference has been deprecated henoheno Warning: Call-time pass-by-reference has been deprecated
-- 説明: "a869900 2007-02-10 06:21:53 henoheno" の変更 を適用した -- (c')の対応




PukiWiki CVS版の変更は非常に注意深く行われており(関連の変更のみによって各コミットが構成されており、
無関係な変更が含まれていない)、変更点の抽出および1.4.7リリース版への適用は比較的容易に行うことができました。
このような運用を行われている開発者の方々に感謝します。


*** 提案ソースコードの取得 [#j37c1140]

提案の変更を適用したソースコードはgitがインストール済みの場合、

 $ git clone -b branch_r1_5 git ://git.pf.sourceforge.jp/gitroot/u/um/umorigu/pukiwiki15.git

※"git" と "://git" の間のスペースを除いてください。(PukiWiki-dev URL投稿制限のため)

とすることで取得できます。

これが最終版というわけではなく、実際のリリースに向けてはリリース番号などの変更が必要であろうと考えています。
一方、1.4.7_notb からの変更点の説明は最小限ですむと考えています。

またこの変更自体に致命的なバグが存在することも考えられます。
指摘があれば際は速やかに修正する用意があります。



*** 今後のリリース・マイルストーンについて(案) [#d3fc4b15]

PHP5.4, 5.5対応版については、1.5.0として、バージョン番号を変更するのが妥当と考えます。
2006年当時ではPHP4の対応は必須でしたが、現状新規に構築するシステムで
PHP4を採用することは考えづらいことから、サポートPHPバージョンをPHP5.x として
ただし、1.5.xについては、branch_r1_6 からのバックポートを含む、バグ修正などの
メンテナンスリリースという位置づけです。

スパム対策など、現在 CVS HEAD (および branch_r1_4_7) に追加された新機能は
重要なもので、PukiWikiの価値をさらに高めるものになると考えます。
これらは、引き続き branch_r1_6 のようなブランチで開発を続け、
完成したところで将来の version 1.6 または version 2.0 としてリリースすることを提案します。
これらは当初予想されていたよりもはるかに大きく重要な機能であり、完成すれば単体でメジャーバージョンをつけるに値する価値のあるものであると認識しています。


*** まとめ [#pac70429]

- PukiWikiのPHP5.4,5.5対応は非常に望まれていることであり、公式にリリースを行ってほしい。
- そしてそれは既に広く使われ、非常に安定している 1.4.7_notb ベースでPHP5.4対応を行うのが望ましい。
- この対応(CVS HEADからのバックポート)を行った。 sourceforge.jp/users/umorigu/pf/pukiwiki15/scm/commits?branch=branch_r1_5
- 現在の CVS HEAD は将来のリリース(v1.6 or v2.0)に向けた開発ブランチとする提案。


--------

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.018 sec.

SourceForge