twinBASIC Update: October 1, 2025
Highlights include the long-awaited release of BETA 874 with Property Pages support, a new Memory debugging panel, and significant performance refactoring under the hood.

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
BETA 874 Released
The long-awaited next version of twinBASIC was released on September 30.
Key Features
- PropertyPages support via
[PropertyPage("PageName")]
attribute - 64-bit versions of Color Picker, Image File Picker, and Font Picker tools
- Toolbox search/filter feature
- A low-level memory debugging panel
- Better support for tB-generated ActiveX controls in MS Forms
Property Pages Support

OK, so I'll admit, I wasn't sure what this whole "Property Pages" fuss was all about. So I turned to the latest AI from Anthropic, Claude Sonnet 4.5. The recap below is from Claude. It sounds plausible and fits in with everything I know about the twinBASIC project, COM, and VB6, but I don't have deep enough knowledge on the topic to fully vet its responses. Caveat lector!
BETA 874 delivers comprehensive property pages support—a feature Wayne called a "full-on nightmare, somehow touching everything in the codebase."
ActiveX control developers can now use the [PropertyPage("PageName")]
attribute to associate properties and class fields with custom property page tabs, replacing VB6's hidden VB_ProcData
/VB_VarProcData
attributes with explicit, modern syntax. The release includes 64-bit compatible implementations of the standard property pages (StandardFont
, StandardColor
, StandardPicture
), enabling controls built in twinBASIC to provide familiar configuration dialogs when used in host applications. These property pages appear when users right-click controls in MS Access, Excel UserForms, or the VB6 IDE and select Properties, offering tabbed interfaces for organizing complex control settings.
This completes a critical piece of VB6 ActiveX control compatibility, allowing developers to migrate complex component libraries while preserving their professional design-time user experience.
Low-Level Memory Debugging Panel Added
One of the features included in the release of BETA 874 was a new Memory debugging panel. Here's the relevant line from the release notes:
- added: MEMORY debugging panel, offering live hex editor streams to the debug process (read/write)
Just your run-of-the-mill standard hex viewer with options to customize the display (byte/integer/long in hex/decimal), number of columns per line (8 up to 32), and...["wait, say that again"..."uh huh"..."yes"..."you're certain?"..."ah, yes, I see that now"..."let me quick test to make sure"]...

OK, so I've just been reliably informed that this is not, in fact, a typical hex viewer, but a true hex editor. I'm not sure what I would use this capability for, but it could be a very valuable learning tool if nothing else.
One of the things I've always appreciated about this project is that it takes the "We're all adults here" approach when it comes to low-level tools. One of VB6/VBA's great sources of frustration was all the safety features that required you to resort to unholy workarounds as soon as you strayed even slightly from the beaten path.
In twinBASIC, the sharp knives are stored safely in drawers–out of sight of new developers–but still accessible to advanced users who need them for certain low-level tasks.
But a low-level memory editor?
I'll admit, not even I thought I'd stumble upon the hand grenade drawer in the twinBASIC kitchen. I haven't thrown one of those suckers in decades. This could be fun...
(Renewed) Confirmation of tB on Android
Cross-platform support has been on the long-term twinBASIC Roadmap from the very beginning, but it's always nice to get confirmation that it's still part of Wayne's plans for the language:

Discord Chat Summary
* Auto-generated via Gemini-2.5-Pro
Overview
This week saw significant progress toward the v1.0 release with BETA 874 arriving on September 30th, featuring major IDE improvements including PropertyPages support and a new live hex editor debugger. The community engaged in extensive discussions about 64-bit conversions, partial compilation, and COM threading models, while Wayne provided insights into future cross-platform plans and the migration from WebView2 to CEF for the IDE.
64-bit Migration & Performance
- twixydon successfully converted a large file manager to 64-bit using WinDevLib, noting startup was slower but general functionality remained comparable to VB6. The conversion process was "surprisingly easy" with WinDevLib handling most compatibility issues.
- Community members discussed the importance of partial compilation for IDE responsiveness, with bclothier noting it's crucial for intellisense and code inspections even when full compilation is fast.
- waynephillipsea confirmed partial compilation is a v1.0 priority, essential for both build times and active editing experience.
BETA 874 Release Highlights
- waynephillipsea released BETA 874 on September 30th, describing PropertyPages support as a "full-on nightmare, somehow touching everything in the codebase."
- New AI-generated live hex editor debugger introduced, written almost entirely by ChatGPT-5, marking the first major IDE feature created with AI assistance.
- Fixed critical COM initialization bug where Multi-Threaded Apartment setting wasn't effective in built executables.
- Known issue: OPENFILENAMEW type conflict with new built-in FilePicker.twin (fixed in BETA 875).
IDE Architecture & Future Plans
- Wayne announced migration from WebView2 to Chromium Embedded Framework (CEF), reducing IDE startup from ~7 seconds to <1 second on test hardware.
- CEF migration enables cross-platform support (Mac/Linux) and better performance through direct C++ code in renderer process.
- Will require one-time ~100MB download but provides version control and eliminates unpredictable WV2 auto-updates.
- Plans to support CEF 140 (current), 109 (Win7), and potentially 49 (XP support in v2+).
Multi-Threading Breakthrough
- deletedewd demonstrated successful WinRT-based multi-threading using ThreadPool and IAsyncAction, requiring implementation of IAgileObject interface for proper thread marshaling.
- Solution works in both twinBASIC and VB6, with tB showing superior runtime support that doesn't require initialization in new threads.
- Provides easiest multi-threading method for tB developers, avoiding traditional CreateThread complexity.
Language Development & Bootstrapping
- Discussion of self-hosting/bootstrapping milestone, with waynephillipsea confirming it's a v2/v3 goal requiring full LLVM compilation, unsigned types, bit fields, and stronger debugging tools first.
- Current compiler is C/C++; bootstrapping would enable community maintenance and demonstrate language maturity.
- IDE already written in tB with WebView2 control; built-in controls are also tB code.
Cross-Platform & Mobile Plans
- waynephillipsea confirmed Android support is "when, not if" with likely Community edition availability (with restrictions).
- Cross-platform UI development under consideration, with mansellan suggesting Skia as potential framework.
- December 2025 remains target for v1.0 release.
Community Support & Tools
- Extensive discussion of socket/networking solutions for 64-bit, with native WinSock control planned for post-v1.0 extended controls.
- deletedewd proposed WinRT Networking.Sockets namespace as Win10+ alternative requiring only IAgileObject implementation.
- VbAsyncSocket author wqweto indicated ASM thunks unnecessary for tB but no immediate plans for x64 VBA IDE support.
Conclusion
The week marked substantial progress with BETA 874's release bringing PropertyPages support and an AI-generated debugging tool, while also exposing the complexity of comprehensive VB6 compatibility. Wayne's announcement of the CEF migration demonstrates commitment to performance and cross-platform goals, with startup time improvements of 85%+. The successful WinRT multi-threading implementation by deletedewd opens new possibilities for tB developers, while discussions of bootstrapping and mobile support reinforce the project's long-term vision. With v1.0 targeted for December 2025, the community continues balancing immediate compatibility needs with ambitious future capabilities.
Around the Web
MultiThreading Prime Numbers Checker
Posted by VanGoghGaming in the Discord show-and-tell channel:
This project is showcasing the WinRT ThreadPool class demonstrating how to create multiple threads to perform lengthy tasks and then communicate the results via "event-like" callbacks. In this example, we are using 5 threads and each thread is checking whether a rather large number is prime or not.
Be careful when checking very large numbers. If they are composite then the result will be shown very fast but if you hit a large prime (larger than what you see in the screenshot) then the algorithm will take a VERY long time to finish. Suggestions for improvement are welcome in this area! 😄
Download the project from this vbForums thread: twinBASIC - Simple MultiThreading Prime Numbers Checker with WinRT ThreadPool Class

What Should a Modern BASIC Language Look Like?
What do you believe should look like a modern BASIC?
by u/mrnothing- in ProgrammingLanguages
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
AI-Generated Changelog Summary
* Auto-generated via Claude-Sonnet-4.5, sorted in order of its opinion of "most impactful changes."
Key Features & Improvements
-
Property Pages Support: Comprehensive PropertyPage support added throughout the IDE, including a
[PropertyPage("PageName")]
attribute for properties and class fields. Standard property pages (StandardFont, StandardColor, StandardPicture) now have 64-bit compatible implementations. -
Memory Debugging Panel: New live hex editor panel allows read/write access to debug process memory streams, enhancing low-level debugging capabilities.
-
Toolbox Search/Filter: Added search and filter functionality to the Toolbox for easier component discovery.
-
COM Aggregation Support: Improved ActiveX control compatibility through under-the-hood COM aggregation, particularly benefiting MS Forms integration with twinBASIC-generated controls.
-
IDE Modernization Preparation: Significant internal changes preparing for the IDE's transition from WebView2 to Chromium Embedded Framework.
-
IDE Usability Enhancements: Multiple improvements including reduced Debug.Print latency, better window focus management, improved title bar behavior when OS title bar is disabled, and enhanced Monaco editor integration (F3 find widget support).
WARNING: The following issues are present in each of the releases below:
- IMPORTANT: This is an interim/experimental release. It includes significant changes, so some instability is to be expected.
- KNOWN ISSUE: Controls are not being destroyed properly by the form designer, causing big memory leaks (broken in this build)
BETA 874
- fixed: issue with importing a VBP where a referenced DLL/TLB was in the same folder as the project file, causing reference MISSING error
- fixed: Startup Object project setting was incorrectly including property pages in the available forms list
- fixed: many class runtime type info issues to support property pages
- added: general PropertyPage support throughout [ commissioned work, TecMan ]
- added: support COM aggregation under the hood, for better MS Forms support of tB generated ActiveX controls
- improved: Debug.Print time to render latency in the IDE is reduced
- added: [PropertyPage("PageName")] attribute for properties and class fields, corresponding to the old VB_ProcData/VB_VarProcData VB6 attributes
- added: 64-bit compatible implementations of the standard property pages, StandardFont, StandardColor, StandardPicture
- added: ListBox Style vbListBoxColorSwatch (used in StandardColor property page), uses ItemData for OLE_COLOR value storage
- fixed: double-clicks in the PROJECT EXPLORER panel in OBJECT-view mode were not detected reliably
- added: Toolbox search/filter feature
- fixed: leaving PROPERTIES panel search/filter open when switching tabs would lose the ability to change the filter, and the previous filter would be permanent until restart of IDE
- added: MEMORY debugging panel, offering live hex editor streams to the debug process (read/write) [ AI ]
- fixed: UserControls now implicitly get their typeinfo doc string set to "${ProjectName}.${ComponentName}" if not overriden in description attributes, to match VBx
- fixed: ComboBox internal subclassing of edit/list could sometimes cause a hard crash during window destruction
- fixed: some internal control issues when a form/UC/property page is loaded implicitly via the Initialize event
- improved: F3 in the code editor will now use the monaco find widget, if it is open and the main F&R dialog is closed [ wqweto, discord ]
- improved: with OS title bar OFF, dragging the titlebar when in maximized mode will switch to restored window, like ordinary windows [ gaouser, discord ]
- improved: with OS title bar OFF, double clicking the titlebar would not switch between maximized and restored state [ mansellen, discord ]
- improved: switching windows and back to the IDE would not retain the input focus correctly [ wqweto, discord ]
- fixed: hovering over a Variant variable that contains an array value during debugging would show the array data in the wrong order [ CoachJA, discord ]
- fixed: after closing a floating panel such as F&R, or Global Search, the EDITOR panel will now be focused [ Tecman, discord ]
- improved: checkboxes in the GlobalSearch addin are now placed on the left side of the label [ Tecman, discord ]
- fixed: rendering of CommandButton in Graphical style mode did not reflect runtime changes to Font properties [#2232]
- changed: many internal IDE changes ready for the IDE to from WV2 to Chromium Embedded Framework
BETA 875
- added: support for changing Control.Container property at runtime [ kimpos, discord ]
- fixed: (regression in 874) OPENFILENAMEW UDT can conflict due to internal definition used in StandardPicture property page [ Don, discord ]
- fixed: setting Project setting 'COM Initialization' to Multi Threaded Apartment was not effective in built executables [ fafalone, discord ]