twinBASIC Update: April 7, 2025

Highlights include an update to the twinBASIC roadmap, my thoughts on the new release date, and your last chance to register for my upcoming tB DevCon Vienna talk.

twinBASIC Update: April 7, 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:


Highlights

twinBASIC Roadmap Updated

The twinBASIC roadmap was updated this week, just in time for my upcoming twinBASIC presentation at Access DevCon Vienna. Here is a recap of the changes:

  • Tentative v1 Release Date moved from 1 APR 25 to 1 JUL 25
  • "Add support for UserControl Property Pages" added to the roadmap for Q2 2025
  • Overall project timeline pushed back three months

My Thoughts on the New (Estimated) Release Date

For those who've been following this project for a long time, the repeated delay of the release date can be frustrating.

That said, Wayne is making progress toward his ultimate v1.0 goal: 100% backward compatibility with VB6.

Unfortunately, the path to 100% compatibility is asymptotic. The 90/50 rule illustrates this concept. At the recent Microsoft MVP Summit, the Access team previewed a new feature under development. One team member described the feature as 90% complete, to which longtime MVP Armen Stein playfully joked:

"You know what they say in software, 'When a project is 90% complete, you're halfway there!'"

And that's the fundamental dynamic at play here.

A good visualization really drives this point home. Here's a sneak peek from my upcoming DevCon Vienna presentation:

The red portion at the top represents the unsupported features of VB6. The green portion represents the VB6-compatible progress of twinBASIC. This graph illustrates Armen's point. The dividing white line intersects the 90% completion point of the y-axis exactly halfway across the x-axis.

That thin sliver of red barely visible in the top right quadrant of the graph? That's the long tail of bugs and VB6 incompatibilities.

When Microsoft released VB.NET some 20 years ago, they never bothered trying to get past the 90% compatibility mark. It turns out the last 10% is hard. And the last 1% is even harder.

I recognized this as the key challenge from the very beginning.

Here's a slide from my inaugural DevCon Vienna presentation in April 2021:

Yep, I called it. And since it doesn't look like my "twinBASIC will replace VBA by 2025" prediction is going to pan out, I need to take a victory lap somewhere.

Discord Chat Summary

* Auto-generated via Claude-3.7-Sonnet

Overview

This week in the twinBASIC community featured discussions on upcoming conference presentations, technical implementation challenges, and API integration work. Community members explored advanced language features while working on complex projects, with notable focus on graphics handling and Windows API interactions. The week showed moderate activity with several new members joining the server.

Conference & Community News

  • twinBASIC will be featured at the Access DevCon 2025 on April 10-11, presented by Mike Wolfe, with the tB session scheduled for April 11th (noted by Wayne Phillips)
  • The virtual conference costs €108, with registration available online at donkarl.com/devcon/register.htm
  • Community members discussed the availability of previous conference presentations, with fafalone sharing a link to Mike Wolfe's 2024 twinBASIC presentation

API & Graphics Implementation

  • fafalone successfully ported a complex animated GIF library to twinBASIC without modifications, demonstrating excellent VB6 compatibility
  • Several discussions focused on Windows API implementation challenges, particularly around WIC (Windows Imaging Component) and Direct2D integration
  • Wayne Phillips confirmed the correct approach for porting the C++ CONTAINING_RECORD macro to twinBASIC using pointer arithmetic

Language Features & Tips

  • Community members shared techniques for viewing form icons, with sokinkeso providing a detailed explanation of using Base64 conversion to view and export icons
  • A member inquired about using LenB() with structure names directly, with fafalone pointing out the existing generic syntax solution: LenB(Of STRUCTURENAME)
  • Discussion of constants documentation occurred, with suggestions to mark vbHand and vbDropEffectLink as "new in tB" in Constants.twin

IDE & Development Experience

  • A community member noted that VB6 supports touch input for creating and sizing controls, suggesting this would be an important feature for twinBASIC
  • Some users reported IDE issues with saving, copying, and exporting code, though workarounds were found
  • Project settings discussions revealed some usability challenges around icon selection and visualization

Conclusion

The week demonstrated twinBASIC's continued maturation as community members tackled increasingly complex implementation challenges. The upcoming Access DevCon presentation highlights growing interest in the language within the broader development community. Technical discussions showed the community actively exploring the boundaries of what's possible with twinBASIC, particularly in graphics handling and Windows API integration, while also identifying areas for future improvement.

Around the Web

twinBASIC at Access DevCon Vienna 2025

Once again, I will be presenting my annual update on twinBASIC at Karl Donabauer's online Access DevCon Vienna conference.

You can check out the full conference agenda here.

The bullet points below are an excerpt from my talk on twinBASIC.

Part 1: twinBASIC - The Final Countdown

  • Status update on twinBASIC's journey to v1.0
  • twinBASIC's new Access-style report designer
  • Creating Windows services with minimal code using twinBASIC
  • twinBASIC for Applications: Could tBA replace VBA one day?

The second half of my talk will be about incorporating AI tools into the development workflow for Access developers.

Register here.

Here's a link to the resources page from last year's talk, which also includes links to all my previous twinBASIC DevCon Vienna recordings:

DevCon 2024: VBIDE Addin Creation with twinBASIC
Links and resources from my talk today at Access DevCon Vienna 2024, Custom VBIDE Addin Creation with twinBASIC.

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.

AI-Generated Changelog Summary

* Auto-generated via Claude-3.7-Sonnet, sorted in order of its opinion of "most impactful changes."

  • Enhanced Mouse Pointer Constants - Added 13 new values to the VBRUN.MousePointerConstants enumeration including vbArrowCD, vbPen, and various scroll cursors, completing the standard Windows cursor set.

  • Array Function Improvement - Fixed compatibility with VB6/VBA by supporting optional/missing arguments in the Array() function, allowing syntax like Array(, "1", "2", "3").

  • File Properties Enhancement - Added OriginalFilename property to built executables' VERSION info block, improving file identification capabilities and compatibility with VB6-compiled DLLs.

  • Fixed UI Controls - Corrected issues with DirListBox.List now properly returning full path information, and fixed ListView column widths not importing correctly from VBP files.

  • ActiveX Stability - Resolved a critical issue where UserControl.GetClientSite could return null pointers without proper error handling during form instantiation, preventing crashes with certain ActiveX controls.


WARNING: The following issues are present in BETA builds 623 - 733 (the latest build as of publication):

  • IMPORTANT: This is an interim/experimental release. It includes significant changes, so some instability is to be expected. [Editor's Note: Rolling back to BETA 622 may be necessary if any of the KNOWN ISSUES below affect your project.]
  • KNOWN ISSUE: Controls are not being destroyed properly by the form designer, causing big memory leaks (broken in this build)
  • there are known memory leaks in these versions, so memory usage will be higher than at the Version 1.0 release

BETA 731

BETA 732

  • fixed: UserControl.GetClientSite implementation could return nullptr without a failure HRESULT during form instantiation, leading to a nullptr deref in some AX controls [ robwubs, discord ]

BETA 733

  • fixed: MSComCtl ListView column widths set at designer time (via property page) not imported correctly from VBP [ Joe Philli, discord ]
  • fixed: edge case of GetSetting implementation [ sokinkeso, discord ]

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