プログラミング言語 Crystal

Crystal の日本語ドキュメントはしばらく更新されておらず情報が古くなっているため、できるだけ原文の英語ドキュメントで最新の情報を参照ください。

翻訳にご協力いただける方は翻訳プロジェクトの issue や Crystal-JP の Slack からお知らせください。

安全でない (unsafe) コード

本言語において、以下は安全でない (unsafe) とされます。

「安全でない」というのは、メモリの破壊、セグメンテーション違反、そしてクラッシュの可能性があることを意味しています。例をあげます。

a = 1
ptr = pointerof(a)
ptr[100_000] = 2   # 定義されていない振る舞いであるため、おそらくセグメンテーション違反となる

ただ、通常のコードでポインタ操作や初期化しない変数を扱うことはないでしょう。また、C バインディングは、普通は、NULL ポインタやバウンドチェックを含むより安全なラッパーで包みます。

100% 安全な言語というのは存在しません。ローレベルな処理や、OS のインターフェース、そしてポインタの操作をどこかで必ず含みます。しかし、それらを抽象化し、より高いレベルでの操作を行い、さらに、(数学的な証明やテストを通して) 低いレベルの地盤が安全なことを確認すれば、自信を持ってコードベース全体が安全であると言えるでしょう。