twinBASIC Update: September 1, 2026
Highlights include a twinBASIC shout-out from an ignominious source and the anticipated release of LLVM compiler optimization integration.
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. (And I was oh so close...) 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 Documentation (list of new features not in VBx)
- GitHub Issue Tracker (report bugs)
Highlights
No New Delays Announced
The long-awaited LLVM beta launch is still presumably due out this Friday, September 4. As a reminder, LLVM is the platform twinBASIC is using for compiler optimizations. Once this new feature lands, twinBASIC applications should start seeing performance improvements over the same code written in VB6 (generally speaking).

That's still the latest projected date from Wayne Phillips. There were no additional delays announced–nor confirmations provided–with respect to that date.
So, either this is a case of "no news is good news" and the new feature will launch on schedule or "absence of evidence is not evidence of absence" and the feature launch will be delayed, but Wayne simply hasn't announced that yet.
I guess we'll know which by next week's update.
Discord Chat Summary
* Auto-generated via Claude Sonnet 5.
Overview
This week's discussion centered on a deep technical exploration of VB6 Collection internals, prompted by community efforts to add a fast "Exists" style lookup without relying on error-trapping. Alongside that, contributors traded IDE debugging bugs (a BindToArray RC5/RC6 inconsistency, native exceptions, and IDE memory crashes), FPU-related runtime behavior, and practical advice on third-party grid controls for VB6 migration. Engagement was steady and highly technical, driven mainly by Tier 3 and Tier 5 members with occasional clarifications from Wayne Phillips.
Language Enhancements & VB6/COM Compatibility
- wqweto demonstrated redefining Collection's default interface (
IVBCollection) withPreserveSig-style non-raising methods soItem/Removereturn an HRESULT instead of forcing error-object population, enabling a fastSearchCollection/KeyExistspattern withoutOn Error Resume Next. - deletedewd ported the interface to tB's friendlier declare syntax and iterated on the
KeyExistsfunction, uncovering and fixing an object-leak bug caused by tB's[out]parameter handling ("tB absolutely hates [out] parameters and overwrites them with impunity!"). - Follow-up exchanges (wqweto, bclothier, krool5045) clarified that
IsObjectis the correct check overVarTypesinceVarTypeevaluates default properties, and thatIsObjectreturns False for pureIUnknown(VT_UNKNOWN) implementations—fafalone summarized: "Objectbasically meansIDispatch." - deletedewd later refined the function further, using pointer-swapping via a lightweight
PtrOpshelper to avoid deep-copy overhead when transferring strings/arrays out of Variants, calling it "the closest you can get to C programming in VB6."
IDE & Debugging Issues
- yereverluvinunclebert_49972 tracked down a subtle inconsistency between RC5 and RC6 in
BindToArray: RC5 throws a "subscript out of range" error only inside the IDE (not when compiled), while RC6 locks the array correctly and avoids the issue. The repro was shared for consideration in the RC6-reimplementation effort per jpbrown's request. - The same investigation surfaced a native ACCESS_VIOLATION exception tied to third-party PSD-parsing code, alongside a licensing prompt anomaly requiring key re-entry.
- Wayne Phillips confirmed the license key is stored in the registry and "shouldn't generally need to be re-entered," suggesting the issue was environment-specific.
- fafalone noted a recurring "Out of Memory" IDE crash pattern tied to insufficient save intervals, a known pain point for larger projects.
Runtime Behavior & FPU Notes
- twixydon asked why
CDbl(1/0)andCLng(1/0)return1.#INFand-2147483648respectively instead of raising a Division by Zero error. - Wayne Phillips explained this occurs when FPU error checks are turned off, resolving the question directly.
- .grandpam_in_fl suggested this behavior should be called out explicitly in the documentation to avoid future confusion.
Third-Party Controls & VB6 Migration
- braja_07733 asked about the VB FlexGrid Control 1.8 package as a ComponentOne VSFlexGrid replacement, citing missing row/column drag and hierarchical (TreeView-like) display features.
- fafalone recommended vhGrid or LynxGrid (both usable in tB via a subclassing method swap) and shared a modified LynxGrid test project; also pointed to the commercial iGrid, noting it targets tB specifically with a 64-bit build.
- krool5045 pointed to a VBForums example demonstrating simulated hierarchy and drag functionality using
DragRow/DragColin VBFlexGrid.
Low-Level Debugging Techniques
- fxl447098457 and fafalone discussed using Sysinternals DebugView to capture debug output from
OutputDebugString/DbgPrintin real time without attaching a debugger, including kernel-mode drivers. - fafalone showcased using
DbgPrint/DbgPrintExfrom user mode in tB via cdecl-compatible declares, enablingprintf-style formatted output—though noting the Variant-API-based implementation currently prevents this technique in kernel mode.
Conclusion
The week's most substantial thread was a collaborative deep dive into COM Collection semantics, showing how tB and VB6 diverge in subtle but important ways around [out] parameters, Variant handling, and interface marshaling. Combined with concrete IDE bug reports (BindToArray inconsistency, native exceptions) and practical migration guidance for VB6 grid controls, the discussion reflects the community's continued focus on compatibility fidelity and performance as tB approaches its v1 milestones. Contributions from Wayne Phillips on FPU behavior and licensing helped resolve smaller but user-impacting questions, reinforcing steady forward momentum on both language internals and everyday developer experience.
Around the Web
"Twin bah SEE" Gets an AI Slop Shout-out
You know it's a slow newsweek when I'm posting links to stuff like this, but I still can't figure out how the AI text-to-voice is butchering the pronunciation of twinBASIC this badly:
"Initiatives have also emerged in the community that try to recover lost continuity. One of the best known is twin bah SEE, a modern project that aims for very high compatibility with vivver and veebuh projects."
I mean, "twin bah SEE" is clearly "twinBASIC" and "veebuh" is almost certainly "VBA." But I have no earthly idea what "vivver" is supposed to represent.
Here's how not to make a video with AI:
NOTE: the link above and embedded video below should both start at the 33:50 mark; I can't subject you to 45+ minutes of that drivel
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.
- Next release is tentatively scheduled for September 4, 2026.