Nim プログラミング言語リリース 1.4.0

Nim システムプログラミング言語の新バージョンがリリースされ、今年の XNUMX 月で XNUMX 周年を迎えました。 最初の安定バージョン。 この言語は構文が Python に似ており、パフォーマンスも C++ にほぼ似ています。 によると よくある質問 この言語は、(貢献度の高い順に) Modula 3、Delphi、Ada、C++、Python、Lisp、Oberon から多くを借用しています。


C/C++/Objective-C/JS でコンパイルできるため、どこでも動作します。 サポートします マクロ, OOP, ジェネリック, 例外, ホットコードスワップ などなど。 ライセンス: MIT。

最も重要な変更点:

  • 新しい ORC ガベージ コレクターがあり、ARC のアルゴリズムを使用しますが、同時に循環参照を特別な方法で処理します。 -gc:orc オプションで有効になります。 ARC/ORCの違いについて 素晴らしい記事があります.

  • 厳密な関数定義のモードが追加され、オブジェクトの変更可能性を追加チェックできるようになりました。 プラグマ {.experimental: "strictFuncs".} または --experimental:strictFuncs キーを介してアクティブ化されます。

  • from キーワードを演算子として使用できるようになりました。

  • .noalias プラグマを追加しました。 これは C の制限キーワードにマップされ、キーワードが提供できる効率が向上します。

  • --warningAsError[X]:on|off を使用して、特定の警告をエラーに変換できるようになりました。

  • 新しいコマンド: nim r main.nim [args...]。main.nim をコンパイルして実行します。また、結果が $nimcache/main$exeExt に保存されるように、nim c と同じロジックを使用して --usenimcache が含まれています。 r は、ソースが変更されていない場合に再コンパイルから除外します。 例:

nim r コンパイラ/nim.nim --help # 初めてコンパイルされる
echo 'OSをインポートします。 エコー getCurrentCompilerExe()' | nim r - # これも機能します
nim r コンパイラ/nim.nim --fullhelp # 再コンパイルなし
nim r —nimcache:/tmp main # バイナリは /tmp/main に保存されます

  • 新しいヒント -hint:msgOrigin が追加されました。これは、コンパイラーがエラー/警告メッセージを生成した場所を示します。 これは、メッセージの送信元が明らかでない場合に役立ちます。

  • バックエンドを変更するためのフラグ —backend:js|c|cpp|objc (または -b:js など) を追加しました。

  • バイナリを nimcache に出力するための --usenimcache フラグを追加しました。

  • 削除されたキー: --oldNewlines、--laxStrings、--oldast、--oldgensym

  • nimsuggest ユーティリティは、事前宣言だけでなく、def リクエストの実装場所も表示するようになりました。

さらに、標準ライブラリに多くの変更が追加され、多くのバグが修正されました。

出所: linux.org.ru