今週の PHP 2022/11/26 〜 2022/12/02
PHP のメーリングリストから、気になった情報をピックアップします。
Internal
Microseconds to error log
話し合いは続いていますが、やっぱり RFC は出ないのかな??
[RFC] [Discussion] Readonly class amendments
Readonly の今後についての話が、まだ続いています。
最近まとまってきた論調としては、 Readonly は Immutable とは違うよという共通認識かなと。
Remove warning when parsing datetime with + symbol?
+
マークを含んだフォーマットで Warning を出さないようにしたいという話
Derick さんも、なぜこうしたのか分からない...というわけで、BC break ではあるが、ぜひ Warning はなくしたいという方向。
バージョンとしては、9.0 がターゲットになる模様。
Using less generic exceptions for dates
Date 関連の例外について、Less Generic (控えめに一般的な)な例外を作りましょうという話。RFCが出来ました。
PHP: rfc:datetime-exceptions https://wiki.php.net/rfc/datetime-exceptions
今後、注視していきましょう。
Bugs
[RFC] Typed class constants by moliata · Pull Request #5815 · php/php-src
下の RFC の実装です。
PHP: rfc:typed_class_constants https://wiki.php.net/rfc/typed_class_constants
今週、すでにクローズされているイシューにコメントが入りまして、難しい部分を分割したらどうか?という提案がされています。
実は、いろんな PoC がすでにプッシュされてたりするんだなと思いました。
Remove PHP-x.y.* git branches · Issue #10007 · php/php-src
リリースバージョンごとにつくられるブランチは、タグが打たれた段階で、消しませんか?というイシュー。
異論が出てるなら、RFC プロセスかなという話になっており、大変だなぁという感想。
実は、過去にも話されているという。
- Old branches - Externals https://externals.io/message/102982
- Removing old branches in php-src - Externals https://externals.io/message/106643
報告主にパワーが残っていれば、internals で話が続きそう。
Maybe a Code of Conduct might be nice for this repo. What do you all think? · Issue #10017 · php/php-src
Code of Conduct 追加しようぜ?のイシュー
すでに 2016 年に RFC が出ている https://wiki.php.net/rfc/adopt-code-of-conduct
RFC なんだ....と思った。
11年前の Rasmus の言葉も引用されており
- Do not call other developers nor users idiots nor other derogatory terms on the mailing list.
- Do not use Twitter or other public broadcasting systems to call other developers or users idiots or other derogatory terms.
翻訳
- メーリングリストにおいて、他の開発者を「愚か者とか、軽蔑するような用語」で呼ばないこと!
- Twitter やその他の公共の発信システムを使って、他の開発者を「愚か者とか、軽蔑するような用語」で呼ばないこと!
これについては、みんなが賛同しているぞ。と
結局の所、この手の議論は、ドライブされずにこのまま収束しそうな気もするが。懐かしい PHP の侮蔑的な画像が参照されていたりと。
PHP :: Bug #81742 :: open_basedir bypass in SQLite3/pdo-sqlite extension by using url encoded file
SQLite3 のちょっとざわざわした脆弱性の Fix です。マージされています。
iconv error when using "ß" · Issue #10019 · php/php-src
libiconv 実装と、glibc 実装があるんですね。
意識してないと、こういう不具合が起きたとして、どうしていいかわからなくなりますね。
mbstring: Do not stop when mbstring test faild by youkidearitai · Pull Request #10009 · php/php-src
てきめんさん発のイシュー。mbstring のテスト失敗後に止まってほしくないんだがという話。
何故か?というと、メジャーオーバーホールされた mbstring が前後でどれくらい失敗するかとかを出したいからということでした。
実に有意義で素晴らしい話で感動。
alexdowad さんからは、新しいグローバルバリアブルを作って、しきい値超えたら die するようにしたらどうかな?という提案。
オーバーホールの結果は、コミュニティにとっても高い関心事だし、マルチバイト圏の人たちがチェックしてくれるなら、そりゃありがたいよね。
[PHP82] DateTime modify does not work with addition of minus values · Issue #9950 · php/php-src
<?php
$a = (new \DateTimeImmutable('2022-05-01 22:00:00'))->modify('+-30 seconds');
var_dump($a);
このコードは、8.2 の RC3 以前は、30秒マイナスの値がでていたけど、最新では 30秒プラスされるという。
まあ、そもそもバグっぽい挙動だし、俺は直さないぞ!というデリックさんの宣言。クローズ。
PDO::getAttribute() does not support PDO::ATTR_TIMEOUT · Issue #2034 · php/doc-en
MySQL の PDO ドライバーが PDO::ATTR_TIMEOUT
に対応していないぞ!というイシュー。
すべての PDO ドライバーが対応しているわけではない旨をドキュメントに書こうという話になったけど、すでに書いてある気がする。
Significant reduction in performance when running phpunit after upgrade from 8.1.9 to 8.1.10 · Issue #9993 · php/php-src
8.1.10 になって PHPUnit のパフォーマンスが落ちたというイシュー。他に反応する人もいないので、もしかしたら、報告者のユニットテスト固有の問題かもしれないという話に。
残念ながら、対象のコードは public ではないそうなので、再現できるような public コードを書けたら再度共有するという話になりました。
ちょっと気になっているので、原因がわかるといいなぁ。
8.0 系の不具合について
JIT やら、Seg V やら、8.0 でアクティブサポートされないイシューについて、8.1 での再現を取ってねというコメントが入っています。
もう、時代は 8.1 なんだなと。
Symfony preloading fails on PHP-8.2 with JIT · Issue #9746 · php/php-src
Symfony の preloading が 8.2 で失敗する件、なんと最近見たらなんと直っていました。
reproducable segfault when recursing · Issue #10041 · php/php-src
再帰で SegV が出るという案件。Stack サイズの制限を行うイシュー対応により直ったようです。
Discussion