twinBASIC Update: July 31, 2022
Highlights include improved support for building device drivers, initial support for keyboard menu navigation, and a milestone for the twinBASIC project.
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)
Highlights
Improved Support for Building Device Drivers
Many of the changes over the past week were tweaks and improvements to make it easier to create "Native Subsystem" projects (i.e., device drivers).
For example:
- [BETA 83] added: project setting of 'Override Entry Point (ADVANCED)' for overriding the DLL entry point in kernel mode builds
- [83] added: project setting of 'Runtime Binding Of DLL Declares (ADVANCED)' to allow binding DLL declares through the IAT
- [83] improved: when 'Native Subsystem' project setting is enabled, the linker will report any DLL imports that are not to the NTOSKRNL dll during building
- [84] fixed:
Override Entry Point
project setting not working when entry point is defined with arguments - [85] fixed: some issues with kernal-mode support
- [86] improved: UseGetLastError attribute now defaults to False when
Native Subsytem
project flag is set - [86] improved: Build file extension is now 'sys' when
Native Subsytem
project flag is set
Initial Support for Keyboard Menu Navigation
As of BETA 89, you can now use the keyboard to navigate the twinBASIC IDE menus. For now, only [ALT] + Arrow keys are supported. I would presume that proper (customizable?) shortcut keys will be supported at some point in the future.
Around the Web
One-Year Anniversary of Pre-Orders
Somehow I missed this item in last week's update. Wayne posted the following note on GitHub on 23 July 2022:
One year ago today, the pre-order offer for twinBASIC was launched. Doesn't time fly when you're having such fun?! Whilst we're not at the v1 stage yet, we are getting closer day by day.
From the bottom of my heart, I wish to thank each and every in one of you for your amazing support, whether that be financially, technically, or both. Without you guys, this project just could not exist.
100 GitHub stars... 1000 GitHub issues/discussions... approaching 100 discord members... around 50 downloads per day... interest in tB is increasing all the time, and it's a pleasure to see new names and faces around. I am immensely proud of what we have achieved together so far, and am very much looking forward to the next 12 months!
For those of you that joined us at the start, and paid annually, the subscription fees will be coming due for renewal, so please look out for an email from us. If you paid by PayPal, remember that the subscription payments will be taken automatically unless you've told them otherwise.
I know times are hard for many at the moment, so if there are any problems please just get in touch.
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
BETA 89
- improved: Join() performance [ https://github.com//issues/1065 ]
- fixed: IDE splitter bars appearing above monaco context menu [ https://github.com//issues/1063 ]
- improved: IDE menus can now be operated via basic keyboard navigation (Alt + Arrows only)
BETA 88
- fixed: subtle FPU codegen regression introduced in BETA 87 [ https://github.com//issues/1056 ]
- fixed: EFLAGS spillage codegen bug [ https://github.com//issues/1055 ]
BETA 87
- improved: expression evaluation order now better matches VBx [ https://github.com//issues/1040 ]
BETA 86
- improved: UseGetLastError attribute now defaults to False when
Native Subsytem
project flag is set [ https://github.com//issues/1013#issuecomment-1195845291 ] - improved: Build file extension is now 'sys' when
Native Subsytem
project flag is set [ https://github.com//issues/1013#issuecomment-1195845291 ] - fixed: ByRef vs Set codegen priority issue [ https://github.com//issues/1030 ]
BETA 85
- fixed: some issues with kernal-mode support [ https://github.com//issues/1013#issuecomment-1194648702 ]
- fixed: added BS_MULTILINE and BS_VCENTER styles to CheckBox implementation to match VB6 [ https://github.com//issues/1018 ]
BETA 84
- fixed:
Override Entry Point
project setting not working when entry point is defined with arguments [ https://github.com//issues/1013#issuecomment-1194453138 ]
BETA 83
- added: project setting of 'Override Entry Point (ADVANCED)' for overriding the DLL entry point in kernel mode builds.
- added: project setting of 'Runtime Binding Of DLL Declares (ADVANCED)' to allow binding DLL declares through the IAT
- improved: when 'Native Subsystem' project setting is enabled, the linker will report any DLL imports that are not to the NTOSKRNL dll during building