C#やRustからWin32 APIをもっと簡単に呼び出せるように ~Microsoftが「win32metadata」プロジェクトを発表

今まで手動でメンテナンスされてきたバインディングやラッパーを自動管理する基盤

 

2021/01/22 

 

 

 

 米Microsoftは1月21日(現地時間)、「win32metadata」プロジェクトを発表した。C#やC++、Rustといったプログラム言語からWin32 APIを手軽に呼び出すためのメタデータを整備し、“GitHub”で公開・整備するものだ。

 Win32 APIはアプリフレームワークが対応していない低レベルな機能にアクセスしたいときの虎の巻だが、C/C++からは容易に利用できるものの、C#やRustといった言語から利用する際は、手動でAPIを再定義するなどひと手間かける必要があった。これを簡略化する「P/Invoke」(C#)や「winapi-rs」(Rust)といったコミュニティプロジェクトもあるが、人の手でメンテナンスされていることもあり維持が難しく、APIすべてをカバーするのは難しくなってきた。

 「win32metadata」はこうした問題を解決するため、自動化のためのメタデータを提供する。このメタデータを用いてWin32 APIを呼び出すには、以下の言語プロジェクションが利用できる。

 なお、正式リリースは2021年末になる見込み。その後は需要に応じてその他のプログラミング言語にも対応していくとのことなので期待したい。

 

 

 

 

 

 

 

 

「Rust 1.49」公開、64bit ARM Linuxのサポートが最上位に

 

2021/01/04 

 

 

 Mozillaのプログラミング言語「Rust」の開発チームは2020年12月31日、最新版となる「Rust 1.49.0」を公開した。ハードウェアのサポート強化が中心で、64bit ARM/Linuxのサポートが最上位のTier 1に昇格した。

 

 Rust 1.49は2020年11月に公開されたバージョン1.48に続く最新安定版となる。

 Rustはターゲットするシステムをレベル別にTier 1/2/3と3段階に分けているが、64bit ARM/LinuxのサポートがTier 1となった。Tier 1は最もサポートレベルが深く、コンパイラに加わった全ての変更に対してテストスイートを走らせ、事前構築済みのビルトも用意する。x86以外のターゲットがTier 1に到達するのは初めてで、今後多くのターゲットがTier 1レベルになる契機にしたいとしている。なお、Androidは影響を受けず、Tier 2となる。

 また、64bit ARM/macOS(Apple M1システム)のサポート、64bit ARM/WindowsのサポートがTier 2レベルとなった。Tier 2はビルドを保証し、事前構築済みのバイナリを提供するが、テストスイートは実行しないため、生成したバイナリが動作しなかったりバグの可能性があるという。

 コンパイラではこのほか、内蔵するテストフレームワークも強化し、複数のスレッドからの出力をキャプチャできるようになった。LLVMはバージョン9が最小となった。このほか、ライブラリ、Cargoなどでも強化が加わっている。

 

Rust
https://www.rust-lang.org