twinBASIC Update: February 3, 2026
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:
- Custom twinBASIC IDE Installation Guide
- twinBASIC Discord Server (chat about the project)
- twinBASIC Wiki (list of new features not in VBx)
- GitHub Issue Tracker (report bugs)
- twinBASIC/VBx LinkedIn Group
Highlights
Documentation Updates
* Co-authored with Claude Opus 4.5 (Anthropic)
The twinBASIC documentation site at docs.twinbasic.com received significant updates this week:
New Content
- February Challenge: Create a Game – Build any game using twinBASIC for a chance to win £100 account credit (deadline: March 1st)
- Comment Syntax – Documentation for block and inline
/* */comments - Attributes Reference – Comprehensive reference for all twinBASIC attributes
Major Reorganization
The monolithic Features Overview page has been split into dedicated pages organized by category, making it easier to navigate and link to specific topics. This restructuring was contributed by community member woeoio (PR #56) and cleaned up by Kuba Ober (okaso). The Language Features, Packages, and GUI Components sections now have cleaner navigation.
Infrastructure
- GitHub Actions CI – PRs now run automated checks for builds and broken links (PR #60)
Contributors: Kuba Ober (okaso), Alex Hedley, woeoio
Discord Chat Summary
* Auto-generated via Claude-Sonnet-4.5
Overview
The week focused heavily on community engagement and infrastructure improvements, with waynephillipsea introducing Discord supporter roles for license holders and announcing the February 2026 monthly challenge. Technical discussions centered on UserControl rendering issues, VB6/VBA compatibility questions, and cryptography implementation. The community also celebrated woeoio2's victory in the January challenge with their TwinBASIC Diagnostic Tool.
Community Infrastructure & Engagement
- waynephillipsea announced new Supporter/VIP Discord roles for license holders, enabling future features like bug report prioritization, exclusive lounge channels, early access to experiments, and enhanced visibility when requesting help. Members can register using the
/supportercommand with their license email address. - The February 2026 monthly challenge was officially launched, continuing the community's tradition of showcasing twinBASIC capabilities through practical projects.
- woeoio2 was announced as the winner of the January 2026 challenge for their TwinBASIC Diagnostic Tool, receiving widespread community recognition.
- Discussion emerged about creating additional focused channels for different skill levels, with feldharke suggesting a "Stammtisch" section for casual programming discussions without requiring advanced skills.
Bug Fixes & Known Issues
- sokinkeso identified that UserControls fail to render in the IDE (appearing as white boxes) when forms have BorderStyle set to "No border," though they function correctly at runtime. This was confirmed by aliensoft after troubleshooting their application migration.
- jim_mack reported missing
_Validateevents in UserControls, though waynephillipsea could not initially reproduce the issue. The problem was later confirmed fixed in the latest build. - A temporary bot outage affecting the
/supportercommand was quickly resolved by waynephillipsea.
Language Features & Compatibility
- waynephillipsea implemented a new feature where warning TB0025 (unused parameter) is suppressed if parameters begin with an underscore, following conventions from languages like Rust. This complements WDL's existing
UNREFERENCED_PARAMETER()macro approach. - fafalone raised questions about
ByVal 0validity forAs Anyarguments and UDT substitution, noting inconsistent behavior across different APIs. Discussion touched on the use ofvbNullPtrand ANSI conversion behavior. - mansellan proposed adding C#-style discard syntax for unused parameters, though bclothier noted this may be premature without proper
out/refparameter semantics, since optional parameters can currently be omitted entirely.
VB6 Migration & Third-Party Integration
- jesus_52669 encouraged Access/VBA developers like feldharke, noting the learning curve is manageable with most VBA code working directly in twinBASIC, with primary differences being in form objects.
- aliensoft successfully migrated one of their applications to twinBASIC after several months of effort, highlighting the progress possible with persistence.
- erice1234 expressed interest in testing twinBASIC with third-party DLLs, specifically National Instruments' NI-DAQmx drivers, with okas_o noting that DLL calling is well-established and most instruments support simpler SCPI access over TCP.
Cryptography & Advanced Topics
- Extended discussion about implementing secp192k1 elliptic curve cryptography in VB6, with fafalone demonstrating BCrypt API usage for curve operations. The BCrypt library provides built-in Windows support for cryptographic operations.
- shiverv_59736 sought help implementing AES-256 ECB mode, with dr.bobby cautioning that ECB is the weakest cipher mode and generally unsuitable for real-world security applications, recommending alternatives like CBC, CTR, or GCM.
- okas_o suggested PuTTY's open-source codebase as a reference for concise crypto implementations, noting it could be a good candidate for a twinBASIC port as a demonstration project.
Conclusion
This week demonstrated strong community building efforts with the new supporter role system laying groundwork for enhanced member benefits and engagement. Technical progress continued with bug fixes for UserControl rendering and parameter validation, while language refinements like the underscore convention for unused parameters show attention to developer experience. The celebration of the January challenge winner and launch of February's challenge maintain momentum in showcasing real-world twinBASIC applications. Ongoing discussions about VB6 compatibility, third-party library integration, and cryptography implementation reflect the diverse use cases the community is actively exploring.
Around the Web
January tB Challenge WINNER: woeoio2
The winner of the very first twinBASIC Monthly Challenge is woeoio2, with his twinBASIC Diagnoser utility:
It appears woeoio2's polished TUI (text-based user interface) is available to all twinBASIC users as twinPACK code packages, available via Project > References... > Available Packages. From woeoio2 in Discord:
It was precisely to achieve this aesthetically pleasing and functionally clear UI that I invested a significant amount of time in developing the underlying console core modules ("TBMAN_ConsoleCore"and"TBMAN_ConsoleComponents").
tB Monthly Challenge #2 - Create a game, any game
Details are available in the Discord server and also on the official twinBASIC Documentation site (if you don't want to set up a free Discord account):
🎮 twinBASIC Monthly Challenge #2 - February
Create a Game
Build any game you like using twinBASIC. This can be a simple card game, arcade game, puzzle, or something more experimental. Creativity is encouraged - there is no “right” genre or style.
📦 How to submit
Create a NEW post in the challenge-2026-02 forum channel
Edits allowed until the deadline
Full submission instructions here
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
AI-Generated Changelog Summary
* Auto-generated via Claude-Sonnet-4.5, sorted in order of its opinion of "most impactful changes."
-
Debugger Stability Improvements: Fixed multiple debugger-related crashes, including issues with protected property evaluation causing crashes when expanding variables in the debugger panel, and improved overall debugger stability.
-
Enhanced IDE Usability: Improved user interface elements including bordered numeric input fields in IDE options, better navigation from the Toolbox "More components..." button directly to COM References tab, and added "Copy Name" context menu option in the Project Explorer file-mode view.
-
Form and Control Rendering Fixes: Resolved several form-related issues including modal form hiding behavior, UserControl rendering when BorderStyle is set to None, TopMost property affecting tooltip display, and VB6 ActiveX control rendering glitches in the form designer.
-
Developer Experience Enhancements: The TB0025 warning for unused parameters is now suppressed when parameter names begin with an underscore, providing a cleaner way to indicate intentionally unused parameters without disabling warnings entirely.
-
Compiler and Type Library Fixes: Fixed compiler crashes related to
With <ProjectName>syntax, corrected type library generation for Alias types in UDTs, and resolved issues with Variant object access and Forms collection property access.
WARNING: The following issues are present in each of the releases below:
- IMPORTANT: This is a BETA release under active development. It is not recommended for production use.
BETA 965
- fixed: Form.Hide() on a modal form can leave the parent form in a hidden state behind other windows [ Don, discord ]
- improved: IDE designer property sheet now accepts color value entries in the same format as VBx ("&H12345678&") [ AlienSoft, discord ]
- fixed: when Form.BorderStyle is set to None, child UserControls would not render in the designer [ AlienSoft, discord ]
- fixed: entering syntax
With <ProjectName>would cause a compiler crash [ VanGoghGaming, discord ] - fixed: Protected properties are no longer evaluated in the debugger VARIABLES panel, to avoid a crash [#2318]
- improved: IDE options for numeric inputs now have a border [#2316]
- improved: "More components..." button in the Toolbox now opens directly to the "Available COM References" rather than the Enabled list [#2315]
- improved: warning TB0025 (unused parameter) is no longer triggered if the parameter begins with an underscore [#2317]
BETA 966
- fixed: Random unspecified error accessing object in Variant [ fafalone ]
- fixed: a few debugger stability issues
BETA 967
- fixed: compiler stability issue in BETA 966
BETA 968
- fixed: type library generation now correctly outputs Alias types in outputted UDTs [ VanGoghGaming, discord ]
- fixed: IDE Package Publisher Login form had a default button of 'Cancel' leading to wrong ENTER key behaviour in the credential input boxes [ Krool, discord ]
BETA 969
- fixed: (regression) accessing form properties directly via the Forms collection was producing non-sensible results
- improved: PROJECT EXPLORER object-view mode now also shows the associated filename in the list [ AlienSoft, discord ]
- fixed: lightweight controls MousePointer property not correctly reflecting Enabled/Visible state [ AlienSoft, discord ]
- fixed: DEBUG CONSOLE does not render correctly when undocked [ feldharke, discord ]
- fixed: if a form has TopMost property set to True, tooltips on the controls can appear behind the form [ woeoio2, discord ]
- improved: added a 'Copy Name' context menu to the File-mode PROJECT EXPLORER to compliment the existing 'Copy Path' option [ feldharke, discord ]
- fixed: a couple of auto-indent edge cases [ fafalone, discord ]
- fixed: setting a Timer Enabled or Interval property in the initial Form_Resize event could be ignored [ fafalone, discord ]
- fixed: typos in the locale en-gb locale file [#2320]
BETA 970
- fixed: minor render glitch of some VB6 compiled AX controls within the tB form designer [ Erkki, discord ]
BETA 971
- fixed: appobject members could interfere with compilation, causing spurious 'duplicate definition' errors on parameter names [ kimpos, discord ]
BETA 972
- fixed: edge case around timers and Form_Load handling [ kimpos, private ]