php-master-changes 8 月分まとめ

# php-master-changes 8 月まとめ
[ruby-trunk-changes](http://d.hatena.ne.jp/nagachika/) を真似してはじめてちょうど 1 ヶ月がたったので、8 月分のまとめと所感。

## 8 月のカレンダー
Qiita 日記サービスじゃなくてこういうのないから一応。

|日|月|火|水|木|金|土|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|  |  | [31](https://qiita.com/sj-i/items/8d716a389057d041623f)(11) | [1](https://qiita.com/sj-i/items/8aa0d4fcb359d8f82014)(6) | [2](https://qiita.com/sj-i/items/0482f1e56dc96a431f01)(9) | [3](https://qiita.com/sj-i/items/f0a1ded004471adadde4)(10) | [4](https://qiita.com/sj-i/items/567ac38e5c496dc973e7)(6) |
| [5](https://qiita.com/sj-i/items/b9746bcf827e88b9a520)(4) | [6](https://qiita.com/sj-i/items/b0d3e58798583f18597f)(15) | [7](https://qiita.com/sj-i/items/768e9afbd71f43d13fc8)(3) | [8](https://qiita.com/sj-i/items/68af96e8e9cfe673c594)(2) | [9](https://qiita.com/sj-i/items/022c675075f032f6f7e4)(1) | [10](https://qiita.com/sj-i/items/5e05f677117e75927d18)(1) | 11(0) |
| [12](https://qiita.com/sj-i/items/0cb8e791d4a2e7f3a2c0)(6) | [13](https://qiita.com/sj-i/items/0efbf9843b8d6c6c8c94)(4) | [14](https://qiita.com/sj-i/items/5961d7540e2110a43483)(5) | [15](https://qiita.com/sj-i/items/2909324551b5107a7f1a)(1) | [16](https://qiita.com/sj-i/items/3932fc36d39ff3cfe268)(3) | [17](https://qiita.com/sj-i/items/c6a348c288039f198b24)(15) | [18](https://qiita.com/sj-i/items/5ce2b02b5d5b1520d5a0)(3) |
| [19](https://qiita.com/sj-i/items/b8b8e2ed8aad529b3dc3)(2) | [20](https://qiita.com/sj-i/items/4824db324e366dde7356)(4) | [21](https://qiita.com/sj-i/items/934ba9ce871a926e6850)(6) | [22](https://qiita.com/sj-i/items/abd01faffae4e5011842)(14) | [23](https://qiita.com/sj-i/items/cfe00f853522d1fc4201)(3) | [24](https://qiita.com/sj-i/items/883fa3bd35eecc5e6e66)(4) | [25](https://qiita.com/sj-i/items/b13f21049e7058f83726)(7) |
| [26](https://qiita.com/sj-i/items/bea18544f72a528c7d24)(2) | [27](https://qiita.com/sj-i/items/582e85103badc5711450)(5) | [28](https://qiita.com/sj-i/items/aa2ca386327c4ac23235)(7) | [29](https://qiita.com/sj-i/items/b75bec1ef1cf29b7a707)(9) | [30](https://qiita.com/sj-i/items/45bac23eee1b968a276d)(7) | [31](https://qiita.com/sj-i/items/6a601892b1bf22ef2725)(5) |  |

()内はその日のコミット数。
最初各エントリに 1 日分というのを決めていなくて、8/1 の最初のコミットだけ 7/31 のに、8/2 の最初 2 コミットだけ 8/1 のに入ってる。

## 8 月のコミット数の状況まとめ
8 月の下位バージョンから上位バージョンへのマージコミットを抜いたコミット数は 169。
1 日のコミット数は最少が 11 日の 0、最多が 6 日と 17 日の 15、平均（出す意味あるのか？）約 5.45 コミット。
人で見ると多い人 (weltling) で 30 コミットくらい。
※ dstogov もコミット多めなので、お金もらって仕事でやってる人達は自然と差が出る感じ（それぞれ MS と Zend）。

## 8月のダイジェスト
- weltling がちまちま Windows 向けコードの修正やってた
- dstogov がちまちまエンジン / opcache の改修やってた
- laurence もちょろっとエンジン / opcache の修正やってた
- [最近コミッタになった](https://github.com/php/php-src/pull/3355#issuecomment-401569090) petk がずっと autotools はじめとした開発ツール周りを綺麗にしてた
- [同じ時にコミッタになった](https://github.com/php/php-src/pull/3355#issuecomment-401767119) carusogabriel がずっとテストの修正してた
- cmb69 がちょいちょいバグチケット拾って対応してた
- PHP 7.3 向けコードで新たに生まれたバグがちょこちょこ直されていった

## わりと見どころ（な気がするところ）
- [Trait のバグ修正](https://qiita.com/sj-i/items/768e9afbd71f43d13fc8#pmmaga-fix-76700---methods-with-altered-visibility-need-to-be-added-again)を追うと [Bug #63911](https://bugs.php.net/bug.php?id=63911) に行き当たる
    - PHP 7.3 では Trait で菱型継承のような状態でもコンフリクトを起こさなくなりそう
        - 実は Trait の元ネタ論文であるところの [Traits: Composable Units of Behaviour](http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf) にも、Trait はステートを持たないので Diamond Problem はコンフリクトにならない、と明記されていたりするもよう
            - "A conflict arises if and only if we combine two traits providing identically named methods that do not originate from the same trait. In particular, this means that if the same method (i.e., from the same trait) is obtained more than once via different paths, there is no conflict." 
- [early-binding が完全に通常のコンパイル処理の中で行われるようになった](https://qiita.com/sj-i/items/883fa3bd35eecc5e6e66#dstogov-perform-early-binding-directly-during-compilation)
- オペコード [ZEND_ADD_TRAIT と ZEND_BIND_TRAITS](https://qiita.com/sj-i/items/cfe00f853522d1fc4201#dstogov-replace-zend_class_entry-traits-by-persistent-zend_class_entry-trait_names) と [ZEND_ADD_INTERFACE と ZEND_VERIFY_ABSTRACT_CLASS](https://qiita.com/sj-i/items/cfe00f853522d1fc4201#dstogov-keep-information-about-unresolved-interfaces-in--zend_class_entry-interface_names) がなくなった（ZEND_DECLARE_*CLASS へ統合）

## やってみての所感
- 日によってまとめるのにかかる時間はだいたい 20 分 〜 60 分程度
	- 時間が取れる日、よく知らない部分をちゃんと調べるともっとかかることも
	- 時間かければその分勉強にはなる
- [大きな PR](https://github.com/php/php-src/pull/3313) がマージされるようなことになるとおそらく地獄絵図になるので、やり方を考えないとダメそう。
- 容赦なくエンジンの改修が PR なしで入るので、コミットログを直接追ってはじめて追える内部構造の変更が一部ある
- internals が [2 週間くらい止まっていても](https://bugs.php.net/bug.php?id=76743)寂しい気持ちにならない
- 元ネタの ruby-trunk-changes の 8 月の動きを確認すると、数えた限り 426 コミット分あり、フルタイムで取り組んでるような人達の人数差が大きそう（コミット数にそこまで意味があるかというのはともかく、とにかく 90 とか 60 とか 40 とかが数人いて、その少数の人が勢い伸ばしてる感じ）
    - PHP くらいの流量なら根性なしでも追えば追えるという感じ