twinBASIC Update: April 16, 2023
Highlights include a steady dose of bug fixes and and a brief recap of twinBASIC's standing in slant.co's list of "best BASIC-like programming languages."
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:
- Custom twinBASIC IDE Installation Guide (NOTE: the twinBASIC VSCode extension is under a feature freeze until 2023)
- GitHub Issue Tracker (report bugs)
- twinBASIC Discord Server (chat about the project)
- twinBASIC/VBx LinkedIn Group
Various Bug Fixes
No new major features as far as I could tell this week, though Wayne continues playing Whac-A-Mole with bug reports in GitHub and Discord (see Changelog below for details). As the project continues to mature, the bug fixes are getting less interesting to mention to a general audience as they increasingly represent edge and corner cases rather than core functionality.
This is a Good Thing™ as it means 1) the major issues have mostly been handled and 2) people are starting to use twinBASIC in complex enough projects to flush out these esoteric problems.
Around the Web
Best BASIC-like programming languages
twinBASIC seems to be steadily climbing the ranks of "best BASIC-like programming languages" at comparison site slant.co. Amusingly, twinBASIC currently has more recommendations (25) than Visual Basic .NET (23), though I think it's safe to say that says more about the popularity of slant.co than the relative popularity between twinBASIC and VB.NET 😂.
Even so, the early feedback on twinBASIC continues to be positive and bodes well for its future as it approaches a v1 release.
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
WARNING: The following issue is present in BETA builds 202 - 297 (the latest build as of publication):
- there are known memory leaks in these versions, so memory usage will be higher than normal
- fixed: For-Next with array control variable element parser bug [ https://github.com//issues/1536 ]
- fixed: For-Next with array control variable runtime edge cases
- fixed: Erase statement on a ByRef array that points to a fixed array was incorrectly nullifying the temporary SAFEARRAY wrapper [ https://github.com//issues/1537 ]
- fixed: LoadPictureSizeConstants now evaluate to runtime system metrics in LoadPicture() rather than hardcoded values
- fixed: TextBox SelStart/SelLength now also ensure the caret is scrolled into view [ https://github.com//issues/1540 ]
- fixed: edge cases involving
Withblocks and arrays where locks could previously be left on the array [ https://github.com//issues/1538 ]
- fixed: ActiveX control toolbox icons were missing if the ToolboxBitmap32 registered path was contained in quotes
- fixed: forms using Microsoft Script Control (msscript.ocx) would not import correctly from VBP projects [ https://github.com//issues/1533 ]
- improved: auto redirection for MSVBVM50.dll declares now matching the existing MSVBVM60 internal redirections [ fafalone, discord ]
- fixed: LongPtr was sometimes shown as the resolved LongLong type on x64 when hovering over types [ fafalone, discord ]
- added: warning TB0014: "The inline ByVal attribute is ignored on User Defined Types"
- added: error "Arrays cannot be Optional" to match VBx procedure declaration error
- added: error "User-defined-types cannot be Optional" to match VBx procedure declaration error
- fixed: (regression) passing wrong UDT to a procedure should be a compile error [ bclothier, discord ]