twinBASIC Update: May 21, 2023
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)
- twinBASIC/VBx LinkedIn Group
Highlights
EverythingAccess MDE Conversion Service...For Sale?!?!
If there was any doubt that Wayne is all in on twinBASIC, the following Discord post should put that to rest:
I'm currently contemplating the idea of taking on a full time developer to help progress tB to the next level. As most of you already know, in the current beta state, the income generated from tB is not yet sufficient to sustain one full time salary. We're getting there, but not quite there yet.
In order to fund a new developer in the near term, I'm considering options around releasing equity from my other business, EverythingAccess.
My current thinking is that my MDE to MDB (and ACCDE to ACCDB) conversion service is probably the one aspect of the business that would be of most interest to somebody. It's a service model that works very well, is largely automated, and as such is a nice profitable cash-cow. If you're not aware of the service, you can read more here: https://www.everythingaccess.com/mdeconversion.htm
One untapped potential of the service is that most of the clients that come to me actually want more than just a straight conversion... for example, they often want things like upgrades to support the latest versions of Access (e.g. 32-bit to 64-bit), or to add feature X, but in many cases I have to turn down the additional work, due to my work load on other projects, such as tB.
It's a worldwide unique service. It's not something that is easily copied, since it requires significant R&D costs to produce. As such, over the 15 years or so having offered the conversion service, I've been contracted by some of the biggest companies and corporations all over the world.
If you're reading this and would like to know more about the opportunity, or know someone that might be interested, please do get in touch as I'd love to hear from you.
Around the Web
Lemmings
Lemmings. In twinBASIC. 64-bit. Brought to you by fafalone (who else?)
Here's fafalone's introduction from the Discord show-and-tell channel:
In case you haven't been following the Lemmings thread in the Bugs channel, today's Beta 304 release fixes the remaining issues in Lems64 - my 64bit compatible port of Carles PVs Lems, a remake of the classic Lemmings. It's very, very complex VB graphics work, and shows off tB's astounding level of backwards compatibility even moreso than the API-heavy projects I typically post. Lots of unusual syntax and VB methods in play. If tB is running things like this, nothing is too far off in terms of back compat.
twinBASIC at 8bitnews.io
twinBASIC makes an appearance in the "What's Up in Retrocomputing Land" section of 8bitnews Newsletter #78:
BASIC is dead, long live BASIC. In a significant move towards preserving classic code, TwinBASIC, a modern BASIC compiler aiming for complete compatibility with all existing VB6 and VBA code, is making steady progress.
Whose Project is it Anyway?
I've lost count of the number of times people have assumed that twinBASIC is my project because I've presented it on multiple occasions at Access DevCon and I have been writing this weekly update since it launched. Apparently, I'm not the only one who receives this misplaced credit:
wqweto is a genius. Check out his twinbasic project, 99% similar to VB6 with a bunch of extras, modernising the language. Shout out to all the VB6 legends still going at it and extending the language, wqweto, the trick, olaf, retailcoder.
- HackerNews
Now, I've been following the twinBASIC comments section long enough that I'm not about to dispute that first sentence. But just to be clear: twinBASIC is the work of primarily one man, Wayne Phillips.
That said, if I had to name a developer other than Wayne who could tackle this project, wqweto (aka, Vladimir Vissoultchev) would be at the top of a very short list.
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
WARNING: The following issue is present in BETA builds 202 - 310 (the latest build as of publication):
- there are known memory leaks in these versions, so memory usage will be higher than normal
BETA 301
- fixed: 'Failed to retrieve underlying datatype' errors involving As-New fields of UDTs [ fafalone, discord ]
- fixed: auto case correction in the code editor could sometimes cause a continuous loop of corrections, causing CPU spikes and other issues [ fafalone, discord ]
- fixed: 'Array' was not being allowed as the name of a UDT member [ https://github.com//issues/1546 ]
BETA 302
- fixed: Standard DLL project template was incorrectly configured using a static project GUID rather than a random one [ FullValueRider, discord ]
- improved: types used in builtin libraries now more correctly show as LongPtr than Long/LongLong [ fafalone, discord ]
BETA 303
- fixed: lightweight controls incorrectly using the Parent ScaleMode for mouse event X/Y coords instead of twips
- fixed: some edge cases involving WM_SETCURSOR [ fafalone, discord ]
BETA 304
- fixed: grey border displayed around forms displayed inside the IDE when Visual Styles is off at the project scope [ fafalone, discord ]
- fixed: (regression) mouse events X/Y values edge cases that could lead to visual discrepencies [ sokinkeso, discord ]
- fixed: lightweight controls that had been moved at runtime would not fire mouse events appropriately [ fafalone, discord ]
- fixed: RaiseEventByName was not working correctly for control array elements, causing menu issues with control arrays [ fafalone, discord ]
- fixed: Put (file I/O) issue involving c-style arrays, causing color issue in Lems project [ fafalone, discord ]
- fixed: intermittent error when performing ANSI conversions in API calls involving UDTs, particularly on x64 [ fafalone, discord ]
BETA 305
- added: IDE 'Add' menu option of 'Add Resource: Visual Styles Manifest' [ fafalone, discord ]
- added: IDE 'Add' menu option of 'Add Resource: String Table' [ fafalone, discord ]
- fixed: TreeView nodes now set the image indices correctly, ready for ImageList support [ fafalone, discord ]
BETA 306
- fixed:
Set <control-field> =
(e.g. Image/PictureBox) was not correctly passing through to the default member [ https://github.com//issues/1556 ] - fixed: removed incorrect use of
GetCurrentPositionEx
in Graphics Line (Step) implementation [ https://github.com//issues/1554 ] - fixed: ListView not raising the Click event for the very first item [ https://github.com//issues/1553 ]
- fixed: TreeView Nodes.Add SelectedImage defaults to same as Image when not explicitly specified [ fafalone, discord ]
- added: 'Search inside referenced packages' option to the global find dialog
- added: 'Match case' option to the global find dialog
BETA 307
- fix for property-let before property-get bug involving custom DISPIDs [ https://www.vbforums.com/showthread.php?900029-RESOLVED-Anyone-gotten-Charles-PV-s-Lemmings-to-work-on-vb6-recent-Windows&p=5606138&viewfull=1#post5606138 ]
BETA 308
- fixed: codegen edge cases involving EFLAGS cloberring and Variant->Long conversions [ luigi, discord ]
- fixed: accessing a form control object now causes the form to be Loaded if not already [ bowser, discord ]
BETA 309
- fixed: parsing FRM files during VBP-import, where floating point values are stored with exponents [ fafalone, discord ]
- fixed: Form.PopUpMenu now allows for passing Menus from other forms, as per VBx [ fafalone, discord ]
BETA 310
- fixed: with project DPI awareness OFF, vbPixels ScaleMode could show incorrect values inside the form designer [ fafalone, discord ]