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.

twinBASIC Update: July 31, 2022

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

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.

Releases · WaynePhillipsEA/twinbasic
Contribute to WaynePhillipsEA/twinbasic development by creating an account on GitHub.

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

All original code samples by Mike Wolfe are licensed under CC BY 4.0