👌

今週の PHP 2022/11/26 〜 2022/12/02

2022/12/14に公開

PHP のメーリングリストから、気になった情報をピックアップします。

Internal

Microseconds to error log

https://externals.io/message/118865

話し合いは続いていますが、やっぱり RFC は出ないのかな??

[RFC] [Discussion] Readonly class amendments

https://externals.io/message/119007

Readonly の今後についての話が、まだ続いています。

最近まとまってきた論調としては、 Readonly は Immutable とは違うよという共通認識かなと。

Remove warning when parsing datetime with + symbol?

https://externals.io/message/119025

+ マークを含んだフォーマットで Warning を出さないようにしたいという話

Derick さんも、なぜこうしたのか分からない...というわけで、BC break ではあるが、ぜひ Warning はなくしたいという方向。
バージョンとしては、9.0 がターゲットになる模様。

Using less generic exceptions for dates

https://externals.io/message/119019

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

https://github.com/php/php-src/pull/5815

下の 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

https://github.com/php/php-src/issues/10007

リリースバージョンごとにつくられるブランチは、タグが打たれた段階で、消しませんか?というイシュー。
異論が出てるなら、RFC プロセスかなという話になっており、大変だなぁという感想。

実は、過去にも話されているという。

報告主にパワーが残っていれば、internals で話が続きそう。

Maybe a Code of Conduct might be nice for this repo. What do you all think? · Issue #10017 · php/php-src

https://github.com/php/php-src/issues/10017

Code of Conduct 追加しようぜ?のイシュー

すでに 2016 年に RFC が出ている https://wiki.php.net/rfc/adopt-code-of-conduct
RFC なんだ....と思った。

11年前の Rasmus の言葉も引用されており

  1. Do not call other developers nor users idiots nor other derogatory terms on the mailing list.
  2. Do not use Twitter or other public broadcasting systems to call other developers or users idiots or other derogatory terms.

翻訳

  1. メーリングリストにおいて、他の開発者を「愚か者とか、軽蔑するような用語」で呼ばないこと!
  2. Twitter やその他の公共の発信システムを使って、他の開発者を「愚か者とか、軽蔑するような用語」で呼ばないこと!

これについては、みんなが賛同しているぞ。と

結局の所、この手の議論は、ドライブされずにこのまま収束しそうな気もするが。懐かしい PHP の侮蔑的な画像が参照されていたりと。

PHP :: Bug #81742 :: open_basedir bypass in SQLite3/pdo-sqlite extension by using url encoded file

https://bugs.php.net/bug.php?id=81742

SQLite3 のちょっとざわざわした脆弱性の Fix です。マージされています。

iconv error when using "ß" · Issue #10019 · php/php-src

https://github.com/php/php-src/issues/10019

libiconv 実装と、glibc 実装があるんですね。
意識してないと、こういう不具合が起きたとして、どうしていいかわからなくなりますね。

mbstring: Do not stop when mbstring test faild by youkidearitai · Pull Request #10009 · php/php-src

https://github.com/php/php-src/pull/10009

てきめんさん発のイシュー。mbstring のテスト失敗後に止まってほしくないんだがという話。

何故か?というと、メジャーオーバーホールされた mbstring が前後でどれくらい失敗するかとかを出したいからということでした。
実に有意義で素晴らしい話で感動。

alexdowad さんからは、新しいグローバルバリアブルを作って、しきい値超えたら die するようにしたらどうかな?という提案。
オーバーホールの結果は、コミュニティにとっても高い関心事だし、マルチバイト圏の人たちがチェックしてくれるなら、そりゃありがたいよね。

[PHP82] DateTime modify does not work with addition of minus values · Issue #9950 · php/php-src

https://github.com/php/php-src/issues/9950

<?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

https://github.com/php/doc-en/issues/2034

MySQL の PDO ドライバーが PDO::ATTR_TIMEOUT に対応していないぞ!というイシュー。

すべての PDO ドライバーが対応しているわけではない旨をドキュメントに書こうという話になったけど、すでに書いてある気がする。

https://www.php.net/manual/ja/pdo.setattribute.php

Significant reduction in performance when running phpunit after upgrade from 8.1.9 to 8.1.10 · Issue #9993 · php/php-src

https://github.com/php/php-src/issues/9993

8.1.10 になって PHPUnit のパフォーマンスが落ちたというイシュー。他に反応する人もいないので、もしかしたら、報告者のユニットテスト固有の問題かもしれないという話に。
残念ながら、対象のコードは public ではないそうなので、再現できるような public コードを書けたら再度共有するという話になりました。

ちょっと気になっているので、原因がわかるといいなぁ。

8.0 系の不具合について

https://github.com/php/php-src/issues/9837
https://github.com/php/php-src/issues/9879
https://github.com/php/php-src/issues/9885

JIT やら、Seg V やら、8.0 でアクティブサポートされないイシューについて、8.1 での再現を取ってねというコメントが入っています。
もう、時代は 8.1 なんだなと。

Symfony preloading fails on PHP-8.2 with JIT · Issue #9746 · php/php-src

https://github.com/php/php-src/issues/9746

Symfony の preloading が 8.2 で失敗する件、なんと最近見たらなんと直っていました。

reproducable segfault when recursing · Issue #10041 · php/php-src

https://github.com/php/php-src/issues/10041

再帰で SegV が出るという案件。Stack サイズの制限を行うイシュー対応により直ったようです。

Limit stack size

Discussion