twinBASIC Update: June 18, 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
Bug Fixes
Most of the development in twinBASIC this week focused on bug fixes. These changes address various issues and bugs related to timer events, argument handling, property handling, and IntelliSense.
Here's a summary of the key fixes:
- Fixed: Timer events should not fire when MsgBox/InputBox are displayed.
- Fixed: Timer events should protect themselves against reentrancy to match VBx.
- Fixed: Handling of ByVal inline attribute alongside named arguments.
- Fixed: PropertyBag WriteProperty method not correctly handling comparison of Value to DefaultValue in cases where Value is an Object with a default value member.
- Fixed: IntelliSense options were sometimes wrong from inside With blocks when using unqualified dot syntax.
Around the Web
Simple Browser Written in twinBASIC
As a proof-of-concept of the advancing capabilities of twinBASIC, GitHub user cabaptista has created a simple browser written in twinBASIC. Check out this screenshot:
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 - 336 (the latest build as of publication):
- there are known memory leaks in these versions, so memory usage will be higher than normal
BETA 330
- fixed: Timer events should not fire when MsgBox/InputBox are displayed [ fafalone, discord ]
- fixed: Timer events should protect themselves against reentrancy to match VBx
BETA 331
- fixed: handling of
ByVal
inline attribute alongside named arguments [ kismertwise, discord ] - fixed: PropertyBag WriteProperty method not correctly handling comparison of Value to DefaultValue in cases where Value is an Object with a default value member [ sokinkeso, discord ]
BETA 332
- fixed: intellisense options were sometimes wrong from inside With blocks when using unqualified dot syntax [ fafalone, discord ]
- fixed: cached font metrics not updated when Form/PictureBox/UserControl Font property was updated [ sokinkeso, discord ]
- fixed: ListView ColumnHeader.Width property was read-only [ https://github.com//issues/1575 ]
- fixed: some GDI handle leaks in form designer (not all)
BETA 333
- fixed: majority of GDI handle leaks in form designer / control implementations
- fixed: compiler crash in some instances involving control arrays [ Lewis, discord ]
- fixed: some WithEvents edge cases
- fixed: reverted change to MsgBox/Timer event handling since BETA 330 that was matching VB6 IDE behaviour, not VB6-compiled behaviour [ Krool, discord ]
- fixed: ListView.ColumnHeaders.Add was causing a circular reference, leading to ListView never being destroyed
BETA 334
- improved: console projects now only show the console window when the debugging session is active (linked to global variables state) [ mansellan, discord ]
- fixed: (console projects) general SetConsoleMode() API failure on the STDIN handle [ sokinkeso, discord ]
- added: initial Controls.Add method support (for built-in controls only, common controls also available via "VB.TreeView" etc)
- added: initial Controls.Remove method support
BETA 335
- added: support for ActiveX and UserControl controls in runtime control-arrays
- fixed: ActiveX events in control arrays came through with Index value of -1
BETA 336
- fixed: Timer events could fire twice when Timer is inside a UserControl [ sokinkeso, discord ]
- improved: better stability around project Save [ sokinkeso, discord ]
- fixed: Frame/PictureBox not passing on common control notification messages [ https://github.com//issues/1591 ]