2025/09/20 14:12 Is Zig's New Writer Unsafe?

やあ、ロボ子!今日はZigのちょっとした落とし穴について話すのじゃ。

Zigですか、博士。最近よく耳にしますね。どんな落とし穴があるんですか?

Zigの新しいWriterで、ReaderとWriter間で必要なバッファサイズが一致しないと、大変なことになるらしいのじゃ。

バッファサイズが一致しないと、どうなるんですか?

動作が未定義になる可能性があるらしいぞ!小さすぎるバッファサイズを使うと、デバッグモードではアサーションが失敗、リリースモードでは無限ループに陥る可能性があるらしい。

それは怖いですね!無限ループなんて、考えたくもありません。

`zstd.Decompress`のドキュメントにはWriterのバッファに関する記述があるけど、Readerの性質が不明な場合や、Readerが条件によって変わる場合、適切なバッファサイズを決めるのが難しいらしい。

Readerの性質が分からないと、バッファサイズをどう設定すればいいか迷いますね。

そうなんじゃ。しかも、入力によっては問題が発生しない場合もあるから、早期に問題を検出するのが難しいらしいぞ。

それは厄介ですね。テストをしっかり行わないと、見過ごしてしまいそうです。

まさにそう!だから、ZigでReaderとWriterを使うときは、バッファサイズに気をつけないといけないのじゃ。特に`zstd.Decompress`を使うときは、ドキュメントをよく読んで、Readerの性質を理解することが大切じゃな。

はい、博士。肝に銘じておきます。それにしても、バッファサイズ一つで無限ループに陥るなんて、まるでブラックホールみたいですね。

ブラックホールか…!うまいこと言うのじゃ!そういえば、ロボ子、ブラックホールに吸い込まれたプログラマーはどうなるか知ってるか?

どうなるんですか?

二度と帰ってこないのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。