twinBASIC Update: February 25, 2024
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
- GitHub Issue Tracker (report bugs)
- twinBASIC Discord Server (chat about the project)
- twinBASIC/VBx LinkedIn Group
Highlights
Reduced Memory Consumption
The release of BETA 454 came with two key improvements:
- significantly reduced WebView2 memory pressures when editing large documents
- (IDE) reduction in RAM leaks during editing sessions
As for some of the other project priorities, Wayne addressed that in a Discord comment:
As already mentioned, there will be a big push on UI finishing work, including MDI forms in March. Hang on in there... we need reasonably solid foundations to build everything else upon. I understand it's frustrating when you see that the issues that matter most to you don't seem to be getting attention. I'm constantly performing a juggling act to try to keep everyone happy. Perhaps I should join the circus. 😂
Please appreciate that everyone has different priorities/wants/needs, and I'm trying my best.
Discord Chat Summary
* Auto-generated via Claude-2-100k on poe.com
Here is a summary of the key points from the General channel transcript:
Introduction
The General channel covers a wide range of topics related to the development of the new programming language twinBASIC, including discussions around new features, bug fixes, compatibility with VB6, and more.
Key Points
-
There was discussion around getting multiple windows to show in the taskbar, replicating VB6 behavior. A bug was found where setting WS_EX_APPWINDOW had no effect.
-
Nested loops reusing the loop variable were discussed, which is allowed in twinBASIC but not VB6. The reasons behind VB6's restrictions were debated.
-
Several bugs were reported and fixed relating to IDE shortcuts, error messages, and project loading issues.
-
There was much debate around focusing twinBASIC's development on finishing VB6 compatibility versus working on new features. Overall the project aims for a balance between the two.
-
A new VIP Gold sponsorship tier was announced to help fund development. Its pricing and benefits were discussed.
-
Significant work was done investigating pointer syntax to call APIs and implement features like vbNullPtr. This enables passing null pointers to byref arguments.
-
The channel reached 500 members, showing the growing interest in twinBASIC.
Conclusion
Over the past week, the conversations highlighted twinBASIC's progress in bug fixes and new features, while also revealing there is still much work to reach the goal of high VB6 compatibility. The team continues to balance adding new capabilities with finishing the VB6 fundamentals. With the community's continued growth and feedback, twinBASIC is steadily marching towards its version 1 release.
Around the Web
Explorer Browser Custom View
From fafalone's announcement in the Discord show-and-tell channel:
I've posted a twinBASIC x64 compatible port of my VB6 project showing how to useIResultsFolder
inIExplorerBrowser
to display a set of search results. This gets you the fancy file display shown with only a few lines of code.
Check out the GitHub project for details:
Direct2D/DirectWrite Samples
fafalone posted a 64-bit-compatible twinBASIC port of The trick's Direct2D effects samples over on GitHub at the D2DSamples project:
The project also uses fafalone's WinDevLib Windows API development library, rather than directly relying on typelibs.
Here are a few sample screenshots. Check out the GitHub project for more.
Multiplicity 2: Waynes Whirled
The key to unlocking productivity in any situation is to identify the biggest bottlenecks and systematically eliminate them.
For twinBASIC, the biggest bottleneck has been the paucity of Waynes. As Fred Brooks taught us in The Mythical Man Month, you can't boost productivity on a software project by throwing more people at it. But as Harold Ramis taught us in Multiplicity, you can boost productivity if you throw more of the exact same person at a project.
Now, Ramis was able to bring his idea to life through the magic of the silver screen.
This raises the question, what tool do we have at our disposal to generate extra Waynes? Why, twinBASIC itself, of course!
In fact, jpbro already has the problem 90% solved, as he shared on Discord:
All that's left to do is implement one simple method: WaynePhillips.Clone
.
How hard can it really be?
["Paging Dr. fafalone, you're needed in the surgical wing..."]
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
ChatGPT Changelog Summary
* Auto-generated via ChatGPT, sorted in order of ChatGPT's opinion of "most impactful changes."
- Improved: Enhanced sensitivity for panel movement in the IDE and fixed issues with disappearing docked panels to prevent accidental layout changes.
- Fixed: Implemented missing IDE shortcuts for copy (CTRL+INSERT), cut (SHIFT+DELETE), and find (CTRL+F3, SHIFT+CTRL+F3) operations.
- Fixed: Corrected issues with displaying twinBASIC version information in the OS titlebar and fixed cursor icon inaccuracies in the form designer.
- Improved: The IDE now detects infinite compiler crash-restart loops and automatically switches to SAFE mode to avoid disruption.
- Added: Introduced a new IDE command (tbFindWidget_Hide) bound to the ESCAPE key for enhanced navigation.
- Improved: Reduced memory usage by WebView2 when editing large documents and decreased RAM leaks during extended editing sessions.
WARNING: The following issues are present in BETA builds 424 - 454 (the latest build as of publication):
- there are known memory leaks in these versions, so memory usage will be higher than normal
- see important release notes from BETA 424 here https://github.com/twinbasic/twinbasic/releases/tag/beta-x-0424
BETA 453
- improved: tweaked the docking/floating panel movement sensitivity to try to avoid accidental changes [ fafalone, discord ]
- improved: tweaked the floating to docked panel implementation to try avoid the case of the dissapearing panels [ fafalone, discord ]
- fixed: added missing IDE shortcuts CTRL+INSERT (Copy), SHIFT+DELETE (CUT), CTRL+F3 (tbEditor_FindSelectedNext) SHIFT+CTRL+F3 (tbEditor_FindSelectedPrev) [ wqweto, discord ]
- fixed: real OS titlebar caption did not show twinBASIC version information [ sokinkeso, discord ]
- fixed: cursor icon not always correct when moving a control in the form designer [ sokinkeso, discord ]
- improved: infinite compiler crash-restart loop now gets detected and the IDE will auto switch to SAFE mode [ fafalone, discord ]
BETA 454
- improved: VIP gold supporter logos now link to their respective websites
- improved: space character is now expected between attributes combined witha comma (auto prettified) [ fafalone, discord ]
- added: IDE command
tbFindWidget_Hide
, default assigned to ESCAPE key [ Krool, discord ] - fixed: ALT+F4 keybinding to IDE command tbIdeWindow_Close was missing [ wqweto, discord ]
- fixed: stick-scroll feature would sometimes not show semantic highlighting
- improved: significantly reduced WebView2 memory pressures when editing large documents
- improved: (IDE) reduction in RAM leaks during editing sessions