Skip to content

Release 0.4.0 - #3

Merged
BinFlip merged 2 commits into
mainfrom
v0.4.0
Oct 9, 2026
Merged

BinFlip merged 2 commits into
mainfrom
v0.4.0

Conversation

@BinFlip

@BinFlip BinFlip commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Release 0.4.0: P-Code analysis plus corrections to form data, hosted controls and structure readers, checked against compiled fixtures.

  • P-Code analysis: the opcode table covers every handler of MSVBVM60.DLL 6.00.8176 and 6.00.9848. New APIs give each instruction's stack effect, data movement and Pr source (pcode::stackeffect, pcode::movement). pcode::stacksim simulates a procedure's stacks. pcode::calltarget gives each call's callee and signature, through project vtables, runtime imports, Declares and host-supplied interface catalogs. It also infers the interfaces of the objects in frame slots, within and across procedures.
  • Form data: ScaleMode and the scale state stored with it, the menu section's own grammar (every menu after the first was lost), control bounds, Singles and signed coordinates, and property names and control GUIDs taken from the runtime.
  • Objects and controls: designers, class Instancing, and hosted ActiveX controls (events, DISPIDs, parameter conversions, bindable properties, extender flags, licence keys).
  • Fixtures: compiled VB6 projects (classes, forms, MDI, ActiveX DLL/OCX/EXE, hosted controls, every intrinsic control property, native builds, opcode coverage), with a Docker/Wine build and test suites for the stack simulation, call resolution and structures.

See CHANGELOG.md for the full list, including the breaking renames and removals.

Test plan

  • cargo test (lib 278, api 25, fixtures 1, stack 3, structures 26, doctests)
  • cargo clippy --all-targets --all-features -- -D warnings
  • RUSTDOCFLAGS="-D warnings" cargo doc --no-deps
  • cargo package builds visualbasic-0.4.0.crate
  • CI green

P-Code analysis: the opcode table covers every handler of MSVBVM60.DLL
6.00.8176 and 6.00.9848, and new APIs give each instruction's stack
effect, call target and signature, a stack simulation over a procedure,
and the interfaces of the objects in its frame slots.

Form data, hosted ActiveX controls and many structure readers are
corrected against compiled fixtures: ScaleMode and its scale state, the
menu section, control bounds, property names and GUIDs, class Instancing.

Adds compiled test fixtures (classes, forms, MDI, ActiveX DLL/OCX/EXE
projects, hosted controls, every intrinsic control property, native
builds, opcode coverage) with a Docker/Wine build, and test suites for
the stack simulation, call resolution and structures.

See CHANGELOG.md for the full list of changes.
Rust 1.88 does not extend the lifetime of a temporary borrowed inside
`Some(&...)`, so the vtable slot test failed to compile on the MSRV job.
@BinFlip
BinFlip merged commit 37a7f85 into main Oct 9, 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