Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について ...
Search
てきめん tekimen
PRO
April 13, 2024
Programming
1
460
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
980
mb_trim関数を作りました
youkidearitai
PRO
1
660
文字とはなにか - PHPの文字コード処理について - PHP Lovers Meetup #5
youkidearitai
PRO
1
210
はじめてのOSSコントリビュート
youkidearitai
PRO
11
3.5k
文字とはなにか - PHPの文字コード処理について -
youkidearitai
PRO
0
660
現在のmbstringの立ち位置 これからどうなっていくのか
youkidearitai
PRO
0
220
PHP 8.3のmbstringの進化を見てください - コントリビューターとしてのかかわり -
youkidearitai
PRO
0
1.2k
PHP 8.2と8.1で取り込まれたプルリクエストについて
youkidearitai
PRO
0
310
Other Decks in Programming
See All in Programming
Jakarta EE meets AI
ivargrimstad
0
130
色々なIaCツールを実際に触って比較してみる
iriikeita
0
330
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.3k
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
2k
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
300
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
520
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
120
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.4k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Embracing the Ebb and Flow
colly
84
4.5k
Facilitating Awesome Meetings
lara
50
6.1k
We Have a Design System, Now What?
morganepeng
50
7.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Fireside Chat
paigeccino
34
3k
How to train your dragon (web standard)
notwaldorf
88
5.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Optimizing for Happiness
mojombo
376
70k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
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ヶ月はかかる
おわり ご清聴ありがとうございました