twinBASIC Update: February 24, 2026
Highlights include a new feature being added to the v1 roadmap: support for running 32-bit ActiveX controls in 64-bit twinBASIC processes.
On April 23, 2021, I helped Wayne Phillips introduce the world to twinBASIC at the Access DevCon Vienna conference. I boldly predicted that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025. With that goal in mind, this weekly update is my attempt to keep the project fresh in the minds of the VBA development community.
Every Sunday Monday week, I will be providing updates on the status of the project, linking to new articles discussing twinBASIC, and generally trying to increase engagement with the project. If you come across items that should be included here, please leave a comment below.
Here are some links to get involved with the project:
- Custom twinBASIC IDE Installation Guide
- twinBASIC Discord Server (chat about the project)
- twinBASIC Wiki (list of new features not in VBx)
- GitHub Issue Tracker (report bugs)
- twinBASIC/VBx LinkedIn Group
Highlights
Run 32-bit ActiveX Controls in 64-bit twinBASIC!!!!
From Wayne in Discord:
We’re bringing forward a roadmap item originally planned for later this year:
Support for ActiveX controls with unmatched bitness via a proxy process (for example, a 64-bit app hosting a 32-bit ActiveX control). This will be a major win for anyone relying on legacy 32-bit ActiveX controls that don’t have 64-bit equivalents. In many cases, it should make the move to 64-bit much easier - and remove one of the biggest blockers to upgrading.
Not every ActiveX control will be suitable for this approach, but we already have several complex, real-world controls running successfully in testing. The tech is powered by a new IPC mechanism I’ve designed specifically for this purpose, built on ultra-fast shared memory for minimal overhead and high performance.
This feature will now be a core part of the v1 release. We will be updating the v1 roadmap in the coming days.

Discord Chat Summary
* Auto-generated via Claude-Sonnet-4.5
Overview
This week's discussions centered heavily on cross-platform architecture and the challenges of OS-agnostic development, with significant community engagement around design patterns, API abstraction, and UI frameworks. A major announcement from waynephillipsea revealed that cross-bitness ActiveX control support will be included in the v1 release, marking a substantial shift in the roadmap. Technical deep-dives covered Boolean handling quirks, WinRT metadata manipulation, and the complexities of 64-bit migration.
Cross-Platform Architecture Discussion
- braja_07733 initiated discussion about architecture patterns for future Linux/macOS support, focusing on interface-based design and OS abstraction layers rather than syntax concerns
- bclothier emphasized that true OS-agnostic code requires framework-level abstraction, noting that even
Scripting.FileSystemObjectbreaks cross-platform compatibility despite avoidingDeclarestatements - fafalone highlighted the challenge that most significant applications heavily depend on Windows APIs, making 1:1 API mapping between platforms impractical
- The community explored various UI framework approaches including Chromium-based solutions, with bclothier proposing WebAssembly as a path to write forms directly in twinBASIC while avoiding HTML/CSS/JS complexity
Major v1 Roadmap Update
- waynephillipsea announced that cross-bitness ActiveX control support (64-bit apps hosting 32-bit controls via proxy process) has been moved forward and will be included in the v1 release
- The feature uses a custom IPC mechanism built on ultra-fast shared memory, with several complex real-world controls already running successfully in testing
- This addresses one of the biggest blockers to 64-bit migration for applications dependent on legacy 32-bit ActiveX controls without 64-bit equivalents
Boolean Handling & COM Quirks
- waynephillipsea identified a Microsoft bug in the
IFontinterface where Boolean properties return value 1 instead of properVARIANT_TRUE(-1), breakingNotoperations - fafalone confirmed the issue stems from the stdole type library incorrectly defining properties as
VARIANT_BOOLwhen the actual interface usesBOOL(Long) - The "Sanitize Booleans" project option in twinBASIC corrects this behavior automatically
- bclothier recommended encouraging
If x ThenoverIf x = True Thento avoid dirty Boolean issues, noting there are unlimited ways to express truth but only one way to express falsehood
Advanced WinRT Development
- deletedewd demonstrated successful implementation of
IRoMetaDataLocatorusing manual vTable construction with delegates in twinBASIC - The work enables dynamic calculation of parameterized WinRT interface IIDs (like
IAsyncOperation<UInt32>) directly from metadata - Testing confirmed that
Extends Nothinginterfaces work correctly when calling methods, though variables must be manually cleared before going out of scope to prevent unwanted Release calls - The
RoGetMetaDataFilefunction was identified as the WinRT equivalent toITypeInfofor extracting metadata from winMD files
64-bit Migration Guidance
- Community discussion around 64-bit migration challenges led to recommendations for identifying pointer types that need conversion from Long to LongPtr
- fafalone advised tracking original types back to underlying definitions, noting that pointers, handles, and size_t typically require LongPtr
- deletedewd emphasized that once developers adopt LongPtr for pointer types, it becomes natural through muscle memory
- Pointer arithmetic operations (copying 4 bytes, multiplying offsets by 4) were identified as requiring special attention during migration
Conclusion
The week marked a significant milestone with the announcement that cross-bitness ActiveX support will ship in v1, addressing a critical migration blocker. Extensive architectural discussions around cross-platform development revealed both the challenges ahead and potential solutions through framework abstraction. The community continued pushing technical boundaries with advanced WinRT metadata manipulation and shared practical guidance on 64-bit migration strategies. These developments demonstrate twinBASIC's evolution toward both modern capabilities and pragmatic solutions for legacy code migration.
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
- Nothing new this week.
- The announcement (and sneak peek) of v1 support for running 32-bit ActiveX controls in 64-bit processes would certainly explain the relative quiet in the releases section here the past few weeks, though.