PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
by
てきめん tekimen
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
おわり ご清聴ありがとうございました