2026年7月24日(金)掲載 2,900本日 0
HN6019

C言語でのシステム開発をより安全に!標準ライブラリ代替API「Lib0xc」が登場

Lib0xc: A set of C standard library-adjacent APIs for safer systems programming

wooster3か月前

議論

10
0woosterスレ主603か月前

Lib0xcは、より安全なシステムプログラミングを実現するために設計された、C標準ライブラリの代替となるAPIセットです。

1platinumrad3か月前

こういうのが流行ってほしいと心から思うよ。CとC++の標準ライブラリには、手軽に解決できる問題が山ほどあるからね。安全なインターフェースの使用を義務付けるだけで、両言語ともスペーシャルメモリの問題は90%くらい解決できるはず。

2matheusmoreira3か月前

興味深いね。今夜じっくり調べて、自分のCプロジェクトにも導入してみるつもり。特にclangの-fbounds-safetyは要チェックだ。

3atilimcetin3か月前

タイトルからしてかなり期待できそう。TODOリストに追加して深掘りするよ。C++の安全なサブセット内でこの標準ライブラリを使えば、Zigの強力な対抗馬になり得る(少なくとも自分にとっては)。

4raggi3か月前

CやC++、POSIXの標準規格自体でこれをやらない正当な理由なんてないよ。どれも安全なAPIを追加して、安全でないAPIを非推奨にするエディションを策定し、長期的な移行を始めるべき。やり方は分かってるし、これまでも成功事例は多い。技術的な懸念はもちろんあるだろうけど、だからといってやらない理由にはならない。コンパイラやライブラリチェーン側で、古い安全性の低い形式のサポートをしばらく維持することだってできるはずさ。

5nxobject3か月前

ちょっと気になるんだけど、MSFTはこれを本番環境で使ってるの?それとも「20%ルール」のプロジェクト?MSVCで使われているGNU拡張をコンパイルできるのか確信が持てないんだよね。

6EPWN3D3か月前

著者です。Show HNに投稿したのですが、先に誰かに投稿されてしまったようなので、そちらの紹介文を再掲します。

より安全なCプログラミングのためのパターンは、業界で何十年も前から「カーゴ・カルト」的に語り継がれてきました。C言語の進化は意図的に遅いため、こうしたパターンが言語のファーストクラスの構成要素として取り込まれることは稀で、いわばプログラミングの「口承」として世代から世代へと受け継がれてきたのです。

lib0xcはGNUC拡張とC11の機能を利用して、より安全なCの習慣やパターンを、実用的なドキュメントとテストを備えた現実のAPIへと体系化しました。context_tタグ付きポインタ型でvoid *へのキャストを減らし、call_tで型チェック付きの遅延関数呼び出しを有効にし、struct_field_tで構造体ディスクリプタを調査しましょう。符号付き整数を符号なし整数に代入して後で後悔するような事態を避けるため、__cast_signed_unsignedを使って-Wint-conversionを無視するのはもうやめましょう。これらはlib0xcが提供する標準ライブラリに隣接した機能のほんの一部です。

また、lib0xcはロギング、ユニットテスト、型を扱うためのバッファオブジェクト、Mach-OとELFの統合リンカーセットなど、基本的なシステムプログラミングツールキットも提供しています。

lib0xcの機能はすべて、clangのbounds-safety拡張が有効であれば動作します。gccとclangの両方をサポートしており、他の環境への移植も比較的容易です。

これはRustでもなければ、完全な型安全性を謳うものでもありません。そうあるべきではないのです。既存のCコードベースを昨日よりも大幅に安全にするための手助けを目的としています。

著作権は私の雇用主が保持しており、MITライセンスでの公開が許可されています。

8bananaboy3か月前

これはすごくかっこいい!

9andrefelipeafos3か月前

試した人に質問なんだけど、これって既存のCコードベースに少しずつ組み込めるもの?それとも「新規プロジェクト専用」という感じ?READMEを読んでもそのあたりがよく分からなかったんだ。