Skip to content

chore: release 0.5.0 - #4

Merged
BinFlip merged 1 commit into
mainfrom
v0.5.0
Oct 10, 2026
Merged

BinFlip merged 1 commit into
mainfrom
v0.5.0

Conversation

@BinFlip

@BinFlip BinFlip commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

Release 0.5.0. Every name of the ProjectInfo2 name area now has an owner: the private object descriptor's +0x20 and +0x24 arrays, which the crate misread as a method name table and a parameter name table, describe an object's public variables and implemented interfaces, and its events' prototypes.

Added

  • Structure extents (VbProject::structure_extents) for every structure the crate reads
  • Member descriptors (vb::member), event prototypes and name ownership (VbProject::name_references)
  • Type references (vb::typeref: TypeLibRef, InterfaceRef, RecordRef), UDT layouts and array element types
  • Constant pool entry roles (Instruction::pool_references) and pool descriptors (vb::pooldesc)
  • DISPID maps and control kinds (ControlKind::{Control, WithEvents, Implements})
  • Native unwind records (vb::native) with error handler, Resume and Erl line number tables; native code entry discovery
  • Event names from the embedded type library (new dependency: msft-typelib 0.2.0)
  • Late-bound calls by DISPID resolve to their member; hosted controls name their class
  • Fixtures: errors-native, eventnames, records, typerefs, udts

Breaking changes (why this is 0.5.0, not 0.4.1)

  • PrivateObjectDescriptor, ControlInfo and ArgType accessors renamed; InterfaceMetadata is now vb::typeref::TypeLibRef
  • FuncTypDesc::dispid returns the full DISPID as i32
  • EventSinkVtable::parse takes the entry's ControlInfo
  • Removed vb::varstub and InterfaceMetadata::{dispatch_names, all_dispatch_names}

Fixed

  • EventSinkVtable extents of Implements entries, and the event handlers of WithEvents variables, which read the dual interface's IDispatch slots as handlers

Full details in CHANGELOG.md.

Release prep

  • Version bumped to 0.5.0 in Cargo.toml / Cargo.lock; CHANGELOG section dated and compare links updated
  • Cargo.lock resolves msft-typelib from crates.io (it had no registry source/checksum because of a local path override)
  • cargo fmt applied to src/entrypoint.rs and src/vb/native.rs

Test plan

Run in a clean export of the tree, outside any local [patch.crates-io] overrides:

  • cargo test on stable and 1.88 (278 unit, 83 integration, 2 doc tests pass)
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo fmt --check
  • RUSTDOCFLAGS=-D warnings cargo doc --no-deps
  • cargo publish --dry-run (247 files, 632 KiB compressed)

Every name of the ProjectInfo2 name area now has an owner: the private
object descriptor's +0x20 and +0x24 arrays, misread as a method name
table and a parameter name table, describe an object's public variables
and implemented interfaces, and its events' prototypes.

Adds structure extents for every structure the crate reads, member and
event prototype descriptors, type library, interface and record type
references, UDT layouts, constant pool entry roles and pool descriptors,
DISPID maps, native unwind records with their error handler, Resume and
line number tables, native code entry discovery, event names from the
embedded type library, and late-bound call resolution by DISPID.

Breaking: renames PrivateObjectDescriptor, ControlInfo, ArgType and
InterfaceMetadata (now TypeLibRef) accessors, widens FuncTypDesc::dispid
to i32, and removes vb::varstub, whose structure does not exist.

Adds fixtures errors-native, eventnames, records, typerefs and udts.

See CHANGELOG.md for the full list of changes.
@BinFlip
BinFlip merged commit 7885bb7 into main Oct 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant