<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>2k36</title><description>A personal blog and portfolio of Yuki Okushi.</description><link>https://www.2k36.org/</link><language>ja</language><item><title>rust-phf v0.14.0をリリースしました</title><link>https://www.2k36.org/posts/rust-phf-0-14-0/</link><guid isPermaLink="true">https://www.2k36.org/posts/rust-phf-0-14-0/</guid><description>rust-phf v0.14.0の主な変更点と移行時の注意点</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;rust-phf v0.14.0をリリースしました。&lt;/p&gt;
&lt;p&gt;リリースノートは&lt;a href=&quot;https://github.com/rust-phf/rust-phf/releases/tag/v0.14.0&quot;&gt;GitHub Releases&lt;/a&gt;にあります。&lt;/p&gt;
&lt;p&gt;普段はこういうのをサイレントにやっているのですが、できれば多くの人に知ってほしいな～というところで実験的にアナウンスポストを書いてみています。&lt;/p&gt;
&lt;h2&gt;rust-phf is 何？&lt;/h2&gt;
&lt;p&gt;rust-phfは、コンパイル時に完全ハッシュ関数(PHF)を使った lookup table を生成する crate 群です。&lt;/p&gt;
&lt;p&gt;使えるのは、キー集合がビルド時点で決まっている table です。実行時に &lt;code&gt;HashMap&lt;/code&gt; を組み立てる必要がなく、生成済みの静的データから lookup できるのでその分高速に引くことができます。&lt;/p&gt;
&lt;p&gt;たとえば、言語処理系で &lt;code&gt;&quot;while&quot;&lt;/code&gt; を &lt;code&gt;Token::While&lt;/code&gt; に変換する、設定ファイルのキー名を何かしら利用したい形に変換する、みたいな用途に向いています。&lt;/p&gt;
&lt;p&gt;一方で、キーを実行時に追加したり削除したりする用途には向きません。&lt;/p&gt;
&lt;p&gt;採用例を挙げると、chronoやtokio-postgresなどで採用されています: https://crates.io/crates/phf/reverse_dependencies&lt;/p&gt;
&lt;p&gt;以下で今回のリリースの概要を紹介していきます。ただ機能差分メインで書くので新しく使ってみたいという方は repository からドキュメントや examples を辿るのがいいかもしれません: https://github.com/rust-phf/rust-phf&lt;/p&gt;
&lt;h2&gt;MSRVが1.85になりました&lt;/h2&gt;
&lt;p&gt;v0.14.0では各 crate を 2024 edition に移行しました。&lt;/p&gt;
&lt;p&gt;そのため、MSRV は 1.85 になりました。&lt;/p&gt;
&lt;p&gt;2024 edition が出たのはつい最近のように思いますが、気付けばもう 2026 年も半分過ぎようとしています。早すぎる。&lt;/p&gt;
&lt;p&gt;こういうライブラリでは edition 更新やその他 MSRV に関する変更を比較的ゆっくりやるようにしています。&lt;/p&gt;
&lt;p&gt;昔は厳密に breaking change として扱うところも多かったですが、今だと &lt;a href=&quot;https://github.com/time-rs/time#minimum-rust-version-policy&quot;&gt;time crate のように&lt;/a&gt; N-3 window のような相対的な MSRV policy を持つところも増えている気がします。&lt;/p&gt;
&lt;p&gt;メンテナとしては確かにこちらの方が楽というか、MSRV を bump させるためだけに major version を上げるのは結構躊躇われる気持ちがあり、自分のメンテする crates でも最近はこのようなポリシーを適用することが多いです。phf は明示的なポリシーを定めていませんが、そろそろしようかしら。&lt;/p&gt;
&lt;h2&gt;ptrhash feature&lt;/h2&gt;
&lt;p&gt;v0.14.0では、実験的な &lt;code&gt;ptrhash&lt;/code&gt; feature を追加しました。&lt;/p&gt;
&lt;p&gt;この feature は、既存の CHD 実装をいきなり置き換えるものではありません。既定のレイアウトはこれまで通り CHD で、&lt;code&gt;ptrhash&lt;/code&gt; は明示的に有効化したときだけ使われます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;phf_macros&lt;/code&gt; を使う場合は、&lt;code&gt;phf&lt;/code&gt; 側で &lt;code&gt;macros&lt;/code&gt; と &lt;code&gt;ptrhash&lt;/code&gt; を有効にします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[dependencies]
phf = { version = &quot;0.14.0&quot;, features = [&quot;macros&quot;, &quot;ptrhash&quot;] }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;phf_codegen&lt;/code&gt; を使う場合は、生成側と実行時側の両方で &lt;code&gt;ptrhash&lt;/code&gt; を有効にします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[dependencies]
phf = { version = &quot;0.14.0&quot;, features = [&quot;ptrhash&quot;] }

[build-dependencies]
phf_codegen = { version = &quot;0.14.0&quot;, features = [&quot;ptrhash&quot;] }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この feature を入れたモチベとしてはパフォーマンスの改善があります。&lt;/p&gt;
&lt;p&gt;実際、&lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/392&quot;&gt;PR&lt;/a&gt;のベンチマークでは、生成時間と lookup の両方でよい結果が出ています。やったね。&lt;/p&gt;
&lt;p&gt;ただし、データの形や利用箇所によって結果は変わるので、実運用で使う場合はご自身の環境で実際に測ってから採用してください。ほとんどの場合、デフォルトよりもパフォーマンスが改善するかと思いますが念のため。&lt;/p&gt;
&lt;p&gt;何かしら既存と動作が変わったりだとか、不具合を見つけたら教えてください。&lt;/p&gt;
&lt;h2&gt;cfg付きエントリの扱い&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;phf_map!&lt;/code&gt; などのマクロで &lt;code&gt;#[cfg]&lt;/code&gt; を使っている場合、v0.14.0ではいくつかの挙動が変わります。&lt;/p&gt;
&lt;h3&gt;&lt;code&gt;#[cfg]&lt;/code&gt; が無効になっている際のバグ修正&lt;/h3&gt;
&lt;p&gt;まず、すべての &lt;code&gt;#[cfg]&lt;/code&gt; が無効になったときに、空の map や set ではなく別の variant 由来のデータが残ることがありました。&lt;/p&gt;
&lt;p&gt;これは PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/393&quot;&gt;#393&lt;/a&gt;で修正されています。&lt;/p&gt;
&lt;h3&gt;OR パターンの挙動の統一&lt;/h3&gt;
&lt;p&gt;次に、OR パターンに付いた &lt;code&gt;#[cfg]&lt;/code&gt; は、そのエントリ全体に適用されるようになりました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;static MAP: phf::Map&amp;lt;&amp;amp;&apos;static str, u32&amp;gt; = phf::phf_map! {
    #[cfg(feature = &quot;foo&quot;)]
    &quot;a&quot; | &quot;b&quot; =&amp;gt; 1,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この例では、&lt;code&gt;#[cfg(feature = &quot;foo&quot;)]&lt;/code&gt; は &lt;code&gt;&quot;a&quot;&lt;/code&gt; だけでなく &lt;code&gt;&quot;a&quot; | &quot;b&quot;&lt;/code&gt; 全体にかかります。&lt;/p&gt;
&lt;p&gt;これは Rust の pattern に付く &lt;code&gt;#[cfg]&lt;/code&gt; の挙動と揃えるための変更で、PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/391&quot;&gt;#391&lt;/a&gt;で入りました。&lt;/p&gt;
&lt;p&gt;もし OR パターンの先頭だけが条件付きになるという挙動に依存していたコードがあれば、エントリを分けて書き直す必要があるので注意してください。&lt;/p&gt;
&lt;h3&gt;複数の &lt;code&gt;#[cfg]&lt;/code&gt; を含む構造の生成&lt;/h3&gt;
&lt;p&gt;複数の &lt;code&gt;#[cfg]&lt;/code&gt; を含む構造の生成も、組み合わせを列挙する方式から宣言マクロで解決する方式に変わりました。&lt;/p&gt;
&lt;p&gt;この変更は PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/403&quot;&gt;#403&lt;/a&gt;で入り、&lt;code&gt;#[cfg]&lt;/code&gt; が多い場合のビルド時間も短くなっています。&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;quote::ToTokens&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;phf_codegen&lt;/code&gt; では、&lt;code&gt;quote&lt;/code&gt; feature を有効にしたときに &lt;code&gt;build()&lt;/code&gt; の返り値が &lt;code&gt;quote::ToTokens&lt;/code&gt; を実装するようになりました。&lt;/p&gt;
&lt;p&gt;これは PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/414&quot;&gt;#414&lt;/a&gt;による変更で、&lt;code&gt;build.rs&lt;/code&gt; で &lt;code&gt;quote!&lt;/code&gt; を使っている場合に、生成結果を文字列として扱う必要がなくなります。&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;FmtConst&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/416&quot;&gt;#416&lt;/a&gt; により &lt;code&gt;FmtConst&lt;/code&gt; は新しく &lt;code&gt;Vec&lt;/code&gt; と slice key に対応しました。&lt;/p&gt;
&lt;p&gt;これにより、 &lt;code&gt;phf_codegen::Map::&amp;lt;Vec&amp;lt;u8&amp;gt;&amp;gt;::new()&lt;/code&gt; のような形で slice として lookup する table を生成できます。&lt;/p&gt;
&lt;h2&gt;tuple まわりの改善&lt;/h2&gt;
&lt;p&gt;PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/420&quot;&gt;#420&lt;/a&gt;で tuple を使っている際の lifetime の取り回しを改善しました。&lt;/p&gt;
&lt;p&gt;PR でメンションされている issues にあるような lifetime の問題が解消されているはずです。&lt;/p&gt;
&lt;p&gt;ただ内部的な実装方針を結構変えたので何かしら予期しない副作用があるかもしれません。逆に動作しなくなった例などあれば教えてください！&lt;/p&gt;
&lt;h2&gt;slice まわりの改善&lt;/h2&gt;
&lt;p&gt;slice と pointer-sized integer の hash も修正しています。&lt;/p&gt;
&lt;p&gt;PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/396&quot;&gt;#396&lt;/a&gt;では slice key の hash を整理しました。&lt;/p&gt;
&lt;p&gt;これは例えば &lt;code&gt;usize&lt;/code&gt; と &lt;code&gt;isize&lt;/code&gt; が 32-bit target と 64-bit target で異なる hash になって cross compilation を壊すといった問題に対する修正です。&lt;/p&gt;
&lt;h2&gt;integer literalのsuffix&lt;/h2&gt;
&lt;p&gt;v0.14.0では、macro で integer key を使うときの型推論をより厳密にしました。&lt;/p&gt;
&lt;p&gt;最初の key の型を決める位置にある integer literal には、明示的な suffix が必要になります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;static MAP: phf::Map&amp;lt;u32, &amp;amp;&apos;static str&amp;gt; = phf::phf_map! {
    0u32 =&amp;gt; &quot;zero&quot;,
    1 =&amp;gt; &quot;one&quot;,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この例では、最初の key の &lt;code&gt;0u32&lt;/code&gt; が型を決めます。&lt;/p&gt;
&lt;p&gt;後続の &lt;code&gt;1&lt;/code&gt; は同じ位置から &lt;code&gt;u32&lt;/code&gt; と推論されます。&lt;/p&gt;
&lt;p&gt;tuple や array の中でも、最初の key の型を決める integer literal には suffix が必要です。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;static TUPLES: phf::Map&amp;lt;(u32, &amp;amp;&apos;static str), u8&amp;gt; = phf::phf_map! {
    (0u32, &quot;a&quot;) =&amp;gt; 1,
    (1, &quot;b&quot;) =&amp;gt; 2,
};

static ARRAYS: phf::Map&amp;lt;[u8; 2], u8&amp;gt; = phf::phf_map! {
    [0u8, 1] =&amp;gt; 1,
    [2, 3] =&amp;gt; 2,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;この変更は PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/419&quot;&gt;#419&lt;/a&gt;で入り、型の曖昧さをコンパイル時に明示させるためのものです。&lt;/p&gt;
&lt;p&gt;0.14.0へ上げてこのエラーが出た場合は、最初の key の integer literal に &lt;code&gt;u32&lt;/code&gt; や &lt;code&gt;u8&lt;/code&gt; などの suffix を足してください。&lt;/p&gt;
&lt;h2&gt;生成時間の改善&lt;/h2&gt;
&lt;p&gt;また、パフォーマンス改善も入れてみています。&lt;/p&gt;
&lt;p&gt;PR &lt;a href=&quot;https://github.com/rust-phf/rust-phf/pull/407&quot;&gt;#407&lt;/a&gt;では、大きな map の生成時間を短くするために bucket storage と bucket group の扱いを調整しました。&lt;/p&gt;
&lt;p&gt;PR の説明にも書いた通り、この変更には lookup speed と table size の小さなトレードオフがあります。とはいえ、得られるスピードアップに対しての regression は十分小さいとは思っています。&lt;/p&gt;
&lt;p&gt;巨大な table の生成時間に困っていた場合には効く可能性がある一方で、トレードオフが気になる場合は更新前後を測って判断してください。&lt;/p&gt;
&lt;h2&gt;まとめ&lt;/h2&gt;
&lt;p&gt;結構大きいリリースになってしまったので、既存ユーザーの方はこちらで言及しているマイグレーション方法など参考に更新してみてください。その分微妙な挙動の問題やパフォーマンス改善などなど、嬉しいポイントも盛りだくさんになっているはず……です！&lt;/p&gt;
&lt;p&gt;また、新規ユーザーは単純に改善された rust-phf をお使いいただけると思います。ぜひ使ってみてほしいです。&lt;/p&gt;
&lt;p&gt;今回言及している他に何か意図していなさそうな挙動の変更など、問題を見つけた場合は &lt;a href=&quot;https://github.com/rust-phf/rust-phf/issues&quot;&gt;rust-phf の issue&lt;/a&gt;で教えてください。&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for May 2026</title><link>https://www.2k36.org/posts/2026-may-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2026-may-report/</guid><description>A contribution report for May 2026, by @JohnTitor.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Contribution summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;187 commits authored.&lt;/li&gt;
&lt;li&gt;34 pull requests opened.&lt;/li&gt;
&lt;li&gt;106 pull request reviews submitted.&lt;/li&gt;
&lt;li&gt;1 issue opened.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in May &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2026-05-01&amp;amp;to=2026-05-31&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Focus areas&lt;/h2&gt;
&lt;h3&gt;Notify&lt;/h3&gt;
&lt;p&gt;May was another month of work toward notify v9.&lt;/p&gt;
&lt;p&gt;Released notify v9.0.0-rc.4 and notify-debouncer-full v0.8.0-rc.2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/notify-rs/notify/releases/tag/notify-9.0.0-rc.4&lt;/li&gt;
&lt;li&gt;https://github.com/notify-rs/notify/releases/tag/debouncer-full-0.8.0-rc.2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also worked on platform-specific fixes and performance improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Speed up recursive inotify watch setup: https://github.com/notify-rs/notify/pull/918&lt;/li&gt;
&lt;li&gt;Speed up fsevent flag conversion: https://github.com/notify-rs/notify/pull/920&lt;/li&gt;
&lt;li&gt;Avoid filesystem walks for recursive kqueue unwatch: https://github.com/notify-rs/notify/pull/924&lt;/li&gt;
&lt;li&gt;Retry fsevent startup in tests: https://github.com/notify-rs/notify/pull/928&lt;/li&gt;
&lt;li&gt;Report Windows watch errors correctly: https://github.com/notify-rs/notify/pull/936&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The remaining v9 queue is mostly about release confidence and platform-specific behavior.&lt;/p&gt;
&lt;h3&gt;Actix&lt;/h3&gt;
&lt;p&gt;Actix work was smaller than April, but I still handled a few maintenance items.&lt;/p&gt;
&lt;p&gt;For actix-web and actix-net, I updated hickory-resolver and fixed a panic in &lt;code&gt;Files&lt;/code&gt; paths containing &lt;code&gt;.&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/actix/actix-web/pull/4056&lt;/li&gt;
&lt;li&gt;https://github.com/actix/actix-net/pull/872&lt;/li&gt;
&lt;li&gt;https://github.com/actix/actix-web/pull/4083&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also added the Actix contributing guide and opened a session performance improvement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/actix/.github/pull/3&lt;/li&gt;
&lt;li&gt;https://github.com/actix/actix-extras/pull/737&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Rust&lt;/h3&gt;
&lt;p&gt;Most Rust work this month was libc maintenance.&lt;/p&gt;
&lt;p&gt;I migrated libc release automation to &lt;code&gt;release-plz/action&lt;/code&gt;, and opened follow-up PRs for Linux bindings and CI image updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/rust-lang/libc/pull/5103&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/libc/pull/5125&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/libc/pull/5126&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also opened an issue to validate &lt;code&gt;ignore-tidy-cr&lt;/code&gt; entries against &lt;code&gt;.gitattributes&lt;/code&gt;: https://github.com/rust-lang/rust/issues/157184&lt;/p&gt;
&lt;p&gt;Reviewed 14 PRs on rust-lang/rust this month.&lt;/p&gt;
&lt;h3&gt;rust-phf&lt;/h3&gt;
&lt;p&gt;I continued rust-phf maintenance and feature work.&lt;/p&gt;
&lt;p&gt;This included generator performance, 2024 edition migration, new const-formatting support, and a parser fix:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduce generation time: https://github.com/rust-phf/rust-phf/pull/407&lt;/li&gt;
&lt;li&gt;Add support for &lt;code&gt;ToTokens&lt;/code&gt;: https://github.com/rust-phf/rust-phf/pull/414&lt;/li&gt;
&lt;li&gt;Migrate to the 2024 edition: https://github.com/rust-phf/rust-phf/pull/415&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;FmtConst&lt;/code&gt; support for &lt;code&gt;Vec&lt;/code&gt; and slice keys: https://github.com/rust-phf/rust-phf/pull/416&lt;/li&gt;
&lt;li&gt;Require suffixed integers on parsing: https://github.com/rust-phf/rust-phf/pull/419&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have some more things for the next major release, but the goal is near.&lt;/p&gt;
&lt;h3&gt;Personal projects and other OSS&lt;/h3&gt;
&lt;p&gt;I set up zizmor for mach2 and documented Xcode version availability in setup-xcode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/JohnTitor/mach2/pull/74&lt;/li&gt;
&lt;li&gt;https://github.com/JohnTitor/setup-xcode/pull/2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also did small maintenance on this site and activity.2k36.org, including a pnpm v11 upgrade:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/JohnTitor/www.2k36.org/pull/611&lt;/li&gt;
&lt;li&gt;https://github.com/JohnTitor/activity.2k36.org/pull/147&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For purell, I helped with documentation, dependency updates, and GitHub Actions hardening:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/PuerkitoBio/purell/pull/43&lt;/li&gt;
&lt;li&gt;https://github.com/PuerkitoBio/purell/pull/44&lt;/li&gt;
&lt;li&gt;https://github.com/PuerkitoBio/purell/pull/46&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Support my work&lt;/h2&gt;
&lt;p&gt;Does my FLOSS work help you or your company?
Consider sponsoring me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;!&lt;/p&gt;
&lt;h2&gt;Short notice&lt;/h2&gt;
&lt;p&gt;I&apos;m planning to move to Tokyo and take a short vacation in early June.
Therefore, OSS activities are likely to be relatively quiet for.&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Apr. 2026</title><link>https://www.2k36.org/posts/2026-april-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2026-april-report/</guid><description>A contribution report for Apr. 2026, by @JohnTitor.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Contribution summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;237 commits authored.&lt;/li&gt;
&lt;li&gt;87 pull requests opened.&lt;/li&gt;
&lt;li&gt;96 pull request reviews submitted.&lt;/li&gt;
&lt;li&gt;1 issue opened.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in April &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2026-04-01&amp;amp;to=2026-04-30&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Focus areas&lt;/h2&gt;
&lt;h3&gt;Actix&lt;/h3&gt;
&lt;p&gt;April had a lot of Actix maintenance across the project.&lt;/p&gt;
&lt;p&gt;For actix-web, I prepared the actix-http v3.12.1 release: https://github.com/actix/actix-web/releases/tag/http-v3.12.1&lt;/p&gt;
&lt;p&gt;I also worked on multipart fixes and follow-ups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix parser buffering cap: https://github.com/actix/actix-web/pull/4025&lt;/li&gt;
&lt;li&gt;Fix a multipart parser panic: https://github.com/actix/actix-web/pull/4024&lt;/li&gt;
&lt;li&gt;Count ignored fields toward &lt;code&gt;MultipartFormConfig&lt;/code&gt; limits: https://github.com/actix/actix-web/pull/4026&lt;/li&gt;
&lt;li&gt;Prepare actix-multipart 0.8.0: https://github.com/actix/actix-web/pull/4027&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other actix-web work included adding the &lt;code&gt;cookie_raw&lt;/code&gt; API, supporting multi-component path params in actix-files, fixing &lt;code&gt;web::Data&lt;/code&gt; drop behavior during graceful shutdown, and reducing a few needless allocations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/actix/actix-web/pull/4013&lt;/li&gt;
&lt;li&gt;https://github.com/actix/actix-web/pull/4039&lt;/li&gt;
&lt;li&gt;https://github.com/actix/actix-web/pull/4033&lt;/li&gt;
&lt;li&gt;https://github.com/actix/actix-web/pull/4042&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For actix-net, I spent time on bytestring performance and released bytestring v1.5.1: https://github.com/actix/actix-net/releases/tag/bytestring-v1.5.1&lt;/p&gt;
&lt;p&gt;I also wrote Actix security documentation and hardened GitHub Actions usage across several repositories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Incident response plan: https://github.com/actix/.github/pull/1&lt;/li&gt;
&lt;li&gt;Threat model: https://github.com/actix/.github/pull/2&lt;/li&gt;
&lt;li&gt;Example zizmor hardening PR: https://github.com/actix/actix-web/pull/4054&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Notify&lt;/h3&gt;
&lt;p&gt;Continued working toward notify v9.&lt;/p&gt;
&lt;p&gt;Released notify v9.0.0-rc.3 and notify-debouncer-full v0.8.0-rc.1:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/notify-rs/notify/releases/tag/notify-9.0.0-rc.3&lt;/li&gt;
&lt;li&gt;https://github.com/notify-rs/notify/releases/tag/debouncer-full-0.8.0-rc.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There were also a few fixes and performance improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avoid rebuilding queues during flush: https://github.com/notify-rs/notify/pull/883&lt;/li&gt;
&lt;li&gt;Speed up debouncer hashing with &lt;code&gt;rustc-hash&lt;/code&gt;: https://github.com/notify-rs/notify/pull/896&lt;/li&gt;
&lt;li&gt;Preserve watched path representations across backends: https://github.com/notify-rs/notify/pull/901&lt;/li&gt;
&lt;li&gt;Replace watcher state correctly when rewatching: https://github.com/notify-rs/notify/pull/906&lt;/li&gt;
&lt;li&gt;Fix kqueue path handling for non-recursive watchers: https://github.com/notify-rs/notify/pull/907&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The remaining v9 queue is mostly about tightening behavior and checking platform-specific edge cases.&lt;/p&gt;
&lt;h3&gt;Rust&lt;/h3&gt;
&lt;p&gt;I opened a stabilization PR for &lt;code&gt;tcp_deferaccept&lt;/code&gt;: https://github.com/rust-lang/rust/pull/154834&lt;/p&gt;
&lt;p&gt;On libc, I helped with the 0.2.186 release and CI/security maintenance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migrate CI from Cirrus CI to GitHub Actions: https://github.com/rust-lang/libc/pull/5058&lt;/li&gt;
&lt;li&gt;Backports for 0.2.186: https://github.com/rust-lang/libc/pull/5074&lt;/li&gt;
&lt;li&gt;Release 0.2.186: https://github.com/rust-lang/libc/pull/5075&lt;/li&gt;
&lt;li&gt;SHA-pin actions: https://github.com/rust-lang/libc/pull/5078&lt;/li&gt;
&lt;li&gt;Track further action pinning work: https://github.com/rust-lang/libc/issues/5063&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;rust-phf&lt;/h3&gt;
&lt;p&gt;I also did some rust-phf maintenance, including an experimental &lt;code&gt;ptrhash&lt;/code&gt; feature and a security policy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/rust-phf/rust-phf/pull/392&lt;/li&gt;
&lt;li&gt;https://github.com/rust-phf/rust-phf/pull/401&lt;/li&gt;
&lt;li&gt;https://github.com/rust-phf/rust-phf/pull/402&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Personal projects&lt;/h3&gt;
&lt;p&gt;Rewrote the rust-thanks-card action: https://github.com/JohnTitor/rust-thanks-card/pull/272&lt;/p&gt;
&lt;h2&gt;Support my work&lt;/h2&gt;
&lt;p&gt;Does my FLOSS work help you or your company?
Consider sponsoring me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Mar. 2026</title><link>https://www.2k36.org/posts/2026-march-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2026-march-report/</guid><description>A contribution report for Mar. 2026, by @JohnTitor.</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Contribution summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;156 commits authored.&lt;/li&gt;
&lt;li&gt;27 pull requests opened.&lt;/li&gt;
&lt;li&gt;125 pull request reviews submitted.&lt;/li&gt;
&lt;li&gt;1 issue opened.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in March &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2026-03-01&amp;amp;to=2026-03-31&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Focus areas&lt;/h2&gt;
&lt;h3&gt;Actix&lt;/h3&gt;
&lt;p&gt;I kept working on follow-ups after the February releases.&lt;/p&gt;
&lt;p&gt;For actix-extras, I added rustls support to actix-settings: https://github.com/actix/actix-extras/pull/697&lt;/p&gt;
&lt;p&gt;For actix-web, I opened a couple of actix-http improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make the HTTP/1 write buffer size configurable: https://github.com/actix/actix-web/pull/3986&lt;/li&gt;
&lt;li&gt;Make the early-response linger behavior configurable via &lt;code&gt;client_disconnect_timeout&lt;/code&gt;: https://github.com/actix/actix-web/pull/3985&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also handled smaller maintenance work, including security advisory updates and test fixes.&lt;/p&gt;
&lt;h3&gt;Notify&lt;/h3&gt;
&lt;p&gt;Continued working toward notify v9.&lt;/p&gt;
&lt;p&gt;I fixed Windows &lt;code&gt;unwatch()&lt;/code&gt; so it waits until the watch is fully removed: https://github.com/notify-rs/notify/pull/849&lt;/p&gt;
&lt;p&gt;I also added &lt;code&gt;watched_paths&lt;/code&gt; for &lt;code&gt;Debouncer&lt;/code&gt; in notify-debouncer-full: https://github.com/notify-rs/notify/pull/850&lt;/p&gt;
&lt;p&gt;There was more cleanup around flaky tests, CI, and Renovate scheduling. I still need more time before the final v9 release, but the queue is getting smaller.&lt;/p&gt;
&lt;h3&gt;Rust&lt;/h3&gt;
&lt;p&gt;I fixed some suggestions of the &lt;code&gt;for-loops-over-fallibles&lt;/code&gt; lint: https://github.com/rust-lang/rust/pull/153913&lt;/p&gt;
&lt;p&gt;I also opened a diagnostic improvement for E0401 on inner const items: https://github.com/rust-lang/rust/pull/153566&lt;/p&gt;
&lt;p&gt;On the libc side, I helped with the 0.2.183 release and CI maintenance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://github.com/rust-lang/libc/pull/5007&lt;/li&gt;
&lt;li&gt;https://github.com/rust-lang/libc/pull/5013&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Personal projects&lt;/h3&gt;
&lt;p&gt;Released &lt;a href=&quot;https://github.com/JohnTitor/dotenvor/releases/tag/v0.2.0&quot;&gt;&lt;code&gt;dotenvor&lt;/code&gt; v0.2.0&lt;/a&gt; and &lt;a href=&quot;https://github.com/JohnTitor/dotenvor/releases/tag/macros-v0.1.0&quot;&gt;&lt;code&gt;dotenvor-macros&lt;/code&gt; v0.1.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also upgraded this site to Astro v6: https://github.com/JohnTitor/www.2k36.org/pull/515&lt;/p&gt;
&lt;h2&gt;Support my work&lt;/h2&gt;
&lt;p&gt;Does my FLOSS work help you or your company?
Consider sponsoring me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Feb. 2026</title><link>https://www.2k36.org/posts/2026-february-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2026-february-report/</guid><description>A contribution report for Feb. 2026, by @JohnTitor.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Contribution summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;271 commits authored.&lt;/li&gt;
&lt;li&gt;97 pull requests opened.&lt;/li&gt;
&lt;li&gt;134 pull request reviews submitted.&lt;/li&gt;
&lt;li&gt;3 issues opened.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in February &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2026-02-01&amp;amp;to=2026-02-28&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Focus areas&lt;/h2&gt;
&lt;h3&gt;Actix&lt;/h3&gt;
&lt;p&gt;Released actix-web v4.13.0: https://github.com/actix/actix-web/releases/tag/web-v4.13.0&lt;/p&gt;
&lt;p&gt;This is the first big release this year, and it includes a lot of bug fixes and improvements. See changelog for details.&lt;/p&gt;
&lt;p&gt;And actix-ws v0.4.0 is also released: https://github.com/actix/actix-extras/releases/tag/ws-v0.4.0&lt;/p&gt;
&lt;p&gt;This release fixes almost bugs reported in the past, I hope this will help users have a better experience with actix-web and actix-ws.&lt;/p&gt;
&lt;h3&gt;Notify&lt;/h3&gt;
&lt;p&gt;Working on v9, released one release candidate, v9.0.0-rc.2: https://github.com/notify-rs/notify/releases/tag/notify-9.0.0-rc.2&lt;/p&gt;
&lt;p&gt;I plan to resolve more issues, maybe it&apos;d require 1-2 month(s).&lt;/p&gt;
&lt;h3&gt;Rust&lt;/h3&gt;
&lt;p&gt;Fixed a few ICES, improved diagnostics. I&apos;m grateful to resume my contributions lately :)&lt;/p&gt;
&lt;h3&gt;Personal projects&lt;/h3&gt;
&lt;p&gt;Released &lt;a href=&quot;https://github.com/JohnTitor/dotenvor&quot;&gt;&lt;code&gt;dotenvor&lt;/code&gt;&lt;/a&gt; which is a repleacement of &lt;code&gt;dotenv&lt;/code&gt; and &lt;code&gt;dotenvy&lt;/code&gt;.
I&apos;m not sure if it&apos;s production-ready but it works well in actix/examples,
and I hope it can be a good alternative for users who want to use dotenv in their projects.&lt;/p&gt;
&lt;h2&gt;Support my work&lt;/h2&gt;
&lt;p&gt;Does my FLOSS work help you or your company?
Consider sponsoring me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Jan. 2026</title><link>https://www.2k36.org/posts/2026-january-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2026-january-report/</guid><description>A contribution report for Jan. 2026, by @JohnTitor.</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Contribution summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;201 commits authored.&lt;/li&gt;
&lt;li&gt;43 pull requests opened.&lt;/li&gt;
&lt;li&gt;111 pull request reviews submitted.&lt;/li&gt;
&lt;li&gt;4 issues opened.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in January &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2026-01-01&amp;amp;to=2026-01-31&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Focus areas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;notify-rs/notify: release preparation, CI fixes (including FreeBSD), MSRV policy docs, Renovate setup, and routine maintenance.&lt;/li&gt;
&lt;li&gt;Actix ecosystem: actix-web and actix-extras maintenance, release prep, and doc test fixes; actix-net small codec cleanup.&lt;/li&gt;
&lt;li&gt;Rust org: rustc diagnostics cleanup around E0599, libc CI update, and a rust-project-goals proposal for libc-1.0.&lt;/li&gt;
&lt;li&gt;Misc: semver.org housekeeping, rust-phf MSRV bump, and updates across my own OSS repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;rust-lang/rust: Tweak E0599 to consolidate unsatisfied trait bound messages — https://github.com/rust-lang/rust/pull/151488&lt;/li&gt;
&lt;li&gt;actix/actix-extras: chore(ws): prepare v0.3.1 release — https://github.com/actix/actix-extras/pull/646
&lt;ul&gt;
&lt;li&gt;This should fix the compilation error around the &lt;code&gt;ws&lt;/code&gt; feature of actix-web.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;rust-lang/rust-project-goals: Add a project goal for libc-1.0 — https://github.com/rust-lang/rust-project-goals/pull/491&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Support my work&lt;/h2&gt;
&lt;p&gt;Does my FLOSS work help you or your company?
Consider sponsoring me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>The state of @JohnTitor, 2025</title><link>https://www.2k36.org/posts/state-of-2025/</link><guid isPermaLink="true">https://www.2k36.org/posts/state-of-2025/</guid><description>The state of @JohnTitor, 2025</description><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;まだ新年の抱負がギリ許されそうということはギリ去年の振り返りも許されるということ。&lt;/p&gt;
&lt;h2&gt;仕事/engineering&lt;/h2&gt;
&lt;h3&gt;day job&lt;/h3&gt;
&lt;p&gt;転職した。転職先でも引き続きプラットフォームエンジニアリングの領域で働いている。転職先でのあれこれや私事のあれこれを鑑みると「安定」のための一年だったなと思う。&lt;/p&gt;
&lt;p&gt;FLOSSでの活動はCVでも映えるし「鳴り物」になると認識しているが、初手でその恩恵に与らないように意識している。新参者、言葉を選ばなければ異物であることを忘れてはいけない。組織と共生していくためのあれこれを覚えたり、やってみたりといったことに腐心した。
最初のでかい山もそろそろ実を結びそうな感じなので気を引き締めてやり遂げたい。&lt;/p&gt;
&lt;p&gt;それとは別に影響力というところも意識するようになった。タイトルやグレード的に他者にポジティブな影響を与えることを求められる比率が高まってきていて、今になって齷齪踏ん張っている。&lt;/p&gt;
&lt;p&gt;アウトプットでいうと3本くらい社のブログを書いた:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://zenn.dev/moshjp/articles/4f91ad6f40a7bf&lt;/li&gt;
&lt;li&gt;https://zenn.dev/moshjp/articles/119b0c7a1dd585&lt;/li&gt;
&lt;li&gt;https://zenn.dev/moshjp/articles/89210853cd4dc9&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;あとはポッドキャストにも出演した:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://open.spotify.com/episode/6Q5hdZVXphE0mad9F1GTFP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今年も引き続き書いたり、あるいは話したりできたらなあというお気持ち。&lt;/p&gt;
&lt;p&gt;前職もかなり楽しい職場だったが現職も負けておらず、楽しい日々を過ごすことができている。感謝。&lt;/p&gt;
&lt;h3&gt;FLOSS&lt;/h3&gt;
&lt;p&gt;まあぼちぼちやったなあという感じ。メンテしているライブラリのメジャーリリースをいくつかやったり、vibe codingで色々作ってみたり。
この時代作りたいものをさっと形にできるのはめちゃ便利でいい。書き捨てできる幅が広がったというか。もちろん捨てないものも多くあるが。&lt;/p&gt;
&lt;p&gt;外部へのリーチというところはあまりできていない。相変わらず嫌儲思想の亜種のような、曲がった清貧思想が邪魔している。
今年の出来事だが、カンファレンスにFLOSSネタで登壇するなどよちよち頑張ろうかなという気概もあるのでこれを育てていきたい。&lt;/p&gt;
&lt;p&gt;出来ていないでいうと最近レビューが滞りがちなのであまり待たせずレスポンスしたいのと、Rustまわりへの貢献も少しずつ再開したい。&lt;/p&gt;
&lt;h2&gt;私事&lt;/h2&gt;
&lt;p&gt;安定を図る一年だったことは先に触れたが、まあそれに尽きる。おかげでだいぶ新しい暮らしにも慣れた。
自炊だの家事だのを快適に行える住環境を整えたのもあり、結構丁寧な暮らしを送ることが出来ている。一年前からは考えられないだろう。&lt;/p&gt;
&lt;p&gt;あとはめちゃくちゃゲームした。
FF16やサイバーパンク2077は外れない面白さがあったし、Schedule IやBalatroなどのインディーゲームも掘りまくった。
個人的GOTYはThe Planet Crafterで、要素の解放タイミングが絶妙でカタルシスを含めた体験が素晴らしかった。おすすめ。&lt;/p&gt;
&lt;h3&gt;今後&lt;/h3&gt;
&lt;p&gt;day job/FLOSS問わず外部へのリーチは今年頑張っていきたいことの一つ。
それと社でのやっていきもゴリゴリ進めたい。ここ1-2年くらいで何をやるかで自分も社も結構景色が変わってくるだろうなあという予感がある。仕込みを頑張りつつ、外部にお出しできるものができたらアピールしていく。&lt;/p&gt;
</content:encoded></item><item><title>新PCに引っ越したときの備忘録 2025</title><link>https://www.2k36.org/posts/new-pc-builds-2025/</link><guid isPermaLink="true">https://www.2k36.org/posts/new-pc-builds-2025/</guid><description>新PCに引っ越したときの備忘録 2025</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;一念発起して新PCに引っ越した。&lt;/p&gt;
&lt;p&gt;旧PCはちょこちょこパーツを換えていたのでいつぶりかと言われると厳密に答えるのは難しいが、少なくともCPUを買ったのは2021年10月らしい。いにしえだ。&lt;/p&gt;
&lt;p&gt;新PCの構成と、rustcのコンパイル時間などを記録として残しておく。&lt;/p&gt;
&lt;h2&gt;構成&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./pc.jpg&quot; alt=&quot;new PC pic&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: AMD Ryzen 9 9950X3D&lt;/li&gt;
&lt;li&gt;GPU: NVIDIA RTX 5070 Ti&lt;/li&gt;
&lt;li&gt;M/B: MPG X870E EDGE TI WIFI&lt;/li&gt;
&lt;li&gt;CPU fan: iCUE LINK TITAN 360 RX RGB LCD White&lt;/li&gt;
&lt;li&gt;RAM: Corsair CMH32GX5M2E6000C36W&lt;/li&gt;
&lt;li&gt;SSD: WD_Black SN7100&lt;/li&gt;
&lt;li&gt;case: MSI MAG PANO 100R PZ WHITE&lt;/li&gt;
&lt;li&gt;PSU: Steel Legend SL-1000GW&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;rustcのcompileなど、CPU heavyなタスクをいくつかやるのでCPUは強めに、ほどほどにゲームもしたいのでほどほどのGPUにした。&lt;/p&gt;
&lt;p&gt;今回は白色ビルドにした。目新しくていい。&lt;/p&gt;
&lt;h2&gt;rustc builds&lt;/h2&gt;
&lt;p&gt;bootstrap configは以下の通り:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;profile = &quot;compiler&quot;
build.jobs = 28
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;./x clean&lt;/code&gt; 後に &lt;code&gt;./x test tests/ui&lt;/code&gt; でUI testを流したときの時間:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;❯ hyperfine -r 1 &apos;./x t tests/ui&apos;
Benchmark 1: ./x t tests/ui
  Time (abs ≡):        234.682 s               [User: 2560.617 s, System: 735.184 s]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;まあまあ早そう。&lt;/p&gt;
&lt;p&gt;負荷はこんな感じ:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./image.png&quot; alt=&quot;CPU usage and temp. graph&quot; /&gt;&lt;/p&gt;
&lt;p&gt;雑に変更入れてUI test流すと:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;❯ hyperfine -r 1 &apos;./x t tests/ui&apos;
Benchmark 1: ./x t tests/ui
  Time (abs ≡):        135.148 s               [User: 1277.302 s, System: 634.298 s]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2分くらい。&lt;/p&gt;
&lt;p&gt;check buildだと1分30秒くらい:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;❯ hyperfine -r 1 &apos;./x c&apos;
Benchmark 1: ./x c
  Time (abs ≡):        97.852 s               [User: 148.231 s, System: 11.708 s]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;前PCのコンパイル時間を計測し忘れたのでなんとも言えないがまあ悪くない、か……？&lt;/p&gt;
&lt;p&gt;最近rustcをコンパイルしてなかったのもあって恩恵を体感しづらい。残念。まあ絶対値としては満足ではある。&lt;/p&gt;
&lt;h2&gt;おしまい&lt;/h2&gt;
&lt;p&gt;見た目のよさ重視でPCを組んだのは初めてなのでテンションが上がっている。&lt;/p&gt;
&lt;p&gt;なんだかんだ4年くらいOSS活動を支えてくれた旧PCにも感謝。これからもゆるくやっていき。&lt;/p&gt;
</content:encoded></item><item><title>Void Linuxに移住したときの備忘録 2025</title><link>https://www.2k36.org/posts/void-linux-2025/</link><guid isPermaLink="true">https://www.2k36.org/posts/void-linux-2025/</guid><description>Void Linuxに移住したときの備忘録 2025</description><pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;一念発起してWindowsからVoid Linuxに移住した。&lt;/p&gt;
&lt;p&gt;セットアップは基本世に残されているガイド通りなのだが、執筆時点だとそのままではうまくいかない部分もあったので後で見返せるようやったことを記録として残しておく。&lt;/p&gt;
&lt;h2&gt;環境&lt;/h2&gt;
&lt;p&gt;環境は大体以下の通り：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: AMD&lt;/li&gt;
&lt;li&gt;GPU: Nvidia&lt;/li&gt;
&lt;li&gt;OS: Void Linux&lt;/li&gt;
&lt;li&gt;DE: KDE Plasma 6&lt;/li&gt;
&lt;li&gt;Graphics Platform: Wayland&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;執筆時点だとWaylandとNvidia GPUの相性が悪いのか、雑に入れるとlogin以降グラフィックが壊れるので苦戦した。&lt;/p&gt;
&lt;h2&gt;デスクトップ環境構築まで&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;void-installer&lt;/code&gt; 実行後の状態から始める。&lt;/p&gt;
&lt;p&gt;以下を参考にした：&lt;/p&gt;
&lt;p&gt;https://gist.github.com/inscapist/83fd43b49c17e46059eb4fe0c1ae8bea&lt;/p&gt;
&lt;p&gt;https://github.com/asifakonjee/Void-Linux-KDE&lt;/p&gt;
&lt;p&gt;optionalになっているreposを追加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo xbps-install void-repo-nonfree void-repo-multilib void-repo-multilib-nonfree
sudo xbps-install -Su
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;必要なパッケージを追加（必要に応じて適宜調整すること）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo xbps-install kde-prisma kde-baseapps xorg-minimal xorg-server-devel xrdb xbacklight nvidia xdg-user-dirs xdg-utils xtools micro NetworkManager git vim kate preload rsync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;特に思想もないのでプロプライエタリドライバーを入れたいのだが、 &lt;code&gt;nvidia&lt;/code&gt; パッケージを入れるだけだとダメで、いくつか追加設定が必要。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/default/grub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/code&gt; に &lt;code&gt;nvidia-drm.modeset=1&lt;/code&gt; を追加する。追記後、GRUBを更新：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo update-grub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;次に &lt;code&gt;/etc/dracut.conf.d/nvidia.conf&lt;/code&gt; に以下を追記：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;add_drivers+=&quot; nvidia nvidia_modeset nvidia_uvm nvidia_drm &quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;initramfsを再生成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo dracut -f
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SDDMとD-Busを常駐させる：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ln -s /etc/sv/dbus /var/service/
sudo ln -s /etc/sv/sddm /var/service/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再起動してあげればKDE + Waylandを使えるようになっているはず。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;NvidiaまわりはX11だと特に設定せず使えたのだが、さすがに2025年にWaylandを使わないのはアレなので色々試行錯誤した。&lt;/p&gt;
&lt;h2&gt;音声問題&lt;/h2&gt;
&lt;p&gt;音声まわりはPulseAudioではなくPipeWireを使う。&lt;/p&gt;
&lt;p&gt;上記環境構築を行った際すでにPipeWireはインストールされていたが、ない場合は適宜インストールする：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo xbps-install pipewire wireplumber
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以降の設定は以下のドキュメントに詳しい。&lt;/p&gt;
&lt;p&gt;https://docs.voidlinux.org/config/media/pipewire.html&lt;/p&gt;
&lt;p&gt;session managerとPipeWire非対応アプリケーションのための設定を入れる：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p /etc/pipewire/pipewire.conf.d
ln -s /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/
mkdir -p /etc/pipewire/pipewire.conf.d
ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PipeWireアプリケーションをKDE側でautostart applicationとして登録すれば終わり。&lt;/p&gt;
&lt;h2&gt;日本語環境&lt;/h2&gt;
&lt;p&gt;フォントの導入と日本語入力環境のセットアップを行う。&lt;/p&gt;
&lt;p&gt;フォントはお好みで。ここでは無難にNoto系を入れた。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo xbps-install noto-fonts-cjk noto-fonts-emoji
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;日本語入力環境はfcitx or ibusにmozcを添える形になると思うが、自分の環境ではfcitxをどうこねくり回してもinput methodがうまく読み込まれなかったのでibusを使った。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo xbps-install -S ibus ibus-mozc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;おなじみのやつも設定：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; ~/.config/plasma-workspace/env/ibus.sh &amp;lt;&amp;lt; &apos;EOF&apos;
#!/bin/sh
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
EOF

chmod +x ~/.config/plasma-workspace/env/ibus.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;中華フォントになっちゃう問題への対応も入れておく(&lt;code&gt;etc/fonts/local.conf&lt;/code&gt;)：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;!DOCTYPE fontconfig SYSTEM &quot;fonts.dtd&quot;&amp;gt;
&amp;lt;fontconfig&amp;gt;
    &amp;lt;alias&amp;gt;
        &amp;lt;family&amp;gt;serif&amp;lt;/family&amp;gt;
        &amp;lt;prefer&amp;gt;
            &amp;lt;family&amp;gt;Noto Serif CJK JP&amp;lt;/family&amp;gt;
        &amp;lt;/prefer&amp;gt;
    &amp;lt;/alias&amp;gt;
    &amp;lt;alias&amp;gt;
        &amp;lt;family&amp;gt;sans-serif&amp;lt;/family&amp;gt;
        &amp;lt;prefer&amp;gt;
            &amp;lt;family&amp;gt;Noto Sans CJK JP&amp;lt;/family&amp;gt;
        &amp;lt;/prefer&amp;gt;
    &amp;lt;/alias&amp;gt;
    &amp;lt;alias&amp;gt;
        &amp;lt;family&amp;gt;monospace&amp;lt;/family&amp;gt;
        &amp;lt;prefer&amp;gt;
            &amp;lt;family&amp;gt;Noto Sans Mono CJK JP&amp;lt;/family&amp;gt;
        &amp;lt;/prefer&amp;gt;
    &amp;lt;/alias&amp;gt;
&amp;lt;/fontconfig&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;完成&lt;/h2&gt;
&lt;p&gt;あとは好きなように使うだけ。&lt;/p&gt;
&lt;p&gt;今回はDistroWatchの評価基準でVoid Linuxにしてみたが、飽きたらGarudaとかEndeavourとか試してみたい。&lt;/p&gt;
&lt;p&gt;まだ完全に開発環境を整えられていないので、何かあったらまた書こうと思う。&lt;/p&gt;
</content:encoded></item><item><title>転職2025</title><link>https://www.2k36.org/posts/20250614/</link><guid isPermaLink="true">https://www.2k36.org/posts/20250614/</guid><description>転職をしたときの記録2025</description><pubDate>Sat, 14 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2025年4月末で株式会社カナリーを退職し、5月にMOSH株式会社に入社しました。そろそろ落ち着いたので退職・転職エントリを拵えようと思います。&lt;/p&gt;
&lt;h2&gt;Canaryでやったこと&lt;/h2&gt;
&lt;p&gt;Canaryでは最初の1年間をバックエンドエンジニアとして過ごしました。
Goやk8sなどを使った業務経験がない状態からのスタートでしたが、当時からコードベースが一定整備されており、スムーズに開発を進められた記憶があります。
一般的なAPI serverの実装や、インフラ部分のreplacementを担当しました。&lt;/p&gt;
&lt;p&gt;その後、プラットフォームチームの立ち上げに伴いプラットフォームエンジニアにロールチェンジしました。
立ち上げ当初はフルタイムメンバーが自分しかおらず、また事例の少ない分野でもあったため色々手探りの状態からのスタートでしたが、今ではチームの規模も拡大しやってきたことも積み重なってきました。
IaCやCIのsecurity hardeningやk8s cluster/GAR/third-party servicesなどの移行作業、エラーレートを下げる・O11yを強化するなどのSRE的作業まで色々泥臭くやってきました。&lt;/p&gt;
&lt;p&gt;労働環境もとてもよく、出社・フルリモートの裁量や生成AIツールの利用補助など福利厚生もしっかりしていた印象です。&lt;/p&gt;
&lt;h2&gt;なぜやめたの？&lt;/h2&gt;
&lt;p&gt;熱意に負けました。
内面的な話として、自分ならではの価値提供ができるという部分に強い自己肯定感を覚えるというのがあり、そこをくすぐられました。
切嗣も言っていましたが、誰かを助けるということは誰かを助けないということです。
Canaryのプラットフォームチームはすでに自分抜きでも回るようになっており、2年前とは大きく変わって自分も安心して退職できるようになっていました。
その中でより自分が手助けできる環境を求めた結果が今回の転職に繋がりました。&lt;/p&gt;
&lt;h2&gt;次何やるの？&lt;/h2&gt;
&lt;p&gt;2025年5月よりMOSH株式会社に入社しました。&lt;/p&gt;
&lt;p&gt;MOSHではプロダクティビティチーム所属のSWEとして、技術基盤をはじめとした改善活動に取り組んでいます。やっていくことは大枠変わりませんが、幾分見える景色が違うので新鮮な気持ちです。&lt;/p&gt;
&lt;p&gt;早く対外的に見せられる成果を作れたらな～という思いでやっていきです。&lt;/p&gt;
&lt;h2&gt;例のリンク&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;Sponsors&lt;/a&gt; 待ってます。&lt;/p&gt;
</content:encoded></item><item><title>diary: 20240114</title><link>https://www.2k36.org/posts/20240114/</link><guid isPermaLink="true">https://www.2k36.org/posts/20240114/</guid><description>diary: 20240114</description><pubDate>Sun, 14 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;「お、お嬢様！私も成長して最近はリセットすることもなくなりました！」&lt;/p&gt;
&lt;p&gt;「それは単にリセットする人間関係がなくなってしまっただけってどうして気付けないの？」&lt;/p&gt;
&lt;p&gt;「お、お嬢様……」&lt;/p&gt;
&lt;p&gt;リセットすると関係の再構築が手間だし、バツが悪い顔をしなくちゃあいけないのも大変なので、それはそれでいいのだと思う。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;12月は酔狂のためほぼ毎日部屋を出ていたが1月になって落ち着いた。そのせいで思考に使う時間がまた戻ってきてしまった。結果何もできない肉塊の再誕生である。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;数年前、日記を書いていたときは露悪的だろうが何だろうがとにかく文章まがいのものは生成できていたのに、今はもうその脳機能すら退化してしまっている。&lt;/p&gt;
&lt;p&gt;華であるうちに幕引きとしたい思いは今も強いが、やはりありえるかもしれない何かへの期待を捨てきれない。&lt;/p&gt;
&lt;p&gt;投資で成功するにはいかに損切りの判断を躊躇なく行えるかが肝要らしい。&lt;/p&gt;
&lt;p&gt;僕は一生成功できないんだろうな。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;世の中には潤んだ目で有難がって施しを受けてくれる弱者と思うように掌握できない救いようのない弱者とがいて、前者からあぶれたものを後者で括ってしまうのが、強者である方々の責任の一切を押し付けてしまえるのが楽でいいから、みんなつい同調してしまうの。&lt;/p&gt;
</content:encoded></item><item><title>The state of @JohnTitor, 2023</title><link>https://www.2k36.org/posts/state-of-2023/</link><guid isPermaLink="true">https://www.2k36.org/posts/state-of-2023/</guid><description>The state of @JohnTitor, 2023</description><pubDate>Mon, 01 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;LoLの配信観ながら寝落ちしてたら年が明けていました。振り返りと抱負、やっていきます。&lt;/p&gt;
&lt;h2&gt;旅行&lt;/h2&gt;
&lt;p&gt;北海道、関東、関西、南九州、そして韓国。色々行きました。&lt;/p&gt;
&lt;p&gt;特に東京は素晴らしいホテルが密集していてよいのですが、転居後はめっきり行かなくなってしまいました。荷物も少なく済むし悪くないとは思うのですが結局機会なく2023年を終えてしまいました。&lt;/p&gt;
&lt;p&gt;2024年は海外にも足を向けられたらと思います。vs. 円安。&lt;/p&gt;
&lt;h2&gt;転居&lt;/h2&gt;
&lt;p&gt;夏の盛りに東京に居を移しました。&lt;/p&gt;
&lt;p&gt;2023年上半期に東京まで行く機会が多くその支度が面倒になってしまったことを始め色々が重なった結果です。&lt;/p&gt;
&lt;p&gt;お上りさんらしく、この地の便利さに日々感心しています。催事が頻繁にあって、その日の気分で足を運べる環境にあるというのはとても恵まれています。&lt;/p&gt;
&lt;p&gt;外に出る機会も豊富に設けられ、しかも身近なのでふらふらする日が増えました。歩いて健康になった分喫煙の量を増やして不健康を維持しています。&lt;/p&gt;
&lt;h2&gt;職&lt;/h2&gt;
&lt;p&gt;現職ではプラットフォームチームの組閣から初動までを行いました。&lt;/p&gt;
&lt;p&gt;色々と試行錯誤していますが、遊撃手のような立ち振舞は好きなので日々楽しみながらお仕事できています。幸せ。&lt;/p&gt;
&lt;p&gt;外の人々とも色々お話しました。&lt;/p&gt;
&lt;p&gt;技術面はおいといて、行動面でのミスマッチと精神面での不安定さを嫌われることが多かったです。そこを覆すほどのﾊﾟｩﾜｰや不安を払拭する材料を持ち合わせていないということでもあります。&lt;/p&gt;
&lt;p&gt;一つ人生の転機があったのですが、俺は大事なときほどトチるのでみすみすそれを逃しています。&lt;/p&gt;
&lt;p&gt;身体を洗う順番、左右どちらから靴を履くか、そういった自分の中での決め事を重要視するきらいがあり、今回はそれを破る形で選択をしてしまったことで悔恨の念が拭えません。直感に反する選択をするとどうあれ後悔を大きく感じてしまいます。学びです。&lt;/p&gt;
&lt;h2&gt;OSS&lt;/h2&gt;
&lt;p&gt;副業を始めたこともあり、コントリビューションに割く時間が少なくなってしまい、結果進捗もそこまでついてこない結果になってしまいました。&lt;/p&gt;
&lt;p&gt;最低限レビューだけはできるだけ滞りなく回すようにはできたので壊滅はしていませんが、2023年の目標であったlibc crateのmajor releaseはついぞ達成できませんでした。&lt;/p&gt;
&lt;p&gt;ただ、そこまでのロードマップ・TODOリスト作成はできていて、ある程度の算段もついているので2024年こそは、という感じです。&lt;/p&gt;
&lt;p&gt;経済的にはどうしても比較的安定的な収入源となる副業を優先してしまいがちで、本業を含めたその他収入部をもう少し大きくしないと現状を変えられないので歯痒い思いが募ります。&lt;/p&gt;
&lt;h2&gt;2024年&lt;/h2&gt;
&lt;p&gt;生存を目標にやっていきます。&lt;/p&gt;
&lt;p&gt;今でも意識が途切れ得ることに恐怖を感じますが、名取の死生観・終活観のような力の抜き方を身に着けたいです。&lt;/p&gt;
&lt;p&gt;ひとまず、俺の葬式で流す曲でも探そうと思います。&lt;/p&gt;
</content:encoded></item><item><title>The state of @JohnTitor, 2022</title><link>https://www.2k36.org/posts/state-of-2022/</link><guid isPermaLink="true">https://www.2k36.org/posts/state-of-2022/</guid><description>The state of @JohnTitor, 2022</description><pubDate>Fri, 23 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;The stats&lt;/h2&gt;
&lt;h3&gt;The number of PRS I submitted&lt;/h3&gt;
&lt;p&gt;As of the writing this, I&apos;ve submitted 430 PRs this year (&lt;a href=&quot;https://github.com/pulls?q=is%3Apr+author%3AJohnTitor+is%3Apublic+created%3A2022-01-01..2022-12-31&quot;&gt;link&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./prs2022.png&quot; alt=&quot;PRs count 2022&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;The number of PRs I reviewed&lt;/h3&gt;
&lt;p&gt;As of the writing this, I&apos;ve reviewed 786 PRs this year (&lt;a href=&quot;https://github.com/pulls?q=is%3Apr+reviewed-by%3AJohnTitor+is%3Apublic+created%3A2022-01-01..2022-12-31+-label%3Adependencies&quot;&gt;link&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./reviews2022.png&quot; alt=&quot;reviewed PRs count 2022&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;The number of public contributions&lt;/h3&gt;
&lt;p&gt;As of writing this, I&apos;ve made 4024 public contributions this year [^1].&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./contributions2022.png&quot; alt=&quot;contributions count 2022&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Sponsors&lt;/h2&gt;
&lt;p&gt;I&apos;ve been receiving a lot of support from my sponsors. Thank you so much!&lt;/p&gt;
&lt;p&gt;I won&apos;t reveal the exact amount of money I&apos;ve received since it&apos;s somewhat sensitive,
but it accounts for 20 to 30% of my income this year.
My sponsors literally make my life easier.&lt;/p&gt;
&lt;p&gt;Here&apos;s my sponsors as of the writing this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./sponsors2022.svg&quot; alt=&quot;sponsors 2022&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This image is generated by &lt;a href=&quot;https://github.com/antfu/sponsorkit&quot;&gt;Sponsorkit&lt;/a&gt; with some tweaks.&lt;/p&gt;
&lt;p&gt;I&apos;d especially like to express my tremendous gratitude to the long-time sponsors.
They make my life sustainable!&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I&apos;m planning to continue my work contributing to FLOSS, in particular, the Rust community.&lt;/p&gt;
&lt;p&gt;One thing I&apos;d like to resolve in 2023 is to make two policies on the libc crate,
one is for minimum supported Rust version (MSRV) and the other is for minimum supported system library version.&lt;/p&gt;
&lt;p&gt;The current MSRV of the crate is 1.13.0, which is quite old.
The libc crate currently supports newer Rust features using &lt;code&gt;cfg&lt;/code&gt;s,
but it adds huge complexity to the codebase. It can be seen
in &lt;a href=&quot;https://github.com/rust-lang/libc/pull/2845&quot;&gt;this PR&lt;/a&gt;&apos;s deletion diff.
&lt;a href=&quot;https://github.com/rust-lang/libs-team/issues/72&quot;&gt;This issue&lt;/a&gt; has a lot of discussion on this topic
but the decision hasn&apos;t been made yet.&lt;/p&gt;
&lt;p&gt;And, we also don&apos;t have any policies for minimum supported system library version, e.g. glibc or musl.
This can be a problem when an upstream changes an ABI or removes an item.
If the libc crate followed that change immediately, it would break the existing code that depends on
old system library versions. There are some related discussion, e.g.
&lt;a href=&quot;https://github.com/rust-lang/libc/issues/1412&quot;&gt;#1412&lt;/a&gt; or &lt;a href=&quot;https://github.com/rust-lang/libc/issues/1848&quot;&gt;#1848&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m sure making such policies will be difficult and controversial,
but I think it&apos;s necessary to make the crate more maintainable.&lt;/p&gt;
&lt;p&gt;If you find my work useful, please consider sponsoring me. It definitely helps me and my life a lot.
You can sponsor me via &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;[^1]: Noticed that there are fewer contributions at the beginning of the year? That&apos;s because I was &lt;a href=&quot;https://na.finalfantasyxiv.com/endwalker/&quot;&gt;&quot;endwalk&quot;&lt;/a&gt;ing.&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for May 2022</title><link>https://www.2k36.org/posts/2022-may-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2022-may-report/</guid><description>A contribution report for May 2022, by @JohnTitor.</description><pubDate>Sat, 18 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Contribution summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Opened 113 PRs and reviewed 116 PRs.
&lt;ul&gt;
&lt;li&gt;Opened 48 PRs on &lt;a href=&quot;https://github.com/rust-lang/rust&quot;&gt;rust-lang/rust&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;Stabilized some features, added a bunch of regression tests, cleaned up code, and so on!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Others / brief review&lt;/h2&gt;
&lt;h3&gt;About my job&lt;/h3&gt;
&lt;p&gt;My contract with Huawei has ended.
That was wonderful time, I could contribute FLOSS without financial concern.
I now work for a Japanese company and am writing Go code.&lt;/p&gt;
&lt;p&gt;If you has a job offer that I can communicate with Japanese, feel free to email me :)&lt;/p&gt;
&lt;h3&gt;FLOSS work&lt;/h3&gt;
&lt;p&gt;I&apos;ve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;become a LLVM committer, contributed to some test and doc fixes&lt;/li&gt;
&lt;li&gt;become a Kubernetes organization member, cotributed to test-infra, krew, docs, and some more things&lt;/li&gt;
&lt;li&gt;become an Invited Expert of W3C i18n WG, will contribute to i18n-related stuff&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this year, I want to try to start new things other than Rust.
Rust is my comfort zone and I&apos;d like to go to outside of it.&lt;/p&gt;
&lt;h2&gt;Thanks to all my sponsors!&lt;/h2&gt;
&lt;p&gt;Sponsoring helps my life and FLOSS work much, thanks!&lt;/p&gt;
&lt;p&gt;My sponsors are listed on the &lt;a href=&quot;../&quot;&gt;index page&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Want to support my work?&lt;/h3&gt;
&lt;p&gt;Does my FLOSS work help you or your company?
Consider sponsoring me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Jun. 2021</title><link>https://www.2k36.org/posts/2021-june-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2021-june-report/</guid><description>A contribution report for Jun. 2021, by @JohnTitor.</description><pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Highlighted works&lt;/h2&gt;
&lt;p&gt;June was a great month!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opened 121 PRs and reviewed 170 PRs.
&lt;ul&gt;
&lt;li&gt;Opened 50+ PRs on &lt;a href=&quot;https://github.com/rust-lang/rust&quot;&gt;rust-lang/rust&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;Stabilized some features, tweaked rustdoc css, implemented one RFC, improved some compiler behavior, and so on!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Made two releases on the &lt;a href=&quot;https://github.com/rust-lang/libc&quot;&gt;libc&lt;/a&gt; crate.&lt;/li&gt;
&lt;li&gt;Made one release on the &lt;a href=&quot;https://github.com/rust-phf/rust-phf&quot;&gt;rust-phf&lt;/a&gt; crates.&lt;/li&gt;
&lt;li&gt;Did some cleanups on the &lt;a href=&quot;https://doc.rust-lang.org/nightly/nomicon/&quot;&gt;nomicon&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Others / brief review&lt;/h2&gt;
&lt;p&gt;Some happy news from me!&lt;/p&gt;
&lt;h3&gt;About my job&lt;/h3&gt;
&lt;p&gt;I&apos;m now part of Huawei (since a few month ago) but nothing has changed, I&apos;m working on rust-lang things as a work.
Thanks to them, I&apos;m contributing to Rust-related stuff more actively!&lt;/p&gt;
&lt;h3&gt;I&apos;m now co-lead of the rustc-dev-guide working group&lt;/h3&gt;
&lt;p&gt;I&apos;ve been contributing to the rustc-dev-guide since 2019 (it used to be called as &quot;rustc-guide&quot;).
And now, I&apos;m happy to announce that I&apos;m new co-lead of the WG.
Huge thanks to &lt;a href=&quot;https://github.com/jyn514&quot;&gt;Joshua&lt;/a&gt;, the previous co-lead, they&apos;ve made many contributions.&lt;/p&gt;
&lt;h2&gt;Thanks to all my sponsors!&lt;/h2&gt;
&lt;p&gt;Sponsoring helps my life and FLOSS work much, thanks!&lt;/p&gt;
&lt;p&gt;My sponsors (as of 2021-07-02, ordered by oldest):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/crystaldust&quot;&gt;https://github.com/crystaldust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/kuy&quot;&gt;https://github.com/kuy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/raakka&quot;&gt;https://github.com/raakka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hhatto&quot;&gt;https://github.com/hhatto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/himanoa&quot;&gt;https://github.com/himanoa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/dorayakikun&quot;&gt;https://github.com/dorayakikun&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/romatthe&quot;&gt;https://github.com/romatthe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/freddi-kit&quot;&gt;https://github.com/freddi-kit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mshrtsr&quot;&gt;https://github.com/mshrtsr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/nazar-pc&quot;&gt;https://github.com/nazar-pc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/uta8a&quot;&gt;https://github.com/uta8a&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Want to support my work?&lt;/h3&gt;
&lt;p&gt;You can support me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Apr. and May 2021</title><link>https://www.2k36.org/posts/2021-april-may-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2021-april-may-report/</guid><description>A contribution report for Apr. and May 2021, by @JohnTitor.</description><pubDate>Tue, 01 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Highlighted works&lt;/h2&gt;
&lt;h3&gt;April&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Wrote a Japanese version of the &quot;Rust Perf Book&quot;, originally written by Nicholas Nethercote: &lt;a href=&quot;https://github.com/JohnTitor/perf-book-ja&quot;&gt;https://github.com/JohnTitor/perf-book-ja&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Some diagnostics improvements on rustc:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rust-lang/rust/pull/83816&quot;&gt;https://github.com/rust-lang/rust/pull/83816&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rust-lang/rust/pull/83729&quot;&gt;https://github.com/rust-lang/rust/pull/83729&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;May&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fix some potential UB on ctest2: &lt;a href=&quot;https://github.com/JohnTitor/ctest2&quot;&gt;https://github.com/JohnTitor/ctest2&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;It&apos;s now released as 0.4.1.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reviewed a couple of PRs on the libc crate: &lt;a href=&quot;https://github.com/rust-lang/libc&quot;&gt;https://github.com/rust-lang/libc&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;v0.2.95 has a lof of new API, try out!: &lt;a href=&quot;https://crates.io/crates/libc/0.2.95&quot;&gt;https://crates.io/crates/libc/0.2.95&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Others / brief review&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I&apos;ve noticed my feeling and commit/review counts are &lt;em&gt;unstable&lt;/em&gt; right now.
&lt;ul&gt;
&lt;li&gt;So removed these sections for now and focused the Highlighted works section.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks to all my sponsors!&lt;/h2&gt;
&lt;p&gt;My sponsors (as of 2021-06-01, ordered by oldest):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/crystaldust&quot;&gt;https://github.com/crystaldust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/kuy&quot;&gt;https://github.com/kuy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/raakka&quot;&gt;https://github.com/raakka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hhatto&quot;&gt;https://github.com/hhatto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/himanoa&quot;&gt;https://github.com/himanoa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/dorayakikun&quot;&gt;https://github.com/dorayakikun&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/romatthe&quot;&gt;https://github.com/romatthe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/freddi-kit&quot;&gt;https://github.com/freddi-kit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mshrtsr&quot;&gt;https://github.com/mshrtsr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/nazar-pc&quot;&gt;https://github.com/nazar-pc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/uta8a&quot;&gt;https://github.com/uta8a&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Want to support my work?&lt;/h2&gt;
&lt;p&gt;You can support me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;.
It&apos;ll definitely help my life and FLOSS work, thanks!&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Mar. 2021</title><link>https://www.2k36.org/posts/2021-march-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2021-march-report/</guid><description>A contribution report for Mar. 2021, by @JohnTitor.</description><pubDate>Fri, 02 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Commits / PRs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;commits: 297 commits in 25 repos
&lt;ul&gt;
&lt;li&gt;month-on-month rate: 294% (101 commits in 19 repos)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PRs: 98 PRs in 21 repos
&lt;ul&gt;
&lt;li&gt;month-on-month rate: 376% (26 PRs in 6 repos)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Code reviews&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reviewed 116 PRs in 19 repos
&lt;ul&gt;
&lt;li&gt;month-on-month rate: 214% (54 PRs in 12 repos)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in March &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2021-03-01&amp;amp;to=2021-03-31&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Highlighted works&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rust-lang/rust/pull/83654&quot;&gt;https://github.com/rust-lang/rust/pull/83654&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://rust-lang.github.io/rustup-components-history/&quot;&gt;https://rust-lang.github.io/rustup-components-history/&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;I made some minor improvements on the rustup components history.
E.g., it now displays &quot;Tier 2.5&quot;, previously it was &quot;Tier25&quot;.
Rust had so many tiers!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Migrated from Travis CI to GHA on the rustc-dev-guide
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rust-lang/rustc-dev-guide/pull/1073&quot;&gt;https://github.com/rust-lang/rustc-dev-guide/pull/1073&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;So, GHA is now one of my area :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Others / brief review&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;March was an active month.
&lt;ul&gt;
&lt;li&gt;Comparing February, I made a lot of contributions in March since I got my passion and time back.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;I became a &lt;a href=&quot;https://www.rust-lang.org/governance/teams/library&quot;&gt;library-reviewer on rust-lang/rust&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;I&apos;ll help libc-related and some minor things.
But I want to provide more help once I&apos;m familiar with some area, of course.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Also, I became a GNOME foundation member.
&lt;ul&gt;
&lt;li&gt;...because I&apos;ve helped Japanese translations since last Summer. i18n/l10n is my life.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks to all my sponsors!&lt;/h2&gt;
&lt;p&gt;My sponsors (March, 2021):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/crystaldust&quot;&gt;https://github.com/crystaldust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/kuy&quot;&gt;https://github.com/kuy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/raakka&quot;&gt;https://github.com/raakka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hhatto&quot;&gt;https://github.com/hhatto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/himanoa&quot;&gt;https://github.com/himanoa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Want to support my work?&lt;/h2&gt;
&lt;p&gt;You can support me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;.
It&apos;ll definitely help my life and FLOSS work, thanks!&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Feb. 2021</title><link>https://www.2k36.org/posts/2021-february-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2021-february-report/</guid><description>A contribution report for Feb. 2021, by @JohnTitor.</description><pubDate>Thu, 04 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Commits / PRs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;commits: 101 commits in 19 repos
&lt;ul&gt;
&lt;li&gt;month-on-month rate: 52% (191 commits in 19 repos)&lt;/li&gt;
&lt;li&gt;year-on-year rate: 33% (300 commits in 29 repos)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PRs: 26 PRs in 6 repos
&lt;ul&gt;
&lt;li&gt;month-on-month rate: 52% (50 PRs in 13 repos)&lt;/li&gt;
&lt;li&gt;year-on-year rate: 36% (123 PRs in 24 repos)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: These values may contain private contributions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Code reviews&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reviewed 54 PRs in 12 repos
&lt;ul&gt;
&lt;li&gt;month-on-month rate: 120% (45 PRs in 11 repos)&lt;/li&gt;
&lt;li&gt;year-on-year rate: 48% (104 PRs in 28 repos)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in February &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2021-02-01&amp;amp;to=2021-02-28&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Highlighted works&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reviewed 12 PRs in rust-lang/libc
&lt;ul&gt;
&lt;li&gt;Thanks all the contributors, libc v0.2.87 which includes them should be available now!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rust-lang/www.rust-lang.org/pull/1445&quot;&gt;https://github.com/rust-lang/www.rust-lang.org/pull/1445&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Did you know that the governance page shew the 2019 roadmap until recently?&lt;/li&gt;
&lt;li&gt;Please check Rust&apos;s 2021 roadmap if you haven&apos;t read it :) It mentions how we manage Rust teams in the future.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Others / brief review&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Why does the contribution count keep decreasing?
&lt;ul&gt;
&lt;li&gt;I didn&apos;t think my physical condition or the time I spent FLOSS had changed much.&lt;/li&gt;
&lt;li&gt;...but I didn&apos;t make rollups much and it affected commit/PR count.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Now my condition isn&apos;t bad and I may be able to find more time than February.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks to all my sponsors!&lt;/h2&gt;
&lt;p&gt;My sponsors (February, 2021):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/crystaldust&quot;&gt;https://github.com/crystaldust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/kuy&quot;&gt;https://github.com/kuy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/raakka&quot;&gt;https://github.com/raakka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Want to support my work?&lt;/h2&gt;
&lt;p&gt;You can support me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;.
It&apos;ll definitely help my life and FLOSS work, thanks!&lt;/p&gt;
</content:encoded></item><item><title>Contribution report for Jan. 2021</title><link>https://www.2k36.org/posts/2021-january-report/</link><guid isPermaLink="true">https://www.2k36.org/posts/2021-january-report/</guid><description>A contribution report for Jan. 2021, by @JohnTitor.</description><pubDate>Sat, 13 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Commits / PRs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;commits: 191 commits in 19 repos
&lt;ul&gt;
&lt;li&gt;year-on-year rate: 42% (453 commits in 24 repos)&lt;/li&gt;
&lt;li&gt;In last year, I made a lot of contributions to Clippy and rust-lang/rust (rustc).
But I didn&apos;t this year because of my physical condition :(&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PRs: 50 PRs in 13 repos
&lt;ul&gt;
&lt;li&gt;year-on-year rate: 36% (138 PRs in 26 repos)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Code reviews&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;reviewed 45 PRs in 11 repos
&lt;ul&gt;
&lt;li&gt;year-on-year rate: 48% (93 PRs in 18 repos)&lt;/li&gt;
&lt;li&gt;In last year, I reviewed a lot of PRs related to Actix, but didn&apos;t this year
(thanks to &lt;a href=&quot;https://github.com/robjtede&quot;&gt;@robjtede&lt;/a&gt; and &lt;a href=&quot;https://github.com/fakeshadow&quot;&gt;@fakeshadow&lt;/a&gt; &amp;lt;3).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(You can find my full contributions in January &lt;a href=&quot;https://github.com/JohnTitor?tab=overview&amp;amp;from=2021-01-01&amp;amp;to=2021-01-31&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Highlighted works&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Do not suggest invalid code in pattern with loop: &lt;a href=&quot;https://github.com/rust-lang/rust/pull/80941&quot;&gt;https://github.com/rust-lang/rust/pull/80941&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Now rustc doesn&apos;t emit an invalid suggestions with moved value error on &lt;code&gt;loop&lt;/code&gt; + &lt;code&gt;if let&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://os.phil-opp.com/ja/&quot;&gt;https://os.phil-opp.com/ja/&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;We&apos;ve done translations for the &quot;bare bones&quot; part (I helped all the posts as a reviewer/co-translator).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Others / brief review&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I spent some time for some interviews therefore I couldn&apos;t find much time for FLOSS :(&lt;/li&gt;
&lt;li&gt;I was taking a break as getting sick.&lt;/li&gt;
&lt;li&gt;So, the contribution count decreased, as expected.
&lt;ul&gt;
&lt;li&gt;It should be back in a few months, hopefully.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks to all my sponsors!&lt;/h2&gt;
&lt;p&gt;My sponsors (January, 2021):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/crystaldust&quot;&gt;https://github.com/crystaldust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/kuy&quot;&gt;https://github.com/kuy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/raakka&quot;&gt;https://github.com/raakka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Want to support my work?&lt;/h2&gt;
&lt;p&gt;You can support me at &lt;a href=&quot;https://github.com/sponsors/JohnTitor&quot;&gt;https://github.com/sponsors/JohnTitor&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item></channel></rss>