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
620
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
PHPカンファレンス小田原の資料になります
てきめん tekimen
PRO
April 13, 2024
Tweet
Share
More Decks by てきめん tekimen
See All by てきめん tekimen
PHP Internals わいわい #3 mb_*関数を作ってみよう
youkidearitai
PRO
0
14
Windows版php-srcデバッグ方法
youkidearitai
PRO
1
45
PHP Internals わいわい #1 の資料
youkidearitai
PRO
1
1.1k
mb_trim関数を作りました
youkidearitai
PRO
1
710
文字とはなにか - PHPの文字コード処理について - PHP Lovers Meetup #5
youkidearitai
PRO
1
220
はじめてのOSSコントリビュート
youkidearitai
PRO
11
3.6k
文字とはなにか - PHPの文字コード処理について -
youkidearitai
PRO
0
700
現在のmbstringの立ち位置 これからどうなっていくのか
youkidearitai
PRO
0
240
PHP 8.3のmbstringの進化を見てください - コントリビューターとしてのかかわり -
youkidearitai
PRO
0
1.2k
Other Decks in Programming
See All in Programming
return文におけるstd::moveについて
onihusube
1
1.1k
php-conference-japan-2024
tasuku43
0
320
たのしいparse.y
ydah
3
120
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
130
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
150
From Translations to Multi Dimension Entities
alexanderschranz
2
130
ブラウザ単体でmp4書き出すまで - muddy-web - 2024-12
yue4u
3
480
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
5
660
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
テスト自動化失敗から再挑戦しチームにオーナーシップを委譲した話/STAC2024 macho
ma_cho29
1
1.3k
Spatial Rendering for Apple Vision Pro
warrenm
0
110
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
40
7.1k
Designing for humans not robots
tammielis
250
25k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Unsuck your backbone
ammeep
669
57k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
The Cult of Friendly URLs
andyhume
78
6.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Practical Orchestrator
shlominoach
186
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
A Philosophy of Restraint
colly
203
16k
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ヶ月はかかる
おわり ご清聴ありがとうございました