Open12

windows-rsのアップデート情報

0.9.0

今まで

// 0.8.0まで
let surface: IDXGISurface = unsafe {
        swapchain
            .GetBuffer(0, &IDXGISurface::IID, surface.set_abi())
            .and_some(surface)?
};

だったのが、以下のように書けるようになった。

// 0.9.0
let surface: IDXGISurface = unsafe { swapchain.GetBuffer(0)? };

つまり型とIID(あとset_abi())を指定しなければならなかったところが型だけでよくなった。

0.9.1

0.10.0

  • metadataのアップデート
    win32metadataにおいて名前空間が大幅に変更されました。したがって、windows-rsでもwindows::build!などで使われるモジュールの名前が変っています。
    例えば、Windows::Win32::WindowsAndMessaging::*Windows::Win32::Intl::*
    Windows::Win32::UI::WindowsAndMessaging::*Windows::Win32::Globalization::*のようになります。

  • 列挙型の改善
    C++でWin32APIの列挙型のメンバを扱う場合と同じように書けるようになりました。
    例えば、今までのD3D12_RESOURCE_BARRIER_TYPE::D3D12_RESOURCE_BARRIER_TYPE_TRANSITIOND3D12_RESOURCE_BARRIER_TYPE_TRANSITIONだけでよくなりました。

  • 弱参照の実装

  • HSTRINGSendSync

  • HStringHSTRINGObjectIInspectableになった。

0.13.0

リンク先にあるcom_uriの例の引用します。
0.13.0以前は以下のコードだったのが

let mut uri = None;
let uri = CreateUri("http://kennykerr.ca", Default::default(), 0, &mut uri).and_some(uri)?;

let mut domain = BSTR::default();
uri.GetDomain(&mut domain).ok()?;

let mut port = 0;
uri.GetPort(&mut port).ok()?;

0.13.0から以下のコードになります。

let uri = CreateUri("http://kennykerr.ca", Default::default(), 0)?;

let domain = uri.GetDomain()?;
let port = uri.GetPort()?;

0.19.0

・COMインターフェイスの実装のサポート
・実装向けに多くの改善
・バイナリパッキングの削除

ログインするとコメントできます