twinBASIC Update: May 28, 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:
- 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
Highlights
New Home for Official twinBASIC Documentation
tl;dr: Bookmark this URL: https://docs.twinbasic.com/
Over in Discord, someone asked for a consolidated list of new features added as part of the twinBASIC language (i.e., features in twinBASIC that do not exist in VB6/VBA). The general consensus is that tB sorely needs such a reference in an official place (there's a partial list at https://twinbasic.com/).
In the meantime, newly-minted twinBASIC moderator, fafalone, has compiled the most complete list available over on VBForums. As of writing, the list contains 66 individual bullet points with each one containing one or more language features that are new to twinBASIC.
Based on fafalone's initial list, there is a new twinBASIC Features page in the GitHub wiki. Feel free to contribute if you notice new features that have not yet been documented.
The conversation about features soon morphed into a general discussion around the topic of documentation. Long story short, there is a new site for twinBASIC documentation at https://docs.twinbasic.com/.
The new documentation uses Jekyll to generate HTML from markdown files. To contribute to the documentation, follow Wayne's instructions as posted in Discord:
https://docs.twinbasic.com/ is now valid
All you need to do to contribute is to submit PRs to the documentation repository, which can then be reviewed and integrated. It can all be done from the GitHub site if you're not familiar with git.
This might be a better way, for those that want to contribute and are familiar with vscode: https://github.dev/twinbasic/documentation
You'll probably need to fork the repository first, make your commits to that, and then make a PR request to the main repository when you're ready. (us mods/admins can cheat as we have permissions directly on the main repo)
More details about the rapidly evolving documentation project are available in the #docs channel in the Discord server starting at Ben Clothier's post suggesting the use of GitHub pages.
Around the Web
twinBASIC Now #4 in Slant.co's List of BASIC Languages
Changelog
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 - 317 (the latest build as of publication):
- there are known memory leaks in these versions, so memory usage will be higher than normal
BETA 311
- fixed: Len(var) and LenB(var) are allowed to be used in fixed-array bounds expressions, as per VBx
- added: automatic redirection of DLL calls for legacy OLEPRO32.DLL to OLEAUT32.DLL
- added: compiler warning of 'use of legacy DLL {LEGACY.DLL} has been redirected to {MODERN.DLL}'
BETA 312
- fixed: detection and reporting of recursive errors when evaluating enumeration constants [ fafalone, discord ]
- fixed: (regression) fixed-arrays with 'As-New' semantics would cause a compiler crash in BETA 311 [ nextKast, discord ]
- improved: project.description setting now accepts compiler variables, such as "WaynesWorld (${Architecture})" resulting in "WaynesWorld (win32)" at build time [ Tecman, discord ]
BETA 313
*** NOTE: THIS RELEASE CONTAINS AN IDE CODE EDITOR BUG. USE BETA 314+ INSTEAD ***
- fixed: ImageList pictures not always importing correctly from VBP imports
- fixed: compiler wasn't reporting errors for array to basic type conversions, instead crashing at codegen stage [ GaryMiller, discord ]
- fixed: some edge cases around byte-array to basic type conversions
- improved: upgraded monaco editor to v0.38.0
BETA 314
- reverted: monaco editor back to v0.35.1 due to some IDE code editing issues becoming apparent in BETA 313
BETA 315
- fixed: a badly formed Select-Case block (e.g. missing End Select) could crash the compiler [ fafalone, discord ]
- fixed:
Line
can now be used as a variable name without conflicting with theLine
statement [ https://github.com//issues/1566 ] - fixed: (regression) empty project description setting would cause compiler crash during build since BETA 312 [ https://github.com//issues/1566 ]
- fixed: setting Form.Moveable = False and Form.WindowState = vbMaximized would not correctly position the form on the screen [ sokinkeso, discord ]
- fixed: corrections for vbMaximized window state in some modes leaving border space around the form [ sokinkeso, discord ]
- fixed: 'Paste' code editor context menu option not showing the 'Ctrl+V' shortcut hint [ Tecman, discord ]
BETA 316
- fixed: missing BorderStyle property on Slider control [ fafalone, discord ]
- fixed: some form designer issues when dpi-awareness is OFF, on high-DPI systems [ fafalone, discord ]
BETA 317
- added: (experimental) 'View as JSON' support for packages, giving an outline to aid future documentation generation