Skip to content

Latest commit

 

History

History
103 lines (67 loc) · 4.33 KB

CHANGELOG.md

File metadata and controls

103 lines (67 loc) · 4.33 KB

0.6.0

Fixes

  • Soundness bug fix: The Class::dec_ref_count trait method is now marked unsafe.
  • It was previously possible for a failed allocation to cause a memory leak during construction of COM servers. This version fixes the leak.
  • Fixed all Clippy warnings in com crates and in the code generated by com::class! and com::interfaces!.

Added

  • COM servers now generate From impls for the interfaces implemented by a server. You can now use IFoo::from(&**my_server) to acquire an interface pointer to a server. This eliminates the need to use unwrap() on a call to query_interface().

  • ClassAllocation<T> now implements Clone, which simply clones an owned reference.

  • ClassAllocation<T> now implements Send and Sync.

  • COM servers may now implement Drop. Previously, the com::class! macro generated a Drop implementation, which prevented apps from providing their own. The Drop implementation runs when the last reference is released.

  • Added unit tests that cover com::class! parsing and code generation.

Changed

  • COM servers now use AtomicU32 for reference counts, so they can now be used in thread-safe systems. (We plan on providing the option to select between thread-safe and non-thread-safe reference counts, in the future.)

  • COM servers now generate static vtables, rather than dynamically allocating and building vtables in the heap. This reduces memory and CPU used.

0.5.0 (2021-10-05)

Fixes

  • Fix class! macro's buggy parsing of complex inheritance hierarchies #209
  • Properly handle COM interfaces with conflicting method names #219

Added

  • Add usize as AbiTransferable #207
  • Implement PartialEq and Eq for interfaces #220

Changed

  • The minimum supported Rust version is now 1.46.0 #221

0.4.0 (2021-01-27)

Fixes

  • Clippy warnings have been fixed #201
  • A few things which were not properly being converted to their ABI representation now are #191
  • Incorrect CLSID Registry keys #190
  • Handle COM classes with multiple fields #188
  • Keep leading zeros in COM GUID #187

Added

  • Support for #[no_std] environments #199

Changed

  • The ABI for COM functions is now "system" instead of hard-coding "stdcall" #203

0.3.0 (2020-04-03)

Changed

The public API for this crate has changed considerably since the previous version. Please take a look at the README and docs folder for information on how to use this crate.

0.2.0 (2020-04-03)

Fixes

  • Fixed docs.rs build #93
  • Support paths when defining super traits #110
  • Made interface pointers more correct #125
  • Fix multiple user generated fields not being generated #132

Added

  • Debug for IID #128
  • Allow more interfaces #135

Changed

  • Define IIDs as strings #107
  • Require unsafe for interface methods #120
  • Remove winapi as dependency #122
  • Interface{Ptr,Rc} => Com{Ptr,Rc} #129
  • Runtime is now done through stand alone functions #136

0.1.0 (2019-10-01)

Initial release of the com crate.

A one stop shop for all things related to COM programming in Rust.

This library exposes various macros, structs and functions to the user for both producing and consuming COM components in an idiomatic manner.