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

IntelliSense Added to Debug Console

As announced by Wayne in Discord:

As of BETA 421, we now have intellisense and signature-help available from the DEBUG CONSOLE again (as previously available in the old vscode edition).

I've designed the intellisense here to feel more like the VBx version, and so it shouldn't get in the way of typing/editing quite so much as the monaco version seems to.   Feedback on this is very much appreciated, as perhaps we can look at disabling the built-in monaco intellisense and just use this new implementation everywhere.

As alluded to in Wayne's post above, the debug console IntelliSense in BETA 421 works differently than the IntelliSense in the main code window.  In particular, the debug console version is closer to the VB6 behavior.  It sounds like the debug console version will make its way into the main code window in an upcoming release.

More from Wayne:

Would we prefer the intellisense to drop downwards rather than upwards, like VBx?
[T]he new intellisense will also show function return types as [shown] here:

Upcoming Signature Help Improvements

Wayne is also working on an improvement to the context-sensitive help that appears when calling procedures.

Initially, you will see something like this:

Once expanded–via either the icon in the upper left or the [F1] key–you will see something like this:

Discord Chat Summary

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

Here is a summary of the key points from the General channel transcript for twinBASIC development over the past week:

twinBASIC continues to make steady progress on new features and improvements. Recent highlights include:

  • Debug console intellisense was re-implemented to feel more like VB6 IDE. Feedback is welcomed as this may replace the default Monaco intellisense everywhere.

  • Signature help was also reworked, now showing a collapsed view by default with the ability to expand for full method signatures.

  • The member count hit 400, a major milestone. The community involvement has been instrumental in shaping twinBASIC.

  • An announcement that VBScript will be deprecated on Windows prompted discussion about whether this will drive more developers to adopt twinBASIC as an alternative.

  • Several bugs were reported and are being investigated, including problems loading some add-in samples and lack of intellisense in the unit testing package.

  • Ongoing work continues on areas like DLL loading, immutable types, and potential multi-threading support. Debates continue around language design decisions and best ways to transition from VB6.

  • Progress is being made to optimize and shrink compiled output size, including using interface redirections to intrinsic implementations.

Overall, development momentum remains strong. The discussions show both the opportunities and challenges in creating a new language that stays true to VB6 roots while modernizing and pushing forward. The community involvement in shaping twinBASIC through feedback and bug reports is clearly making a positive impact.

Around the Web

VSCode Plugin Update

Over on Github, a new user to twinBASIC asked about the status of the twinBASIC VS Code plugin:

3. What are the future plans for the IDE environment and the VSCode version (if any). Is it planned to have a single environment (the new one) or two separate ones?

Without officially shutting the door on the possibility, Wayne made it pretty clear that there are no immediate plans to go back to VSCode:

There hasn't been an official announcement in that regard, but at this point I'd think it's unlikely that we'll be going back to vscode. It just want built to be a streamlined, full IDE / RAD platform, and ultimately the end-user-experience suffered terribly. At one stage "Theia" was proposed as an alternative, also Monaco-based, however at the time it was way behind vscode when comparing features. Right now, we're quite far down the path of developing our own IDE, and so changing paths is not planned in the near future.

twinBASIC Discord User Milestone

The twinBASIC Discord server welcomed it's 400th member on November 11, 2023.  Wayne commemorated the occasion with the following post:

We've reached the 400 member mark.   Welcome, pepe57!   And a big thank you to all of you for following  twinBASIC progress and helping make it a better product.
Without you guys, tB wouldn't be half of what it is today.

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."

  1. Integrated IntelliSense and Signature-Help in DEBUG CONSOLE: Enhancements to the debug console now include IntelliSense for code completion and signature-help for function/method assistance, significantly improving the debugging experience.
  2. Stricter Syntax Rules for Interface Blocks: The language now enforces stricter rules for syntax within Interface blocks, improving code consistency and readability.
  3. Removed Redundant Debugger Console Notice: The unnecessary debugger console notice for '[DEBUGGER] FIXED HIDDEN WINDOW (HWND xyz)' has been removed to reduce clutter and improve usability.
  4. Fixed Definition and Usage of ICoreWebView2EnvironmentOptions2 in WebView2 Package: A correction was made in the WebView2 package where the definition and usage of ICoreWebView2EnvironmentOptions2 were incorrect, improving its functionality and reliability.

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

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

BETA 421

  • added: DEBUG CONSOLE intellisense and signature-help
  • improved: now enforcing stricter rules for allowed syntax in Interface blocks
  • improved: removed the debugger console notice for '[DEBUGGER] FIXED HIDDEN WINDOW (HWND xyz)'
  • fixed: WebView2 package had incorrect definition and usage of ICoreWebView2EnvironmentOptions2 [ fafalone, discord ]