twinBASIC Update: October 15, 2023

Highlights include a new TextHint property for text boxes, an easier way to apply license keys, and updates to the official twinBASIC wiki documentation.

twinBASIC Update: October 15, 2023

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, 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, tweet me @NoLongerSet or email me at mike at nolongerset dot com.

Here are some links to get involved with the project:


Highlights

TextHint Property Added

The TextBox control got a new TextHint property.  

If a text box has a TextHint value set, that value will appear in the text box if the text box has no value.  This is a common design practice in many modern web applications.  Having it available as a text box property makes it very easy to implement.

Here's the concept in action:

Discord Chat Summary

* Auto-generated via Claude-2-100k on poe.com

Here is a summary of the key points from the 7-day Discord chat transcript about the development of twinBASIC:

twinBASIC is an open-source Visual Basic 6-compatible language that aims to be a modern revival of the classic VB6. The conversations over the past week covered several releases, bug fixes, future plans, and comparisons to other languages.

  • A new beta release of the Usercontrol Builder Addin was announced, now with 64-bit support.

  • There were discussions around default form designer events and differences compared to VB6.

  • A bug causing crashes on End statements was fixed - it was sending WM_CLOSE messages to random windows.

  • TextHint property was added to textboxes.

  • Questions about entering license keys, which now can be done by clicking "Community Edition" in the status bar.

  • Console apps are natively supported now, reducing need for addins like vbAdvance.

  • Functional programming capabilities were demonstrated through custom classes.

  • Support for fastcall APIs was brought up as a potential future addition.

  • ActiveX interop was tested - some controls like Report Manager are not currently working.

  • Overall good progress, with regular fixes and new features. Core language functionality nearing VB6 compatibility. Main work seems to be fleshing out IDE and Windows interop.

The conversations covered several notable improvements and bug fixes over the past week as twinBASIC marches towards a 1.0 release. Support for VB6 projects continues to expand, while new features provide modern capabilities beyond VB6. The developers are clearly dedicated to delivering on the promise of a revived and expanded VB6 through twinBASIC.

Around the Web

Updates to twinBASIC Wiki Documentation

fafalone updated the official twinBASIC wiki over the past week.  

He made changes to the "Overview of Features New to twinBASIC" page, including adding an entire section dedicated to the new IDE: Modern IDE features.

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.

ChatGPT Changelog Summary

* Auto-generated via ChatGPT, sorted in order of ChatGPT's opinion of "most impactful changes."

Here's a summary of the notable updates in twinBASIC:

  1. Improved Type Library Parsing: Fixed the issue of TLB parsing not accurately recognizing ByRef arguments for args with datatypes of TKIND_ALIAS. This rectification enhances the language's interoperability with other COM objects.
  2. License Key Introduction: Added a new function to allow users to enter a license key, accessible through the "Help" root menu. This brings a new way of managing software legitimacy and user licenses.
  3. Stability Enhancements: Resolved a critical race condition that could lead the CompileIf attribute to cause a hard crash during parsing when referencing anything from the Global predeclared object. This fix considerably improves the stability of the language.
  4. Improved ActiveX Handling: Fixed issues related to ParamArrays exposed via the ActiveX extender, which were causing compilation problems with some Ax controls. This improvement ensures smoother integration with ActiveX components.
  5. TextBox UI Enhancement: Added a new TextBox.TextHint property, which displays a hint when the textbox is empty. This feature improves user interface experiences by providing contextual hints to users.
  6. Form Handling Improvements: Addressed some issues relating to form closure/window-proc handling and internal collections of forms that could lead to undefined behavior. This fix improves the robustness of form operations and user interface management.

WARNING: The following issue is present in BETA builds 202 - 3xx (the latest build as of publication):

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

BETA 405

  • fixed: TLB parsing was not picking up ByRef arguments correctly for args with datatypes of TKIND_ALIAS

BETA 406

  • added: "Enter licence key" menu option ("Help" root menu) [ flCurious, discord ]
  • fixed: race condition leading CompileIf attribute to cause a hard crash during parsing when referencing anything from the Global predeclared object [ fafalone, discord ]
  • fixed: ParamArrays exposed via the ActiveX extender were not being treated correctly, causing compilation issues with some Ax controls [ https://github.com//issues/1694 ]

BETA 407

  • added: TextBox.TextHint property that is displayed when the textbox is empty (EM_SETCUEBANNER) [ fafalone, discord ]
  • fixed: some edge cases around form closure/window-proc handling and internal collections of forms that can cause UB [ fafalone, discord ]

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