Nim は数少ない「プログラム可能」な静的型付け言語であり、 C の速度とメモリの効率性、表情力豊かなシンタックス、 メモリの安全性と複数のターゲット言語を兼ね備えています。
コンパイラと標準ライブラリは積極的に開発が続けられており、 継続的な安定性を保証するためにテストケース一式を用意しております。 安定した基盤を求めているプロジェクト向けに基準として使用できる正規リリースを3~6ヶ月ごとに公開しております。 稀に破壊的変更が行われることはありますが、詳細情報はドキュメント化されているため、 通常は最小限の労力で対応可能であります。 また、コンパイラは必要十分な通知と移行期間を提供するために 廃止予定機能の強調表示を行います。
Nim はポインター演算の実行不可、オプションのチェック、 参照のトレースとアントレース、さらにオプションの null 不可型によりメモリの安全性を提供しております。 これは koch ツールと汚染分析により Valgrind をサポートしております。
Nim のコンパイラとライブラリは MIT ライセンスです。 つまり、 Nim を用いて開発したプログラムには、 お好きなライセンスを適用できます。
最近の計画に JVM/CLR のサポートはありません。しかし、前述の仮想マシンは C の FFI をサポートしております。 よって Nim の強力なメタプログラミング機能を使い、透過的なグルーコード全体の生成を行うことでネイティブ Nim ブリッジの開発は可能であります。
大量に模倣した言語 (影響を受けた順) : Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon
proc
と命名した理由は?Procedure (手続き) が一般用語として用いられるのとは対照的に function (関数)
は副作用のない数学的存在であります。実際のところ、 Nim の func
は
proc {.noSideEffect.}
の糖衣構文です。 def
は define
(定義) の略記ですが、
Nim では iterator
(反復)と method
(方法) キーワードを提供しているため def
という命名では何を指しているのか意味が通じません。
標準的な環境設定ファイルでは、 -d:release
が秘訣です。
コンパイラでサポートしている場合は、リンク時の最適化を有効にすると
実行可能ファイルの動作速度をもっと向上できます: --passc:-flto
標準的な環境設定ファイルでは、 -d:quick --opt:size
が秘訣です。
コンパイラでサポートしている場合は、リンク時の最適化を有効にすると
実行可能ファイルの容量をもっと縮小できます: --passc:-flto
config/nim.cfg
ファイルを編集します。
変数 cc
の値を下記の中から一つ選んで変更してください:
略称 | C/C++ コンパイラ |
---|---|
vcc |
Microsoft Visual C++ |
gcc |
GNU C コンパイラ |
llvm_gcc |
LLVM-GCC コンパイラ |
icc |
Intel C コンパイラ |
clang |
Clang コンパイラ |
ucc |
一般的な UNIX C コンパイラ |
それ以外の C コンパイラは公式にはサポートしておりませんが、動作する可能性があります。
上記のリストに記載されていない C コンパイラの場合は、 一般的な UNIX C コンパイラ (ucc
)
を試してみてください。また、 C コンパイラで異なるコマンドライン引数が必要ならば
--passc
と --passl
スイッチを試してみてください。