twinBASIC Update: October 14, 2025
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
Documentation Updates
fafalone made several important additions to the twinBASIC wiki this week. He added a comprehensive section on the new Inherits
system to the twinBASIC Features page, with Sample 23 serving as a complete working example.
A new FAQ entry was created clarifying that twinBASIC-produced executables have no external runtime dependencies beyond standard Windows system DLLs:
What are the runtime requirements for twinBASIC-produced EXEs/binaries?
Programs and modules/controls produced by twinBASIC have no native dependencies besides standard Windows system DLLs and are completely standalone/portable, besides of course 3rd party files your code may use. No runtime is required to be present.
Currently the minimum supported Windows version is Windows XP, with Windows 2000 support likely in the future. There are no current plans to support Windows ME, 98, 95, NT4, or earlier versions, as these lack key features for basic modernization provided by tB.
Certain new tB-exclusive features like child control transparency require newer versions only if they're used.
Everything should also work under WINE and ReactOS, but testing, while successful, has been minimal. Please share your experiences if you try this.
Additionally, he documented the TWINBASIC_BUILD_TYPE
compiler constant on the Compiler Constants wiki page—a feature that was added back in beta 799 but had been previously overlooked in the documentation.
Discord Chat Summary
* Auto-generated via Claude-Sonnet-4.5
Overview
This week's discussions centered on twinBASIC's handling of multiple inheritance and interface implementation, with significant technical exploration of the "diamond problem" and differences between tB and VB6's interface capabilities. The community also tackled Wine compatibility challenges for the IDE, mnemonic keyboard shortcut improvements, and celebrated continued progress on large-scale application migrations.
Multiple Inheritance & Interface Implementation
- waynephillipsea confirmed that
Implements-Via
will remain in twinBASIC and noted that tB supports multiple inheritance, though the "diamond problem" hasn't been fully addressed yet - Extended discussion revealed a major advantage of tB over VB6: when implementing interfaces that extend
IInspectable
, tB properly supportsTypeOf
checks for base interfaces while VB6 returns False due to its limited multiple inheritance support - waynephillipsea emphasized this VB6 limitation is "one of those things we really do not want to carry forward into tB"
- Community members explored VB6's workaround of placing
vbNullPtr
in the VTable for restricted base interface methods, which prevents proper QueryInterface behavior
Bug Fixes & IDE Improvements
- BETA 882-883 released with mnemonic keyboard shortcut support for forms
- The annoying system beep when pressing Alt+key combinations was fixed by waynephillipsea in BETA 883 by swallowing the
WM_SYSCHAR
message - Fixed crash when pressing Alt+key on empty forms
- Identified bug with buttons on GroupBox/Frame controls in DialogBox forms not registering clicks properly
- Confirmed the form designer memory leak issue is low priority since it only affects design-time and is resolved by restarting the compiler
Wine Compatibility & Cross-Platform
- Community member winsped reported that the twinBASIC IDE doesn't work under Wine/Bottles due to WebView2's dependency on Evergreen, which cannot be installed
- Confirmed that compiled tB executables work fine under Wine since they're bare Win32 applications
- Suggested Wine compatibility might be achievable if Chromium could be downgraded, noting similarities to DWM-related black screen issues in Electron
Migration Progress
- axisdj reported significant milestone: their 120KLOC application is now 90% functional and compiles successfully after getting user controls working with latest updates, noting "finish line is in sight!"
Conclusion
The week highlighted twinBASIC's technical superiority over VB6 in handling modern COM interface inheritance patterns, particularly with WinRT's IInspectable
-based interfaces. Quick turnaround on the mnemonic beep fix demonstrated responsive development, while the successful migration of a massive 120K line application validates the project's maturity. The community continues to push boundaries with Wine compatibility exploration and deep technical discussions around interface implementation nuances.
Around the Web
TinyEXE: A Win32 GUI in tB in under 20kb
Posted by fafalone in show-and-tell:
Decided to post this proof of concept; even if you don't care about size it's interesting to learn how to make a GUI app starting from the real entry point hidden even to normal C projects.
Longer readme, code, and twinproj on GitHub:
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."
Based on the latest changelog, here are the notable updates:
Key Improvements
-
Access Key (Mnemonic) Support Added: Full support for Alt+Key mnemonics now implemented for all intrinsic controls on regular forms, allowing keyboard shortcuts for control navigation
-
Enhanced ActiveX Control Integration: Improved runtime handling of ActiveX controls, including support for DragMode=Auto with DragOver and DragDrop events on twinBASIC forms, plus better container property management
-
UserControl Design-Time Refinements: Multiple fixes for UserControl sizing and rendering issues across different host applications (MSAccess, Excel, VBA UserForms), particularly at various DPI settings, ensuring more reliable design-time behavior
-
Modal Form Focus Management: Resolved several issues with modal form handling, including proper parent relationships after nested form closure and improved focus behavior during application switching
-
IDE Usability Enhancements:
- Debug console no longer disappears when resizing IDE panels
- Added 'Remove from this list' button in Recent projects dialog
- New CODE EDITOR setting for 'Show Indent Guides' with toggle command
-
Long File Path Support: Fixed project export failures when dealing with long file paths, improving project portability and Git integration workflows
-
Font Rendering Correction: ClearType is no longer forced ON, giving users proper control over font rendering preferences
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 878
- improved: UserControl Resize event didn't always fire after InitProperties for newly placed controls
- fixed: constraining UserControl size in the Resize event should now work more reliably at design time [ Tecman, discord ]
- improved: resizing IDE panels no longer makes the DEBUG CONSOLE go invisible during the movement [ sokinkeso, discord ]
- fixed: setting AX control Container property at runtime can flip back to the old container when focus moves to /from the control [ kimpos, discord ]
BETA 879
- fixed: closing an IDE preview page such as an 'View as JSON' can cause internal errors to be reported by the IDE
- fixed: ClearType is no longer forced ON for font rendering [ Don, discord ]
BETA 881
- fixed: (regression) editing of UserControls in the IDE designer was failing [ sokinkeso, discord ]
- improved: added a 'Remove from this list' X button next to entries in the Recents list in the IDE new project dialog
BETA 882
- added: support for control access keys (mnemonics) for all intrinsic controls on regular forms [ Don, discord ]
BETA 883
- fixed: viewing a property page from MSAccess would show "Properties Properties" in the titlebar rather than the selected control name [ Tecman, discord ]
- fixed: viewing a property page from MSAccess would show an extra window in the taskbar [ Tecman, discord ]
- fixed: Alt+Key mnemonics handling causing beeps [ VanGoghGaming ]
- fixed: Alt+Key mnemonics could cause a crash if a form has no mnemonics defined [ VanGoghGaming ]
BETA 884
- added: support for DragMode=Auto plus DragOver and DragDrop events for AX controls on tB forms [ kimpos, discord ]
- fixed: switching apps and then back to a PropertyPage would not activate the property sheet/host app properly [ Tecman, discord ]
BETA 885
- fixed: compiler crash if it loads a type library with a coclass that has no defined interfaces
- fixed: UserControl design-time width/height changes on VBA UserForms could be wrong due to MS Forms miscalculation of scale factor at certain DPIs [ Tecman, discord ]
BETA 886
- refined: StackOffset() intrinsic, and added StackArgsSize() intrinsic [ wqweto, discord ]
BETA 887
- fixed: CodeGen-model 'SMALL' was broken for Win64 built executables [ fafalone, discord ]
BETA 888
- fixed: an issue where modal forms can become unparented after closure of nested forms, leading to app switching oddities [ Don, discord ]
BETA 889
- fixed: recent tweaks to lightweight control handling was causing some issues [ kimpos, Discord ]
- fixed: further issue with nested modal forms, affecting focus when app switching [ Don, discord ]
BETA 890
- fixed: some ComboBox.BackColor/ForeColor behaviours to better match VBx [ Don, discord ]
BETA 891
- removed: IDE theme property 'CodeIndentGuideVisible', replaced with CODE EDITOR panel setting 'Show Indent Guides' and command 'tbEditor_ToggleShowIndentGuides' [ Tecman, discord ]
- fixed: further issues around design-time sizing of UserControls on Excel hosts at certain DPIs [ Tecman, discord ]
BETA 892
- fixed: further issues around design-time sizing of UserControls on Excel hosts at certain DPIs [ Tecman, discord ]
- fixed: Combobox.Locked property wasn't fully effective [ ErkkiOH, discord ]
- fixed: tB invoked AX property sheets are now modal to prevent changing of the designer selected controls which is not yet supported [ Tecman, discord ]
- fixed: Export project fails with long file paths [#2246]
- fixed: Label flickering issue [#2245]
- fixed: setting project 'Startup Object' option to 'COMPILER DEFAULT' would cause F5/Builds to fail [ fafalone, discord ]