Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8275

Nim version 2.2.0 リリース - nilSyntax

$
0
0

Nimの2.2.0がリリースされましたね。 前回は2024/07に2.0.8がリリースされたので、大体3ヶ月くらいですね。 Nim Blogはいつもチェックしているのですが、昔は月イチくらいでライブラリ紹介をしていたのですが、最近は専らバージョンアップですね…。 Nimの頻繁なリリースは嬉しいのですが、ライブラリ紹介が少ないのは残念です。まだまだNimユーザが少ないってことでしょうか。(むしろ、昔よりも減っている?)

nim-lang.org

Nim 2.2.0
リリースハイライト
このリリースでは、ジェネリクス、型記述(typedesc)、および静的型に関する多くの長年のコンパイラバグが修正され、これらの機能が実質的に安定しました。特に、ジェネリック型内の型や値に対する任意の式が、これまで特定のケースでのみ動作していたものが、今ではほぼ正常に機能します。このリリースは全体的にバグ修正に焦点を当てており、多くの他の問題も幅広く修正されています。

このリリースでは、C++との相互運用性に関する改善が続けられています:

  • noInitを型やフィールドで使用し、C++バックエンドでメンバ初期化子を無効にできるようになりました。
  • C++のカスタムコンストラクタ初期化子が追加されました。
  • memberを使用して、手続き(procedure)をC++型に関連付けることができます。
  • C++のコンストラクタは、新しいオブジェクトを作成するのではなく、既存の結果を再利用するようになりました。
  • JavaScriptバックエンドは、クロージャとクロージャイテレータに対してラムダリフティングをサポートするようになりました。

メソッドは、--experimental:vtablesオプションを使用してVTableに基づく実装をサポートするようになりました。メソッドは、その型が定義された同じモジュール内に制限されます。

タプルのアンパッキング機能が強化されました:

  • タプルのアンパッキング代入で、値を破棄するためにアンダースコア(_)を使用できるようになりました。
  var a, c: int
  (a, _, c) = (1, 2, 3)
  • タプルのアンパッキング変数宣言で、タプル全体に対してのみ型アノテーションをサポートするようになりました。
  let (a, b): (int, int) = (1, 2)
  let (a, (b, c)): (byte, (float, cstring)) = (1, (2, "abc"))

ジェネリックルーチンやテンプレート内でシンボルキャプチャの問題に対処するため、実験的なスイッチ --experimental:openSymが追加されました。マクロ作成者向けに、新しいノード種類 nnkOpenSymが追加され、これを別途処理する必要があるかもしれません(nnkOpenSymChoiceに似ています)。詳細は完全な変更ログをご覧ください。

Nim 2.2.0には、オプトインオプションとしてSATソルバーを導入するNimble 0.16.1が同梱されています。


Viewing all articles
Browse latest Browse all 8275

Trending Articles