twinBASIC Update: June 23, 2026

Highlights include a cryptic teaser regarding the business side of twinBASIC and a low-energy Bluetooth scanner sample project.

twinBASIC Update: June 23, 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. (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:


Highlights

Something Cryptic This Way Comes

From time to time, commenters offer gentle–and often (as in this case) rather sound–business advice to Wayne for how he should manage the twinBASIC project:

From my point of view, tB already seemed "almost ready" six years ago, and that perception hasn't changed very much since then. I fully agree that burnout and loss of motivation are valid concerns.

You already have paying customers, but I suspect not enough to comfortably make a living from this project, let alone hire additional developers. If I were in your position, I would at least consider a different approach: pick a very specific goal, focus almost exclusively on it for a period of time, and push the project to a level where it is unquestionably marketable as a production-ready tool. That could potentially increase revenue and perhaps allow the business itself to grow. In turn, that might create more time and resources for innovation and for the areas of development you personally find most interesting.

Typically, Wayne responds to these types of posts with a standard, "a project of this size requires balancing priorities, etc., etc."

But this time, he teased that something truly newsworthy on the business side of the twinBASIC project was just around the corner (emphasis in original):

Lot's of assumptions there. I won't be answering these questions directly right now. All I can say is: watch this space for a rather exciting announcement coming in the next week or so, which will address any concerns you might have.

Discord Chat Summary

* Auto-generated via Claude Sonnet 4.6

Overview

This week's discussion was dominated by community debate over development priorities, specifically the balance between VB6 compatibility fixes and broader platform work. A notable technical exchange uncovered an innovative use of twinBASIC generics for stack-allocated fixed-size arrays, and waynephillipsea teased an upcoming announcement he described as "rather exciting." Community engagement was high, with several extended threads touching on project direction, sustainability, and long-term goals.


Development Priorities & Project Direction

  • A community member raised concerns that twinBASIC's path to production-ready VB6 compatibility appears distant, suggesting a focused push to deliver a reliable V1 before introducing further new features.
  • waynephillipsea responded at length, noting that sustainable solo development requires balancing bug fixes, compatibility work, new features, infrastructure improvements, and commissioned work — and that developer burnout is a genuine long-term risk that must be managed through variety.
  • waynephillipsea confirmed that commissioned work is taken on selectively and only when it "broadly aligns with the overall direction of twinBASIC," as it helps fund ongoing development.
  • imojenisys argued that perfect VB6 compatibility is unachievable by definition — particularly for code that patches the VB runtime directly — and suggested twinBASIC would be fully justified in shipping a V1 today based on what it already delivers.

Upcoming Announcement

  • waynephillipsea hinted at significant news, saying to "watch this space for a rather exciting announcement coming in the next week or so" that would address community concerns about the project's direction.

Form Designer Bug & Fix Prioritization

  • twixydon reported persistent issues with the form designer, including erratic behavior when moving controls via arrow keys or entering integer coordinates for Left and Top, with Align-to-grid enabled and ScaleMode = vbPixels.
  • waynephillipsea acknowledged the bug is already tracked, described it as non-trivial despite appearances, and offered a workaround: using vbNoBorder on the PictureBox and preferring mouse movement over keyboard navigation.
  • fafalone offered a measured perspective on the broader discussion: "It's not at all unusual to think a problem is an easy fix right before it unravels into a nightmare — we've all been there."

Partial Compilation & Edit and Continue

  • Community members expressed strong interest in partial compilation support, with some equating it to Edit & Continue.
  • waynephillipsea clarified these are "slightly different features" but confirmed they "intertwine and will likely be delivered together."

Array Allocation & Generics

  • fafalone raised a question about whether local fixed-size arrays generate API calls to SafeArrayAllocDescriptorEx and SafeArrayDestroyData.
  • waynephillipsea explained that the SafeArray descriptor is stack-allocated, but the data itself is heap-allocated — and that using an array inside a UDT achieves full stack allocation.
  • The discussion led to a discovery: twinBASIC generics, which more closely resemble C++ templates than traditional generics, can accept literal values as type parameters — enabling a generic UDT to define a fixed-size, stack-allocated array:
Private Type FixedTypeTest(Of T, U)
    x(U) As T
End Type

Dim dataDesc As FixedTypeTest(Of EVENT_DATA_DESCRIPTOR, 2)
  • fafalone confirmed this works with no syntax errors and no background heap allocation calls generated, calling it a practical way to avoid the boilerplate of wrapping arrays in named UDTs.

VB6 Collection Performance

  • deletedewd shared benchmark data revealing a counterintuitive result: iterating a VB6 Collection of 50,000 elements by index takes approximately 3.5 seconds, while For Each iteration takes under 1ms — roughly a 3,500x difference.
  • bclothier noted this is consistent with VB collections being implemented as linked lists, making indexed access an O(n²) operation.
  • In twinBASIC, both approaches perform comparably at approximately 5ms each, resolving the disparity entirely.

Grid Controls & Third-Party Libraries

  • erice1234 discovered iGrid, a modern ActiveX grid control with a version written in twinBASIC, and purchased a license for an ongoing legacy software porting project.
  • waynephillipsea described it as "a good product with great support" and noted the developer participates in the Discord server.
  • Krool's VBFlexGrid was also mentioned as an alternative, and waynephillipsea confirmed it is available as a package directly from the twinBASIC package server.

Conclusion

The week reflected the tensions inherent in a maturing open-development project: balancing the immediate expectations of paying customers against the long-term technical investments required to build a sustainable product. The technical highlight — using literal-valued generics to achieve stack-allocated fixed-size arrays — exemplifies the kind of modern capability that distinguishes twinBASIC from its predecessors. The community's attention is now focused on waynephillipsea's teased announcement, which he suggested will speak directly to concerns about project direction and roadmap progress.

Around the Web

Bluetooth LE Scanner

Posted by VanGoghGaming in show-and-tell:

This little project enables a BLE Scanner that continuously watches for Bluetooth LE (Low Energy) advertisements from nearby devices and if the devices are Connectable it also displays a list of their services as well as the characteristics for each service along with their values.

The downloadable .twinproj file is available here.

Changelog

Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.

Releases · WaynePhillipsEA/twinbasic
Contribute to WaynePhillipsEA/twinbasic development by creating an account on GitHub.
  • No new releases this week.

All original code samples by Mike Wolfe are licensed under CC BY 4.0