Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について ...
Search
てきめん tekimen
PRO
April 13, 2024
Programming
1
490
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
PHPカンファレンス小田原の資料になります
てきめん tekimen
PRO
April 13, 2024
Tweet
Share
More Decks by てきめん tekimen
See All by てきめん tekimen
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
44
PHP Internals わいわい #1 の資料
youkidearitai
PRO
1
1k
mb_trim関数を作りました
youkidearitai
PRO
1
680
文字とはなにか - PHPの文字コード処理について - PHP Lovers Meetup #5
youkidearitai
PRO
1
210
はじめてのOSSコントリビュート
youkidearitai
PRO
11
3.5k
文字とはなにか - PHPの文字コード処理について -
youkidearitai
PRO
0
680
現在のmbstringの立ち位置 これからどうなっていくのか
youkidearitai
PRO
0
220
PHP 8.3のmbstringの進化を見てください - コントリビューターとしてのかかわり -
youkidearitai
PRO
0
1.2k
PHP 8.2と8.1で取り込まれたプルリクエストについて
youkidearitai
PRO
0
320
Other Decks in Programming
See All in Programming
Arm移行タイムアタック
qnighy
0
390
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
2.9k
Swift Testing - iPlayground
chiaoteni
0
130
romajip: 日本の住所CSVデータを活用した英語住所変換ライブラリを作った話
sangunkang
0
2.2k
事業成長を爆速で進めてきたプロダクトエンジニアたちの成功談・失敗談
nealle
3
950
「天気予報があなたに届けられるまで」 - NIFTY Tech Talk #22
niftycorp
PRO
0
130
Discord Bot with AI -for English learners-
xin9le
0
100
flutterkaigi_2024.pdf
kyoheig3
0
350
as(型アサーション)を書く前にできること
marokanatani
10
3k
Vapor Revolution
kazupon
2
2.4k
AWS AppSyncを用いた GraphQL APIの開発について - NIFTY Tech Talk #22
niftycorp
PRO
0
100
イマのCSSでできる インタラクション最前線 + CSS最新情報
clockmaker
5
3.7k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
50
7.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
150
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Fireside Chat
paigeccino
34
3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Being A Developer After 40
akosma
87
590k
How STYLIGHT went responsive
nonsquared
95
5.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Visualization
eitanlees
145
15k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
760
Transcript
PHPの次期バージョンはこの時期どうなって いるのか Internalsの開発体制について
自己紹介 てきめん • https://tekitoh-memdhoi.info • X: @youkidearitai • https://github.com/youkideari tai
• PHP 8.4で色々な関数を作った – mb_trim – mb_ucfirst, mb_lcfirst – grapheme_str_split(new!) オレ
現状の振り返り • https://github.com/php/php-src のmasterブランチが 開発バージョンです • 最新バージョンは8.3です • このうち、アクティブなバージョンは8.2と8.3です –
8.1はSecurity fixes onlyです • 開発バージョンが8.4です
現状はこう
いつ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のリリースマネージャーの募集が行われ、 投票が行われています – このタイミングでスケジュールが公開されました
リリースサイクルについて • PHPのリリースには、大きく分けて以下になります – 最初の半年 alpha, beta, RC など –
アクティブリリースが2年 – セキュリティフィックスオンリーが1年 • 後述しますがもしかするとここが2年になる可能性があります
PHP 8.4のスケジュール Alpha • 6月6日 alpha1 • 6月20日 alpha2 •
7月4日 alpha3 • 7月16日 feature freeze (新機能の開発終了)
PHP 8.4のスケジュール Beta • 7月18日 beta1 • 8月1日 beta2 •
8月15日 beta3
PHP 8.4のスケジュール RC • 8月29日 RC1 • 9月12日 RC2 •
9月26日 RC3 • 10月10日 RC4 • 10月24日 RC5 • 11月7日RC6
PHP 8.4のスケジュール そしてリリース • 11月27日 GA 🎉🎉🎉🎉
リリースマネージャーについて • 先程のリリースサイクルを維持するのがリリースマ ネージャーの役割です – すなわち3年半立場を守ってねという責任が発生します • リリースマネージャー経験済みの「ベテラン」1名と、 経験無しの「ルーキー」2名で構成されます –
これを立候補で募り、選挙で選びます
立候補してみた • やってみたかったので立候 補してみました • 先程の「Release Managers for PHP 8.4」に返信すると、
候補の名前に載ります • ルーキーが4人で投票となり ました
結果は16日にわかるのですが… • ぼくは4番目ですね – 圧倒的最下位! • まあ遠いですねー… • 他の3人が素晴らしいので応援します –
さきちさん(高町咲衣さん)も立候補し ています • 2番目なので色々コミュニケーション 取ってくれてるしふさわしいと思う • 正直ホッとしている
RFCによる変更の提案 • RFCによってPHPにとって重大な変更の提案が行 われます • Feature freezeという、機能追加の凍結まで行えま す – それ以降になったら次のバージョンです
RFCのやりかた • https://wiki.php.net でアカウントを作ります • まず、internalsに向けて「RFC Karma Request」というメー ルを投げ、作ったアカウントを提示します –
こういう機能追加したいですなどと文を添えてください • Karmaが付与されたらWikiを編集できます • internalsとの議論は念入りなコミュニケーションをしましょう
Wikiの編集・RFCの作成 • https://wiki.php.net/rfc/howto をよく読んで、RFC を作成しましょう – このスライドよりも上記のほうが正です、よく読みましょう • 大雑把にいうと、RFCを作成したら、internalsに向けて メールを投げ、「Under
Discussion」の状態にします – この状態を最低2週間以上続けます
RFCの投票 • Under Discussionで徹底的に説明をして納得をしてもら えたようだという感じたならば、Vote(投票)に向かえます – 念入りにコミュニケーションを取りましょう • 投票期間は2週間+αを置きます –
なおこの間RFCの変更をしてはいけません(1回やりました) • ここで2/3のYesが貰えれば可決です
実装 • 可決したならば、実装に移ります – とはいえ、あらかじめPull Requestは示しておくとRFCの説得力 が増しますので、普通はあらかじめ作ります • レビューを受けます •
masterにマージされます – これにてImplementedとなります – この後にバグ修正などが発生します
grapheme_str_splitの例 • 書記素クラスター単位のstr_split関数の例です • 「あれっ、Grapheme関数すくなくね?」と気づく – str_splitくらいあったら配列で処理しやすくなるんじゃ ないかなと思い立つ – PHPカンファレンス北海道2024での話でした
grapheme_str_splitの例 • 実装のPull Requestを書きま す • RFCの結果がまだなの で、Draft Pull Requestとして
おきます – 先頭に「[RFC]」とかつけておくと 親切 – これは「ぼくがそうしてる」という だけです
grapheme_str_splitの例 • (アカウントはRFCを記述できるよう になってたので)RFCのURLを決め ます • WikiなのでRFCのURLに何もな かったらそこに書いていいわけです – URLをgrapheme_str_splitと決めま
した • そこで「こういう関数があったほうが いいと思います」という旨を記述しま す
Internalsにメールを投げる • [Discussion]と先頭に 入れて
[email protected]
に メールを投げます • 返事が来ると思います – これに答えていきましょ
う
Under Discussionフェーズ • WikiにRFCを記述した ら、Under Discussion フェーズに持っていきま す
投票フェーズ • Under Discussionから何も返事が なくなり、2週間が経過したら投票 フェーズに入ります • YesとかNoとか入れてくれます • ここで2/3のYesを獲得しましょう
• この状態を2週間待ちます – 終了は自分で宣言できるので、2週 間+αとしましょう
投票終了 • 終わって、2/3のYesを もらえたら「Accepted」 となります • 精一杯の感謝を伝えま しょう
実装 • Draft Pull Requestから 普通のPull Requestにし ます • 色々やり取りをして
Approveをもら い、masterにマージして もらったら終わりです! やったぜ!
masterブランチ • masterブランチで使え るようになります • これがPHP 8.4で使え るようになるわけです ね
ここまでが今までの話
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はクリアしそ うです
これをもとにすると
Alpha • 7月4日 alpha1 • 7月18日 alpha2 • 8月1日 alpha3
• 8月13日 feature freeze – すべてのRFCの投票が終わっている必要があります
Beta • 8月15日 beta1 • 8月29日 beta2 • 9月10日 RFCで投票されたものがすべてマージさ
れている期限 • 9月12日 beta3
RC • 9月24日 masterからPHP-8.4ブランチへカットされます – ここでは新機能が搭載されることはありません • 9月26日 RC1 •
10月10日 RC2 • 10月24日 RC3 • 11月7日 RC4
そしてリリース • 11月21日 リリース 🎉🎉🎉🎉🎉 • 2026年12月31日 バグ修正リリースの終了 – Security
fixes onlyのはじまり • ただしリグレッション(回帰)修正はありえる • 2027年12月31日 リグレッションリリースの終了 • 2028年12月31日 Security fixes onlyの終了、EOL
alpha • alpha1から3まであります – 8月1日に最後のPHP 8.4.0alphaバージョンが出ます – この時点では機能追加はまだできます • つまりFeature
freezeの前です
beta • betaは1から3まであります – beta1の前にFeature freezeがあります – beta3にはすべての可決されたRFCがマージされてい る必要があります
RC (Release Candidate) • リリース候補版です – 機能の追加は当然なく、バグ修正などにあてがわれます – すでにPHP-8.4ブランチが出来上がっており、それをもと にしてRCバージョン番号がつけられます
– RC1から4まであります • 今までは1から6の事が多かったですが、7まで出たことがありま す
GA (General Available) • 要はリリースです – こうしてPHPの新バージョンが日の目を見ることになり ます – ここまでで半年間の面倒を見ることになります
リリースの後 • リリースされたら2年間のバグフィックスサポートと 2年間のセキュリティフィックスサポートがあるとい うことになります • もしもこのRFCが可決されたらですが – まあ可決されるのでしょう
まとめ • 現在のphp-srcのInternalsの動きをまとめました • リリースサイクルが変更される可能性があります • RFCを受け付けています – 機能追加したいなら急ごう、意外と時間を取られるため –
2週間の議論と2週間の投票で最低1ヶ月はかかる
おわり ご清聴ありがとうございました