twinBASIC Update: May 5, 2026
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
DevCon 2026 twinBASIC Presentation on YouTube
Access DevCon Vienna is the largest English-speaking Microsoft Access developer conference in the world. As I've had the honor every year since the debut of twinBASIC in 2021, I presented a session dedicated to twinBASIC to this group of Access developers.
Once again, Karl Donaubauer and the other DevCon conference organizers have graciously published my twinBASIC presentation as one of three sessions shared outside the conference paywall. The full recording is available on YouTube:
Subscription License Model Clarifications
In the Discord chat this week, someone asked a question whose official answer surprised more than a few long-time members:
[bigriverguy]: How will the subscriptions work if you can cancel your subscription. Will you still have access to everything that was current as the the date of the cancellation, our is use of the product dependant on continuing the subscription.
[bigriverguy]: There are two kinds of subscriptions: 1) where when you leave you can continue to compile with whatever version was current at the time you left, and 2) where you leave, you are no longer able to recompile programs. It seems like TwinBasic is going to use #2. Sad, because I refuse to use any product that holds me hostage to a continued subscription. I am leaving WinDev development for that exact reason. I had hoped that TwinBasic was an alternative. (For example, even though Xojo and Lianja are subscriptions, when you leave you still have access to the features of whatever version was current when you left).
[WaynePhillipsEA]: Yes, you can continue to use the version that was available at the time your subscription was active.
Versions released later will reject your licence key.
[Alaskan Druid]: Wait... wait... was this a recent-ish change? I was under the impression (back in October..ish), that once you cancel your subscription, the IDE/compiler reverts to the community edition?
[WaynePhillipsEA]: No, not a recent change. You lose access to future updates, ie future updates will revert to community edition
[fafalone]: wouldn't that mean any sub is a perpetual license for the last version before expiration
[WaynePhillipsEA]: Yes, pretty much, though no official support or updates.
That's a pretty big shift from what I have always assumed. Frankly, I was with bigriverguy in thinking that once your subscription expired, you could no longer compile builds using paid features (such as LLVM optimization, 64-bit support without a splash screen, etc.).
This is an important clarification, as I'm sure bigriverguy is not the only developer who will "refuse to use any product that holds [them] hostage to a continued subscription".
Discord Chat Summary
* Auto-generated via Claude-Sonnet-4.5
Overview
This week's general channel was driven largely by alaskandruid's hands-on work porting CTGUI/SFML DLL bindings to twinBASIC, generating a series of productive technical threads around inter-process communication, UTF-32 string handling, and binary file I/O. waynephillipsea shared a well-received Access DevCon 2026 presentation on practical twinBASIC use cases, and the community worked through questions about the subscription and licensing model. A multiple inheritance bug and a twinpack export path discrepancy were also identified and reported.
Access DevCon 2026
- waynephillipsea shared a recording of Access MVP Mike Wolfe's session "Practical twinBASIC" from Access DevCon 2026, showcasing real-world twinBASIC use cases for Access developers; slide decks and project files are available at nolongerset.com/devcon-2026.
- The presentation drew strong positive reactions from the community and generated interest from members looking to apply twinBASIC in Access-based workflows.
Console App & Inter-Process Communication
- alaskandruid encountered a runtime error 5 when attempting to capture stdout from a tB console app launched by an external process; fafalone investigated and provided a proof-of-concept fix that detects pipe redirection via
GetConsoleModeand substitutesWriteFileforWriteConsolewhen a pipe is detected. - deletedewd proposed the Running Object Table (
RegisterActiveObject/GetActiveObject) as a cleaner alternative for inter-process communication between tB and C# apps, avoiding console redirection entirely. - For high-precision benchmarking, wqweto shared a
TimerExhelper wrappingQueryPerformanceCounterandQueryPerformanceFrequencyas a more precise alternative to the built-inTimer.
CTGUI/SFML DLL Bindings
- alaskandruid made substantial progress porting CTGUI (the C binding for TGUI) and CSFML DLL APIs to twinBASIC, with fafalone and waynephillipsea assisting on the key challenge of passing UTF-32 string parameters.
- fafalone suggested
ByVal LongPtrwithStrPtr(StrConv(..., vbUnicode))as an initial workaround; waynephillipsea provided a more robustStringToUTF32conversion usingGetMem2/PutMem2to correctly handle UTF-16 surrogate pairs — which both noted was the first practical use of UTF-32 either had encountered in twinBASIC. - Function callbacks via
AddressOfwere confirmed to work correctly fortguiWidget_signalConnectonce a separate UTF-32 signal name issue was resolved; alaskandruid plans to publish the completed bindings to GitHub and eventually submit them as a twinpack reference.
Binary File I/O & UDT Handling
- alaskandruid encountered unexpected record counts when using
Putto write fixed-length string UDT arrays to binary files; deletedewd clarified thatLenBreports the in-memory byte size of a UDT whileLenreports the on-disk size — makingLenBincorrect for record-count calculations usingPut/Get. - fafalone reinforced that
Len(notLenB) should virtually always be used with UDTs in binary file I/O contexts.
Bug Reports
- fafalone identified a multiple inheritance bug where overriding a method shared by two base classes (e.g.,
Inherits Cat, Dog) causes a runtime crash when the overridden method is called; waynephillipsea confirmed this is a bug. - alaskandruid reported a twinpack-specific export path issue where the IDE silently appends the project name as a subfolder to the configured export path, behavior that does not occur with standard EXE project types; a bug report was filed.
Licensing & Subscription Model
- Community member bigriverguy raised concerns about post-cancellation compilation access; waynephillipsea clarified that twinBASIC subscribers retain full access to the last version available during their active subscription, with subsequent releases reverting to community edition capabilities only.
- fafalone confirmed that the compiler remains functional without a license key under community edition terms, with LLVM optimization, removal of the x64 splash screen, and future cross-platform features reserved for subscribers.
Development Pace & Community Momentum
- The community humorously noted the slower release cadence this period; bclothier observed this is a natural consequence of the project maturing, as each increment carries greater regression risk and complexity.
- waynephillipsea reassured the community that an update is coming soon, and expressed confidence in the project's direction.
Conclusion
This was an active and technically rich week, with alaskandruid's CTGUI/SFML work surfacing several practical patterns around DLL interop, UTF-32 encoding, and binary file I/O that will benefit the broader community. The Access DevCon 2026 presentation and the clear answers on subscription terms helped reinforce twinBASIC's credibility as a long-term platform for VB6/VBA developers. With a confirmed multiple inheritance bug in the queue and an update on the horizon, the project continues its steady march toward a polished v1 release.
Around the Web
ZoneStripper Shell Extension Update: Folder Support
Back in November 2024, fafalone released his "ZoneStripper" right-click Windows Explorer menu tool to remove the "Mark of the Web" from files:
This adds a right click menu option to Explorer to remove the 'mark of the web' - the Zone.Identifier alternate data stream that tells Windows and Office a file is 'from the internet'. It's a companion to the full program I made a while back (link to that is in readme).
This week, he released an update to provide support for folders in addition to files:
Update: The menu entry was not showing up for folders, which the comments indicated would be supported. This is simply an issue with the .reg file; I thought the entry for * would include folders, but it does not. The registry file now has an additional entry for folders. You don't need to rebuild the DLL, just merge the updated .reg file (rebuilding will also do this if you wanted to). I've tested that the functionality to remove identifiers from items in selected folders works.
Visit the project repo to grab the updated .reg file.
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
- No new releases this week.