PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
by
てきめん tekimen
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
PHPの次期バージョンはこの時期どうなって いるのか Internalsの開発体制について
Slide 2
Slide 2 text
自己紹介 てきめん ● https://tekitoh-memdhoi.info ● X: @youkidearitai ● https://github.com/youkideari tai ● PHP 8.4で色々な関数を作った – mb_trim – mb_ucfirst, mb_lcfirst – grapheme_str_split(new!) オレ
Slide 3
Slide 3 text
現状の振り返り ● https://github.com/php/php-src のmasterブランチが 開発バージョンです ● 最新バージョンは8.3です ● このうち、アクティブなバージョンは8.2と8.3です – 8.1はSecurity fixes onlyです ● 開発バージョンが8.4です
Slide 4
Slide 4 text
現状はこう
Slide 5
Slide 5 text
いつPHP 8.4と決まったの? ● PHP-8.3 branch creation – 2023年8月にPHP-8.3ブランチが作られてから、masterブランチの バージョンが8.4.0-devと仮に名付けられました ● Release Managers for PHP 8.4 – 今年3月上旬にPHP 8.4のリリースマネージャーの募集が行われ、 投票が行われています – このタイミングでスケジュールが公開されました
Slide 6
Slide 6 text
リリースサイクルについて ● PHPのリリースには、大きく分けて以下になります – 最初の半年 alpha, beta, RC など – アクティブリリースが2年 – セキュリティフィックスオンリーが1年 ● 後述しますがもしかするとここが2年になる可能性があります
Slide 7
Slide 7 text
PHP 8.4のスケジュール Alpha ● 6月6日 alpha1 ● 6月20日 alpha2 ● 7月4日 alpha3 ● 7月16日 feature freeze (新機能の開発終了)
Slide 8
Slide 8 text
PHP 8.4のスケジュール Beta ● 7月18日 beta1 ● 8月1日 beta2 ● 8月15日 beta3
Slide 9
Slide 9 text
PHP 8.4のスケジュール RC ● 8月29日 RC1 ● 9月12日 RC2 ● 9月26日 RC3 ● 10月10日 RC4 ● 10月24日 RC5 ● 11月7日RC6
Slide 10
Slide 10 text
PHP 8.4のスケジュール そしてリリース ● 11月27日 GA 🎉🎉🎉🎉
Slide 11
Slide 11 text
リリースマネージャーについて ● 先程のリリースサイクルを維持するのがリリースマ ネージャーの役割です – すなわち3年半立場を守ってねという責任が発生します ● リリースマネージャー経験済みの「ベテラン」1名と、 経験無しの「ルーキー」2名で構成されます – これを立候補で募り、選挙で選びます
Slide 12
Slide 12 text
立候補してみた ● やってみたかったので立候 補してみました ● 先程の「Release Managers for PHP 8.4」に返信すると、 候補の名前に載ります ● ルーキーが4人で投票となり ました
Slide 13
Slide 13 text
結果は16日にわかるのですが… ● ぼくは4番目ですね – 圧倒的最下位! ● まあ遠いですねー… ● 他の3人が素晴らしいので応援します – さきちさん(高町咲衣さん)も立候補し ています ● 2番目なので色々コミュニケーション 取ってくれてるしふさわしいと思う ● 正直ホッとしている
Slide 14
Slide 14 text
RFCによる変更の提案 ● RFCによってPHPにとって重大な変更の提案が行 われます ● Feature freezeという、機能追加の凍結まで行えま す – それ以降になったら次のバージョンです
Slide 15
Slide 15 text
RFCのやりかた ● https://wiki.php.net でアカウントを作ります ● まず、internalsに向けて「RFC Karma Request」というメー ルを投げ、作ったアカウントを提示します – こういう機能追加したいですなどと文を添えてください ● Karmaが付与されたらWikiを編集できます ● internalsとの議論は念入りなコミュニケーションをしましょう
Slide 16
Slide 16 text
Wikiの編集・RFCの作成 ● https://wiki.php.net/rfc/howto をよく読んで、RFC を作成しましょう – このスライドよりも上記のほうが正です、よく読みましょう ● 大雑把にいうと、RFCを作成したら、internalsに向けて メールを投げ、「Under Discussion」の状態にします – この状態を最低2週間以上続けます
Slide 17
Slide 17 text
RFCの投票 ● Under Discussionで徹底的に説明をして納得をしてもら えたようだという感じたならば、Vote(投票)に向かえます – 念入りにコミュニケーションを取りましょう ● 投票期間は2週間+αを置きます – なおこの間RFCの変更をしてはいけません(1回やりました) ● ここで2/3のYesが貰えれば可決です
Slide 18
Slide 18 text
実装 ● 可決したならば、実装に移ります – とはいえ、あらかじめPull Requestは示しておくとRFCの説得力 が増しますので、普通はあらかじめ作ります ● レビューを受けます ● masterにマージされます – これにてImplementedとなります – この後にバグ修正などが発生します
Slide 19
Slide 19 text
grapheme_str_splitの例 ● 書記素クラスター単位のstr_split関数の例です ● 「あれっ、Grapheme関数すくなくね?」と気づく – str_splitくらいあったら配列で処理しやすくなるんじゃ ないかなと思い立つ – PHPカンファレンス北海道2024での話でした
Slide 20
Slide 20 text
grapheme_str_splitの例 ● 実装のPull Requestを書きま す ● RFCの結果がまだなの で、Draft Pull Requestとして おきます – 先頭に「[RFC]」とかつけておくと 親切 – これは「ぼくがそうしてる」という だけです
Slide 21
Slide 21 text
grapheme_str_splitの例 ● (アカウントはRFCを記述できるよう になってたので)RFCのURLを決め ます ● WikiなのでRFCのURLに何もな かったらそこに書いていいわけです – URLをgrapheme_str_splitと決めま した ● そこで「こういう関数があったほうが いいと思います」という旨を記述しま す
Slide 22
Slide 22 text
Internalsにメールを投げる ● [Discussion]と先頭に 入れて
[email protected]
に メールを投げます ● 返事が来ると思います – これに答えていきましょ う
Slide 23
Slide 23 text
Under Discussionフェーズ ● WikiにRFCを記述した ら、Under Discussion フェーズに持っていきま す
Slide 24
Slide 24 text
投票フェーズ ● Under Discussionから何も返事が なくなり、2週間が経過したら投票 フェーズに入ります ● YesとかNoとか入れてくれます ● ここで2/3のYesを獲得しましょう ● この状態を2週間待ちます – 終了は自分で宣言できるので、2週 間+αとしましょう
Slide 25
Slide 25 text
投票終了 ● 終わって、2/3のYesを もらえたら「Accepted」 となります ● 精一杯の感謝を伝えま しょう
Slide 26
Slide 26 text
実装 ● Draft Pull Requestから 普通のPull Requestにし ます ● 色々やり取りをして Approveをもら い、masterにマージして もらったら終わりです! やったぜ!
Slide 27
Slide 27 text
masterブランチ ● masterブランチで使え るようになります ● これがPHP 8.4で使え るようになるわけです ね
Slide 28
Slide 28 text
ここまでが今までの話
Slide 29
Slide 29 text
RFC: Release cycle update ● https://wiki.php.net/rfc/release_cycle_update ● リリースサイクルを4年に伸ばすというもの – ほかにも色々ありますが基本的にはそういうRFC – 可決されるとPHP 8.4のEOLが2028年末になります ● PHP 8.1から適用になるらしいので来年末EOLですかね – 4月29日 00:00 UTCに結果が決まりますが、2/3のYesはクリアしそ うです
Slide 30
Slide 30 text
これをもとにすると
Slide 31
Slide 31 text
Alpha ● 7月4日 alpha1 ● 7月18日 alpha2 ● 8月1日 alpha3 ● 8月13日 feature freeze – すべてのRFCの投票が終わっている必要があります
Slide 32
Slide 32 text
Beta ● 8月15日 beta1 ● 8月29日 beta2 ● 9月10日 RFCで投票されたものがすべてマージさ れている期限 ● 9月12日 beta3
Slide 33
Slide 33 text
RC ● 9月24日 masterからPHP-8.4ブランチへカットされます – ここでは新機能が搭載されることはありません ● 9月26日 RC1 ● 10月10日 RC2 ● 10月24日 RC3 ● 11月7日 RC4
Slide 34
Slide 34 text
そしてリリース ● 11月21日 リリース 🎉🎉🎉🎉🎉 ● 2026年12月31日 バグ修正リリースの終了 – Security fixes onlyのはじまり ● ただしリグレッション(回帰)修正はありえる ● 2027年12月31日 リグレッションリリースの終了 ● 2028年12月31日 Security fixes onlyの終了、EOL
Slide 35
Slide 35 text
alpha ● alpha1から3まであります – 8月1日に最後のPHP 8.4.0alphaバージョンが出ます – この時点では機能追加はまだできます ● つまりFeature freezeの前です
Slide 36
Slide 36 text
beta ● betaは1から3まであります – beta1の前にFeature freezeがあります – beta3にはすべての可決されたRFCがマージされてい る必要があります
Slide 37
Slide 37 text
RC (Release Candidate) ● リリース候補版です – 機能の追加は当然なく、バグ修正などにあてがわれます – すでにPHP-8.4ブランチが出来上がっており、それをもと にしてRCバージョン番号がつけられます – RC1から4まであります ● 今までは1から6の事が多かったですが、7まで出たことがありま す
Slide 38
Slide 38 text
GA (General Available) ● 要はリリースです – こうしてPHPの新バージョンが日の目を見ることになり ます – ここまでで半年間の面倒を見ることになります
Slide 39
Slide 39 text
リリースの後 ● リリースされたら2年間のバグフィックスサポートと 2年間のセキュリティフィックスサポートがあるとい うことになります ● もしもこのRFCが可決されたらですが – まあ可決されるのでしょう
Slide 40
Slide 40 text
まとめ ● 現在のphp-srcのInternalsの動きをまとめました ● リリースサイクルが変更される可能性があります ● RFCを受け付けています – 機能追加したいなら急ごう、意外と時間を取られるため – 2週間の議論と2週間の投票で最低1ヶ月はかかる
Slide 41
Slide 41 text
おわり ご清聴ありがとうございました