twinBASIC Update: May 23, 2021

Highlights include passing (pseudo-)command-line arguments to a twinBASIC console app and an update from Wayne on the project's progress.

twinBASIC Update: May 23, 2021

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.


It's been exactly one month since I presented the twinBASIC project at Access DevCon Vienna.  Since that day there have been 19 updates to the twinBASIC VS Code extension and a total of 394 downloads of the project.

Highlights

I got the following email from Wayne Phillips on Friday (shared with permission):

Just giving you a heads-up that there won’t be a twinBASIC update this week. The next update will hopefully land on Tuesday.

I’ve been tackling the excessive memory usage, plus turning on the multi-file support for the next update. Tackling the memory issues has taken much longer than planned, but will be worth it in the long run for better stability and compiler scalability/performance.

From the beginning, Wayne's priority with this project has been laying a solid foundation for future development.  Part of that is building a rock-solid, fully-tested compiler.  Another part of that is making sure the development environment is stable.

This kind of work is not as flashy or exciting as introducing new features.  But if you get this part wrong, all the new features in the world won't be enough to save the project.

Around the Web

I wrote about passing command line arguments to a twinBASIC console application.  Well, not command line arguments, per se, but a workaround that serves the same purpose.

Pseudo-Command Line Args in twinBASIC
I couldn’t figure out how to pass command line arguments to a twinBASIC console application. So I improvised a solution.

Of course, less than twelve hours after I wrote my article, GitHub user EduardoVB responded to my issue:

I just tested and the standard VB6 way to pass command line arguments works:

Module ModHelloWorld
    Public Sub Main()
        MsgBox Command$
    End Sub
End Module

I'm not a VB6 programmer myself, so I didn't immediately test this approach.  I assumed twinBASIC would support VB6's method for loading command line arguments; I simply didn't know what that was.

Embarrassingly, my Google-fu failed me when I searched the internet for how to check VB6 command line arguments.  Because Microsoft made a mess of things by replacing one programming language named Visual Basic (i.e., VB6) with a very different programming language that they also named Visual Basic (i.e., VB.NET), all of my search results turned up the VB.NET approach.

It wasn't a total loss, though.  Wayne did confirm that there's currently no way to set command line arguments while debugging:

As @EduardoVB said, that should work.   Though we really need a way to pass command line args in debug sessions, via the build configuration properties.

The workaround I wrote about in my article does allow you a way to set values for  (pseudo-)command-line arguments while debugging, at least until Wayne adds support for storing command line debugging arguments in the build configuration.

Changelog

Here are the updates from the past week.  You can also find this information by installing the twinBASIC VS Code extension and clicking on the Changelog tab of the extension page:

There's nothing new to report here.  Based on Wayne's email (see above), I expect that to change next week.

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