twinBASIC Update: February 10, 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:


Highlights

Native tB Image Handling For The Win!

Over in Discord, yereverluvinunclebert did some anecdotal performance benchmarking of VB6 image handling hacks vs. native twinBASIC image handling.

Just doing some regular testing: This old hoary program of mine runs 4 x slower on TwinBasic than VB6. I know why this is.
The one on the left is the TB version. Some GDI+ functionality not working, some icons being shown the incorrect size and generally intolerably slow. It is using LaVolpe's StdPictureEx classes to read differing types of image.

So the data comprising each and every image has to be read, parsed and rendered onto a picbox. And there can be 115 PNG, GIF, ICO, TIFF images being read at any time. So all that computing really slows it down. It will be a good test for TB's optimised form later on.

I know how to speed it up, I need to remove ALL calls to LaVolpe's code and replace it with native TB image handling capability. All that overhead will be removed. All the GDI+ stuff (blue overlay) will work, I am certain of that.

I will create a TwinBasic version, or rather add some conditional compiler statements to bypass that old code, it should speed it up immeasurably.

...

--== 14 hours later... ==--

...

I swapped out all of LaVolpe's image parsing code for the in-built image support that TwinBasic [has] and the program now flies!

By the way, if you're not on the twinBASIC Discord server, it's worth signing up if only to gaze at yereverluvinunclebert's incredible steampunk visual designs.

Source: yereverluvinunclebert in twinBASIC Discord chat

Discord Chat Summary

* Auto-generated via Claude-Sonnet-4.5

Overview

This week's discussions centered on practical development challenges, with significant focus on property introspection, HTTP request handling, and performance optimization. The community demonstrated strong collaborative problem-solving, particularly around encryption best practices and image handling performance. Wayne provided key clarifications on twinBASIC's current state and future direction, while several members contributed sophisticated solutions for runtime type inspection.

Language Features & Introspection

  • Community members discussed the need for property introspection capabilities, with yereverluvinunclebert seeking a HasProperty method to avoid error trapping when checking control properties
  • waynephillipsea revealed that twinBASIC's ControlType property provides a cleaner solution for control type checking, eliminating the need for lengthy TypeOf chains
  • okas_o developed a comprehensive property introspection solution using IDispatch and ITypeInfo, complete with caching for performance, demonstrating twinBASIC's ability to support advanced COM introspection patterns
  • deletedewd contributed a refined implementation using WinDevLib's unrestricted IDispatch interface, highlighting proper memory management with ReleaseTypeAttr and ReleaseFuncDesc
  • Discussion revealed that Friend properties currently appear in type information similar to Public properties, with waynephillipsea noting this is a temporary implementation detail

HTTP & Networking

  • woeoio2 released multiple updates to the tbman HTTP client package (v1.0.27-1.0.28), adding file upload/download capabilities, redirect handling, and improved status code checking (now properly handles 2xx/3xx responses)
  • gremlin_ger received community assistance with CURL-to-HTTP translation, initially struggling with JSON quotation marks in POST requests
  • wqweto suggested simplified JSON path syntax ($.consignee.address.city) over nested With blocks to reduce code ceremony by 200%
  • The tbman package now includes comprehensive documentation with 11 guides covering various HTTP client scenarios

Security & Cryptography

  • wqweto provided authoritative guidance on encryption modes, strongly recommending against ECB and legacy CBC/CFB modes, advocating for GCM, CCM, or OCB modes for AEAD (Authenticated Encryption with Associated Data)
  • deletedewd highlighted the Security.Cryptography.Core WinRT namespace as containing comprehensive cryptographic algorithms accessible from twinBASIC
  • Discussion of Notepad++ supply chain exploit emphasized the growing importance of supply chain security, now in OWASP's top ten vulnerabilities

Performance & Optimization

  • yereverluvinunclebert reported a 4x performance penalty when using LaVolpe's StdPictureEx classes for image parsing in twinBASIC compared to VB6, affecting programs displaying 115+ images
  • After replacing LaVolpe's image parsing with twinBASIC's native image support, performance improved dramatically with the program now running smoothly
  • This demonstrates the importance of leveraging twinBASIC's built-in capabilities rather than legacy VB6 workarounds for optimal performance

Project Status & Community Sentiment

  • yereverluvinunclebert expressed concerns about the growing GitHub issue count and suggested v1.0 might represent a transition to beta rather than a fully mature release
  • waynephillipsea firmly pushed back on characterizing twinBASIC as "alpha," noting it can already build large real-world projects like PhotoDemon without modification
  • Community members acknowledged the need to manage expectations while recognizing the impressive progress already achieved
  • yereverluvinunclebert encouraged all contributors to regularly test and close their own resolved GitHub issues to help reduce the apparent backlog

Conclusion

The week showcased twinBASIC's growing maturity through practical problem-solving and performance improvements. The community demonstrated sophisticated understanding of COM introspection, modern cryptography practices, and optimization strategies. While discussions around v1.0 readiness revealed differing perspectives on project maturity, the consensus reflects confidence in twinBASIC's current capabilities for real-world applications. The collaborative development of solutions like property introspection helpers and HTTP client improvements continues to expand the ecosystem's practical utility.

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.

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 973

  • fixed: PE compression feature flags are now effectively disabled when the PE entry point is overridden [ fafalone, discord ]