Upgrade to Pro — share decks privately, control downloads, hide ads and more …

非公式mbstringレビュアー 12月と1月

非公式mbstringレビュアー 12月と1月

PHPのmbstringの変化について調べていたところ、非公式レビュアーとも言えるような状態になりました。実際に色々やってるよというのを公開します。

実はこの状態はほとんど本業をお休みしてやっていたことなので、このペースを維持しながらのレビューは厳しいような気がしています。ここまでになるとは思っていなかったので、貢献してくれる人(Issueやドキュメンテーションなどなど)が増えるとすごく助かると思っています。

てきめん tekimen

January 18, 2023
Tweet

More Decks by てきめん tekimen

Other Decks in Technology

Transcript

  1. 自己紹介 てきめん • https://tekitoh-memdhoi.info • @youkidearitai • https://www.youtube.com/user/t ekitohmrp •

    https://www.nicovideo.jp/user/2 957748 • https://github.com/youkidearitai – GitHub Sponsorsはじめました オレ
  2. PHP 8.1からのmbstringの変更 • 非公式 PHP 8.1のmbstringアップグレードガイドを作 成した – 日本のPHPユーザーに読んでもらえた、助かる •

    まだ把握していない部分があって、Pull Requestにした – mbstring: Do not stop when mbstring test faild #10009 – このPRのおかげか、執筆者であるAlexさんにFYA(For Your Action)されるようになった
  3. Major overhaul of mbstring (part 27) • Major overhaul of

    mbstring (part 27) #10048 – mb_strpos, mb_stripos, mb_strrpos, mb_strripos, mb_strstr, mb_stristr, mb_strrchr, mb_strrichr, and mb_substrなどを再実装 • ここでもFYAで呼ばれたのでレビュー、一箇所C言語の型につ いて指摘しました
  4. Major Overhaul of mbstring (part 28) • Major overhaul of

    mbstring (part 28) #10099 – mb_substr_countの再実装 – これにも@youkidearitaiが呼ばれてる • 特に何もしてないが – UTF-8の文字列のときに効果を発揮するみたい
  5. mb_strposの問題 • mb_strpos matches illegal character when ne edle is

    '?' #9613 – これは、mb_strpos関数にUTF-8以外のエンコーディン グを指定したら、不正なバイトが”?”にマッチするという てきめんが立てたIssue – 一旦はdifferent encoding(違う文字コード)ということ でcloseされるが、これはillegal characterであると説明 したところ、再オープン、修正となった
  6. mb_strposの問題の修正 • Performance optimization for mb_stripos and mitigation for GH-9613

    #10107 – これは、mb_strpos関数にUTF-8以外のエンコーディン グを指定したら、不正なバイトが”?”にマッチするという てきめんが立てたIssueの修正のプルリクエスト – 地味に「mb_strposのテストがmb_striposのテストに 置かれてるよ」っていう指摘をした
  7. mb_convert_kanaの問題の修正 • Allow 'h' and 'k' flags to be combined

    for mb_con vert_kana #10178 – mb_convert_kana関数のhとkフラグは両立するが、PHP 8.2からは両立しないようにエラーで落としてたのを修正 – Looks good to meをしたら、Nikitaさんがやってきて「正常 系のテスト(positive test)を勧めますよ」というコメントが来た – mb_convert_kana関数では、PHP 8.2からはありえないフラ グの組み合わせに関してエラーを出すようになったので注意
  8. mbstringの変更について • Performance optimizations for mb_strlen and encoding conversion of

    SJIS, UHC, CP936, BIG 5 text #10211 – それぞれのmb_strlenのパフォーマンス改善について のPull Request – しかし、このPRとSJISのmb_strlenの結果が違うケース が存在することをてきめんが発見、既存のバグであるこ とが判明(0x80が2バイトの先頭と数えられてたというバ グ)
  9. 発見されたSJISバグの修正 • Fix entries in SJIS multi-byte character length tables

    for bytes which do not start any valid 2 -byte character #10230 – 先程のSJISでの挙動の違いから、1バイト目0x80が1バ イトとして処理されないとおかしいのでその修正
  10. SJIS-mac(MacJapanese)のマッピングの変更 • Update SJIS-mac mappings to use Unicode codepoint s

    which were added after Unicode 1.0 #10264 – これは、MacJapaneseのUnicodeマッピングを、非互換ではあるが 妥当なUnicodeコードポイントに変えようというPull Request • JAPANESE.TXTの定義を変更して非互換のコードポイントにしようとしてい る • WikipediaのMacJapaneseの項を見るとわかりやすい – しかしながら、「MacJapaneseという古い文字エンコーディングに、 非互換の変更が必要なのか?」という観点からこれはしなくてよい のではということをコメントした – 現状待ち
  11. 貢献がほしい • 働きながらレビューするのは大変そう – More performance increases for mbstring functions

    on UT F-8 text#10313 と言ったパフォーマンスの最適化には、SSE2が使われているの で、よくわからんかった • さらなる勉強が必要である – 非公式レビュアーとしてmbstringの第一人者になりつつあるの は嬉しいが、何か気がついたらIssue、コメントしてくれると嬉しい – そもそもOSSなんだから、抱え込むことがおかしいのでペース配 分を考えます