twinBASIC Update: August 7, 2022

Highlights include a major compiler refactor to help reduce compiler memory usage and proposed support for multiple built-in rounding methods.

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

Compiler Refactor

The changelog was uncharacteristically quiet this week.  This note from Wayne in the twinBASIC Discord server likely explains why:

Finished a big compiler refactor this week that will massively help me in tracking compiler memory usage.  Using this new tracking data, I've already reduced overall memory use by 10% with just a few tweaks.  Much more to come.

Around the Web

Proposed Support for Multiple Built-in Rounding Methods

Mark Burns requested adding support for more than just the VBx bankers rounding approach:

I see that tB echo's VBx's Bankers rounding. Fine and good. but can we have a NON-Bankers' rounding alternative function too?

As Ben Clothier pointed out, there are several rounding approaches, beyond simply bankers rounding and arithmetic rounding.  His recommendation to add an enum for the various approaches, with banker's rounding being the default, seems like the most sensible to me:

If one wants to have native implementation of those methods, an enum would do the job better even if we only enable a subset of the different methods available.

Like Ben, I'm ambivalent about whether these additional methods of rounding should be native.  However, one argument in favor of doing that is it could add some transparency to the default rounding method that VBx uses.  For example, imagine that this is what new users saw in IntelliSense when calling the Round function:

Round(Number, 
      [NumDigitsAfterDecimal As Long = 0], 
      [RoundingMethod As vbRoundMethod = vbBankers])

Even if they had never heard of banker's rounding before, the mere mention of it in IntelliSense would likely inspire a quick Google search to figure out what it's all about.

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 90

  • fixed: codegen flag clobbering edge cases causing Or/Else evaluation issues in some instances [ https://github.com//issues/1077 ]
  • fixed: Continue-Do on a Do loop with trailing conditional expression was not evaluating the condition [ https://github.com//issues/1075 ]

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