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

おわり ご清聴ありがとうございました