twinBASIC Update: October 14, 2024

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

Limited Perpetual Licenses Offered to Longtime Subscribers

In Discord, Wayne made the following announcement:

This week we've sent a special offer email to some subscribers with upcoming annual renewals, featuring an option for perpetual licenses. If you didn’t get the email and would like more details, feel free to reach out to me. Thanks everyone for your continued support; we're getting closer to v1 every day.

As I understand it, the offer is more of a reward to early adopters as opposed to a sudden strategic shift away from the subscription model for twinBASIC.

Discord Chat Summary

* Auto-generated via Claude-3.5-Sonnet-200k on poe.com

Here's a summary of the key points from the twinBASIC Discord general channel transcript for October 8-14, 2024:

The twinBASIC project continues to make progress towards its v1 release, with ongoing discussions about language features, compatibility, and future directions. Here are the main highlights from the past week:

  • Discussions about implementing namespace extensions and property sheet handlers for .twinproj files, showcasing ongoing efforts to improve integration with the Windows shell.

  • Debate about the balance between adding new features and focusing on bug fixes and VB6 compatibility for the v1 release. Some developers expressed concern about feature creep delaying a stable release.

  • Clarification on the behavior of static variables in twinBASIC, which currently persist between runs unless the compiler is restarted or the source code is edited.

  • Exploration of UDT member padding and memory alignment in twinBASIC, with explanations of how it works in both 32-bit and 64-bit environments.

  • Confirmation that many third-party controls, including TrueDBGrid, are now working within twinBASIC, expanding its compatibility with existing VB6 codebases.

  • Announcement of a special offer for some subscribers, including an option for perpetual licenses, indicating a move towards more flexible licensing options.

  • Discussion about the advantages of 64-bit compilation, including better memory addressing, improved compatibility with modern Windows features, and potentially fewer false positives from antivirus software.

  • Clarification on overloading methods and the compiler's disambiguation process, highlighting areas where the language's behavior might be refined or better documented.

In conclusion, twinBASIC continues to evolve with a focus on both compatibility with legacy VB6 code and modern programming paradigms. The discussions this week revealed ongoing efforts to balance new features with stability and compatibility, while also addressing practical concerns like licensing and third-party control support. The project seems to be gaining momentum, with developers actively exploring its capabilities and limitations.

Around the Web

QuickRenameExt

fafalone is back with another twinBASIC project, as announced in Discord:

The era of 64bit compatible shell extensions using twinBASIC has now arrived. VB6 was great for making shell extensions like these, but being limited to 32bit only that had become a thing of the past-- > until today. This project shows it's even easier to make such a project now in tB and have it be 64bit compatible.


Besides just x64 support, this project takes advantage of a host of helpful new tB abilities:

  • No need for v-table swapping like VB6 context menu handlers, because tB has Err.ReturnHResult to provide the correct return.
  • The GUID for the class is specified manually, so no need to go looking for the ProgId in the registry to find it.
  • Makes use of [RunAfterBuild] to automatically merge the .reg file containing the shell extension specific registry entries.
  • Uses lots of new tB syntax like pointer casting to peek at the .cbSize member of a UDT supplied by pointer to see if it's the -EX version or not.
  • Uses WinDevLib so all interfaces/APIs/etc are just there instead of having to copy definitions like the old days.


    The GitHub repository has a detailed writeup of how the project works, browsable source files, and prebuilt binaries.
GitHub - fafalone/QuickRenameExt: Quick Rename Shell Extension
Quick Rename Shell Extension. Contribute to fafalone/QuickRenameExt development by creating an account on GitHub.

TrueDBGrid Control Tested in twinBASIC

Over in the Discord chat, user Jovick asked:

Anybody here tried using TrueDBGrid inside twinBasic yet? Not sure where the Beta is on recognizing 3rd party controls yet.

sokinkeso responded as follows:

A lot of 3rd party controls are already working inside tB. A have never used TrueDBgrid, so I don't know if it's working correctly but I managed to put it on a form inside tB.

In Discord, sokinkeso posted a 2-minute demo video of the control in action in twinBASIC, along with a sample project you can download. The screenshot above is an excerpt from the video.

The True DBGrid Pro 8.0 ActiveX control is a third-party product from the ComponentOne line of tools from Mescius software.

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.

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

  • there are known memory leaks in these versions, so memory usage will be higher than normal

BETA 622

  • fixed: possibility of compiler crash during codegen stage when disambiguating Variant-Array vs object-accessor element access [ Antix, vbforums ]