twinBASIC Update: July 10, 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

Additional Shapes Available

As I reported last week, BETA 67 added support for the following shape controls:

  • Rectangle
  • Square
  • Oval
  • Circle
  • Rounded Rectangle
  • Rounded Square

With BETA 68, the following additional shapes are supported:

  • Line (including Arrows)
  • Star (with properties to support several variations)

twinBASIC IDE and Compiler DLLs Now Signed

As of BETA 69:

all IDE and compiler EXEs and DLLs are now signed with a code-signing certificate

A few users have run into issues with anti-virus programs quarantining twinBASIC.  Hopefully, having the twinBASIC executable files signed will help with reputation building and eventually lead to fewer AV false positives.

Unfortunately, I assume most anti-virus software whitelists applications by release rather than by publisher (probably using the file's checksum as a unique ID).  With the rapid release cycle for twinBASIC at the moment, this means we should expect to continue seeing false positives for the foreseeable future.

Once the product reaches version 1.0 and the release cycles slow down, individual executables will have more time to build up reputation.  

At least that's the theory.  

Who knows what sort of machine learning voodoo modern day antivirus software uses. ¯\_(ツ)_/¯

Various Bug Fixes

There were no major new features this week, but there were several bug fixes (refer to changelog below).

A large number of bug fixes is not ideal for a mature software product–ahem...Access...ahem.  For a pre-launch application with twinBASIC's complexity, they are to be expected.  However, the kinds of bugs that are being fixed now are progressively more obscure edge cases than in the past.  And those types of bugs only get reported when you have people using the software in sufficient numbers for those corner cases to surface.

Around the Web

twinBASIC Appears on HackerNews

I'm not a regular reader of HackerNews, but twinBASIC just made its first appearance there with the following subject line:

TwinBASIC: A modern BASIC aiming for 100% compatibility with VB6/VBA (twinbasic.com)

As I write, the post has 75 comments.  I'm not sure the demographic makeup of the HackerNews audience, but there seemed to be the typical anti-VB bias that you see among those who consider themselves "proper programmers."

It's an interesting read, with a couple of twinBASIC regulars popping in to add some needed context to the conversation.  For example, here's Andrew Mansell:

Please bear in mind that twinBASIC is still pre-release / v0.x, and has not been widely publicized yet. The IDE, and in particular the forms designer, is very recent. Originally an extension to VS Code was envisioned (it's currently paused), but VSC was not extensible enough.

It's under active and rapid development right now, please judge accordingly.

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 70

  • fixed: runtime maximize form issue [ https://github.com//issues/976 ]
  • fixed: several edge cases where variable names conflict with statement syntax [ https://github.com//issues/969#issuecomment-1179485287 ]
  • fixed: duplicate line label definitions would cause parser infinite loop
  • fixed: first statement on the same line following a Case expression must not be treated as a line label [ baka, discord ]
  • fixed: Error, Return and Line must be allowed to be used as line labels [ https://github.com//issues/969 ]

BETA 69

  • improved: all IDE and compiler EXEs and DLLs are now signed with a code-signing certificate
  • fixed: IDispatch implementation issue, with variant parameters being implicitly treated as Optional [ https://github.com//issues/967 ]
  • fixed: setting OptionButton Value to True in the form designer (IDE) caused IDE crash [ https://github.com//issues/970 ]
  • fixed: 'End' is now allowed as a UDT field name, for VBx compatibility [ https://github.com//issues/969 ]
  • fixed: single-line 'Else' keyword is now allowed in many more contexts, for VBx compatibility [ https://github.com//issues/969 ]
  • fixed: (regression) opening a CustomControl form in the form designer crashed the IDE [ baka, discord ]
  • improved: changed the UX around the 'Add Form' menu options when WinNativeForms/CustomControls packages is not referenced [ baka, discord ]

BETA 68

  • added: new Shapes of vbShapeArrowLeft/vbShapeArrowRight/vbShapeArrowUp/vbShapeArrowDown, with VariationA/B to control arrow proportions
  • added: new Shape of vbShapeStar with VariationA/B/C properties allowing for many star-like shape variations
  • added: Line control
  • fixed: centering of Shape control for shapes of Circle/Square/RoundedSquare
  • fixed: keypreview timing [ https://github.com//issues/960 ]
  • improved: form designer and runtime now supports container-painted controls (initially Shape and Line)
  • fixed: (regression) Form.Unload event not firing, causing IDE window to not ask to save dirty project before closing
  • fixed: 'Duplicate' option in form designer now ensures container controls are duplicated onto the form, not inside themselves [ https://github.com//issues/958 ]

Note: container-painted controls (currently Line and Shape) are not supported inside ActiveX containers just yet (e.g Krools FrameW, SSTAB etc).