twinBASIC Update: August 25, 2026
Highlights include an update to a community twinBASIC webcam sample application and...umm...quiet anticipation for the upcoming LLVM beta release.
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
Quiet Week
No new official announcements from Wayne this week.
Next scheduled beta release with LLVM support is still presumably on track for September 4 (next Friday).
Discord Chat Summary
* Auto-generated via Claude Sonnet 4.6
Overview
This week's discussion centered heavily on WinDevLib bug fixes, a deep dive into On Error performance characteristics, and several UI/IDE quirks reported by newer community members. Engagement was steady with detailed technical back-and-forth, particularly around bitwise operations, error-handling overhead, and a subtle Variant/With-block edge case. Community troubleshooting also played a strong role, with several bugs identified and fixed in real time.
WinDevLib & Graphics Fixes
- fafalone identified and fixed multiple bitshift-related bugs in WinDevLib, including a broken
MakeARGB()function that was returning only the Blue channel due to Integer/Long type mismatches in shift operations. - The root cause was subtle:
1 << 16&behaves differently than1& << 16because unqualified shift operands default to Integer, silently truncating results in constructs like enum bit-packing for version constants. - deletedewd proposed a shift-free
MakeARGBimplementation using aRGBQUADstruct overlay, which twixydon later benchmarked as the fastest of all tested versions (faster even than the fixed WinDevLib version), with credit also going to a VanGoghGaming variant. - Community members noted the native tB functions
RGBA,RGB_R,RGB_G,RGB_B, andRGBA_Aas reliable alternatives to manual bit-packing.
IDE & UI Bug Reports
- twixydon and deletedewd resolved a PictureBox transparency issue at runtime, tracing it to the control's gray background; fafalone suggested using
TransparencyKeyand noted that targeting Windows 8.1+ in project settings may be required. - braja_07733 reported a UserControl repaint bug where moved child controls leave a visual trail; fafalone requested a minimal repro in #bugs, as the issue hadn't been seen before.
- deletedewd found that defining a form-level
Property Get Enabledbreaks internalGraphicsBase.OnPaintlogic with an "Unknown Name" error on unload, since it collides with the internal owner-lookup call; renaming toIsEnabledresolved it. - dannyb1896 experienced a display bug where code/forms wouldn't render despite reinstalling twinBASIC; clearing the
HKEY_CURRENT_USER\...\twinBASIC_IDEregistry key resolved it, though the fix cost the user their saved license key (to be reissued by Wayne).
Project File Structure Roadmap
- braja_07733, coming from VB6, asked about storing forms/classes/modules as separate physical files for easier backup and Git version control.
- fafalone confirmed that only packages currently support external file linking, but noted that full support for external forms/classes/modules is planned as part of the v1.0 feature list.
Language Behavior: Variant & With-Block Edge Case
- fafalone raised a GitHub-sourced edge case: assigning a String to a Variant and using it in an empty
Withblock causes anE_FAIL"Unspecified Error" in tB, whereas VB6 allows it silently. - deletedewd and fafalone debated whether this represents a VB6 quirk or bug; the consensus leaned toward this being VB6 permissiveness that shouldn't necessarily be replicated, since a Variant containing a String should not be treated as an object reference.
- ubehage suggested it may have been an intentional VB6 design choice — no error until an actual invalid operation occurs — a sentiment echoed by deletedewd, who noted this defensive coding pattern (checking
VarTypebefore referencing members) is valid and common in real-world VB6 code.
Error Handling Performance Deep-Dive
- dr.bobby shared Claude-generated benchmarks suggesting
On Errorhandlers introduce measurable overhead even without triggering errors, sparking a lengthy technical discussion. - bclothier clarified that VBx compilers emit
Err-state scaffolding for every statement regardless of whether errors occur, unlike C, which has zero implicit overhead; he humorously compared VB's model to a "sedan with airbags" versus C's "bare frame with no body." - wqweto confirmed that
On Error Resume Nextis measurably slower specifically because theErrobject must be populated on failure, citing the common case of checking Collection key existence being ~10x slower when the key is missing. - twixydon later found the original benchmark methodology flawed (overflow errors were being triggered internally); after correcting the test to avoid actual errors, no measurable performance difference was found between error-handled and unhandled procedures.
- deletedewd reiterated Wayne's prior guidance that avoiding
Resumestatements remains valuable for enabling LLVM-based compiler optimizations, even if rawOn Erroroverhead is otherwise negligible in non-error paths.
Conclusion
The week's activity reflected the community's growing focus on correctness and performance nuances as twinBASIC matures toward its v1.0 milestone, particularly around WinDevLib reliability and low-level language semantics inherited from VB6. Bug reports were resolved quickly through collaborative testing, and the error-handling performance discussion productively corrected initial benchmark misconceptions. Continued interest in file-structure improvements and LLVM-friendly coding patterns signals steady progress toward broader v1.0 goals.
Around the Web
WebCam Capture Sample Project Updated
Posted by fafalone in show-and-tell:
Project updates: Added options to adjust brightness, contrast, etc, if available, and also zoom, if available.
Now uses WIC to allow saving as JPG or PNG in addition to BMP. The name picker dialog box for save also implements a customization to add a 'Quality' entry box for JPG.
Minor UI updates and binary release. New screenshot:

Project repository: https://github.com/fafalone/WebcamCapMF
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.
