twinBASIC Update: April 21, 2025

Highlights include another community animated GIF project (this one with multi-threading!) and a tB wrapper for the BearLibTerminal library.

twinBASIC Update: April 21, 2025

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 Monday week, 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, please leave a comment below.

Here are some links to get involved with the project:


Highlights

64-bit Animated GIF Player with Multi-Threading

I'll admit, I did not have "3rd-Party Animated GIF Project Battle Royale" on my 2025 twinBASIC bingo card, but here we are. 😂

After tB community heavyweight fafalone weighed in last week with his offering, longtime community member VanGoghGaming limbered up a bit, cracked their neck a few times, and then said, "Hold my beer," joining the fray with their own GIF player, which takes advantage of twinBASIC's 64-bit support and multi-threading capabilities.

The friendly competition cutthroat battle rages in the #off-topic channel of the twinBASIC Discord server.

Here's the post by VanGoghGaming in the show-and-tell Discord channel:

I have just translated my previous VB6 GIF Player project ( https://www.vbforums.com/showthread.php?910350-VB6-Simple-Animated-GIF-Player-(supports-transparency)-using-WinRT-BitmapDecoder ) to twinBASIC 64-bit and also introduced multi-threading capabilities to take advantage of this feature exclusive to tB. Now each delegate will complete its work on a new thread.

The project source code is available in a zip file via Discord.

In honor of the meme potential of the two projects, here's an artist's rendering of the ongoing competition:

Discord Chat Summary

* Auto-generated via Claude-3.7-Sonnet

Overview

This week saw limited but focused activity in the twinBASIC community, with discussions centered on bug reporting and compatibility issues. A printer-related regression was identified and acknowledged by Wayne, and community members continued contributing to the VBx compatibility bug tracking initiative. Overall engagement was moderate with several new members joining the server.

Bug Fixes & Compatibility Issues

  • A community member reported an issue with function overloading in ActiveX class modules, noting they fail to compile successfully.
  • Wayne identified a regression in the Printer class after a user encountered an error when showing a frame in Modal mode and using printer functionality.
  • Wayne requested the affected user open a formal issue in the #bugs channel to ensure the printer regression would be properly tracked and addressed.

Community Contributions

  • Fafalone highlighted the ongoing effort to catalog VBx compatibility issues, noting that while Wayne has already fixed many bugs from the list, additional help is needed to identify and confirm outstanding issues.
  • The community was encouraged to review and contribute to the GitHub discussion tracking high-priority bugs related to VBx compatibility and code execution issues, especially those from 2024 or earlier that might be buried in the issues list.
  • Several new members joined the twinBASIC Discord server during this period, indicating continued interest in the project.

Conclusion

This week demonstrated the ongoing collaborative nature of the twinBASIC project, with community members actively reporting issues and the development team promptly acknowledging them. The focus on VBx compatibility issues highlights the project's commitment to ensuring a smooth transition path for developers coming from VB6/VBA. As the project moves toward v1, this community-driven bug identification process will be crucial for ensuring stability and compatibility.

Around the Web

Wrapper for the BearLibTerminal Library

Posted by JazzCoder1 in the show-and-tell Discord channel:

BearLibTerminal is a library that creates a terminal-like window facilitating flexible textual output and uncomplicated input processing. It is like a super console window. Can be used for anything but was designed by the original authors for rogue-like games. I ported over some of the C sample programs to twinBasic.
GitHub - JazzCoder1/tb_BearLibTerminal: A twinBASIC wrapper for the BearLibTerminal library
A twinBASIC wrapper for the BearLibTerminal library - JazzCoder1/tb_BearLibTerminal

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.

AI-Generated Changelog Summary

* Auto-generated via Claude-3.7-Sonnet, sorted in order of its opinion of "most impactful changes."

  • Improved Graphics Performance: Fixed regression causing GDI performance issues with graphical methods like Line/Circle, and resolved flickering when repainting PictureBox controls.

  • Enhanced Control Behavior: Addressed issues with ComboBox list height when VisualStyles manifest is missing, and fixed sizing problems with Windowless ActiveX controls.

  • Language Flexibility: Now allowing Const/Dim/ReDim/Static/Rem statements before the first Case block in a Select structure, improving code organization options.

  • Printer Class Improvements: Enhanced edge case handling for the Printer class for better printing functionality.


WARNING: The following issues are present in BETA builds 623 - 743 (the latest build as of publication):

  • IMPORTANT: This is an interim/experimental release. It includes significant changes, so some instability is to be expected. [Editor's Note: Rolling back to BETA 622 may be necessary if any of the KNOWN ISSUES below affect your project.]
  • KNOWN ISSUE: Controls are not being destroyed properly by the form designer, causing big memory leaks (broken in this build)
  • there are known memory leaks in these versions, so memory usage will be higher than at the Version 1.0 release

BETA 741

  • fixed: some Windowless AX controls (e.g. Unisuite) could resize the container inappropriately when placed/resized on a form designer [ bradPeg, discord ]
  • improved: added some IDE tracing for AX control licence requests made by the compiler, when IDE tracing is active [ bradPeg, discord ]

BETA 742

  • fixed: Const/Dim/ReDim/Static/Rem statements are now allowed before the first Case block in a Select block [ sardinea, discord ]
  • improved: Printer class edge cases [ Andrea Valentini, discord ]
  • renamed: MousePointerConstants.vbScrollALL to vbScrollAll [ Krool, discord ]
  • fixed: ComboBox list height incorrect when a VisualStyles enabled manifest is not included in the built executable [ franic, discord ]

BETA 743

  • fixed: some graphical flickering/tearing when repainting a PictureBox [ Jim Drew, discord ]
  • fixed: (regression since BETA 702) some GDI performance issues when using graphical methods such as Line/Circle [ Jim Drew, discord ]

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