twinBASIC Update: December 3, 2023

Highlights include an update on "Edit & Continue" development progress, a new Auto-Save tB add-in, and the discovery of twinBASIC's potential downfall.

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

"Edit and Continue" Progress Update

It's been over two weeks since Wayne released a new version of twinBASIC.  As longtime followers know, that is an eternity by Wayne's standards.  However, it sounds like the wait will be worth it.

In Discord, Wayne posted an update on the progress of a substantial–and technically challenging–new feature: Edit & Continue:

The upcoming twinbasic update is to bring substantial enhancements. Key among these is the introduction of the "edit and continue" feature. I've also implemented major fixes and upgrades, enhancing performance and stability throughout the twinbasic codebase. Our code generation now produces smaller and more streamlined executables. Intellisense has been optimized, showing noticeable improvements even in large-scale projects. I've successfully addressed significant memory leaks that occurred during source editing. Additionally, the IDE user experience is set to receive some love. There's lots to look forward to in this next update.

Given this is a very significant, major update, I want to ensure most regressions are caught and fixed before release.  I appreciate your patience as I finalize the next update, which is scheduled for release before Christmas. Post this update, my focus will shift to developing MDI forms starting in January. An updated roadmap will be shared soon.

Discord Chat Summary

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

General Channel

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

  • Discussion around ReDim Preserve and its behavior with non-traditional array bounds in twinBASIC vs VB6. Some inconsistencies were noted that were filed as issues on GitHub.

  • FindFirstFile behavior on Windows 7 was investigated related to dot (.) characters in filenames. The API appears to exclude dots when matching wildcards, leading to unexpected results. Workarounds were proposed using Like operator or PathMatchSpec API.

  • Exciting upcoming twinBASIC features were previewed like edit and continue, smaller executables, intellisense improvements, and memory leak fixes. The next major update is nearing release.

  • Auto-save addin was released and discussed. Saving on editor switch and timed auto-save were suggested. Addin loading was also explained.

  • Advent of Code benchmarking showed twinBASIC performance versus other languages like Nim. Options to optimize compilation for speed were discussed.

  • Fun example of using emojis as code symbols was shared, eliciting reactions ranging from enthusiasm to skepticism.

Overall good progress continues on the compiler, IDE, and addins. Community is providing helpful testing, feedback and ideas as twinBASIC marches toward 1.0.

Docs Channel

Here is a summary of the key points from the Docs channel transcript on twinBASIC documentation:

  • A user suggested expanding the Unicode support documentation to provide more details on which functions are now Unicode-aware.

  • The existing docs were reviewed, which cover Unicode support in internal functions like MsgBox as well as for controls.

  • It was proposed to specifically call out filesystem functions like Open, Dir, Mkdir, Kill, and RmDir as also now supporting Unicode.

  • The Unicode support section was updated to mention filesystem functions explicitly.

Overall the feedback helped improve documentation coverage of Unicode support in twinBASIC.

Around the Web

AutoSave Add-in from sokinkeso

In Discord, several users were lamenting the fact that the twinBASIC IDE does not include an auto-save feature.  User sokinkeso decided to do something about that.

Trying to take advantage of TwinBasic's ability to create addins, I made the AutoSave addin. It is a relatively simple addin that provides automatic saving, with the ability to choose a time interval, confirmation and Auto-load. The button, that added on the toolbar, has two functions:

• Enable/Disable the Autosave functionality (with Click)
• Show addin settings (with Double-click)

More functionality will be added as the addin subsystem evolves...

In Discord, Wayne provided guidance on how to load add-ins:

should just need to pop the DLL into the \addins\win32\ or \addins\win64\ folder alongside the twinbasic.exe
and then the next time you restart the compiler, it should be loaded

Here's a screenshot from FullValueRider showing the addin in action:

As of today, BETA 2 of the Auto-Save addin is available for download from Discord:

• Fixed: Addin checks if project has any changes before saving
• Enhancement: Addin checks if the project is new and shows notification for the First-time-save.
• Added: New setting, Keep Log in Debug Console
• Enchancement: Start enabled, now has also the option to ask the user
• Change: option buttons replaced with comboboxes
• Change: checkbox for StartEnabled replaced with combobox
• Added: Tab control for General and Project settings
• Added: Project settings option

Saving Project Settings, is not implemented yet due to an issue with internal Metadata.

Emojis as Variable Names?!?!?!

In response to a reddit post lamenting the use of emojis in commit messages, fafalone demonstrated that twinBASIC supports using emojis as variable names:

I MUST WRITEUP THIS AMAZING NEW FEATURE 🤣🤣🤣

What hath thou wrought, fafalone?  

When the nascent twinBASIC community descends into an abyss of emoji-infused source code, we shall look back on this dark day with somber remembrance and wonder what might have been had fafalone never cracked open Pandora's box.

And had I never amplified his discovery. 😳 Ye gods!

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