twinBASIC Update: June 22, 2025
Highlights include a critical bug fix for the "Align to Grid" feature, a "Multi-Path Context Menu" project, and a high-performance, multi-threaded proof-of-concept server.

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
Grid Alignment Feature Restored After Regression Discovery
The "Align Controls to Grid" feature has been fixed in BETA 815 after a regression was discovered this week. gtaiv reported frustrating behavior where controls would "bounce back and forth" during positioning, requiring slow dragging and extended holding to stay in place.
WaynePhillipsEA acknowledged this as an unreported regression from build 623 and delivered a fix in BETA 815. The feature had gone unnoticed as broken, suggesting many developers had found workarounds or weren't using grid alignment extensively.
*Auto-generated via Gemini-2.5-Pro.
Discord Chat Summary
* Auto-generated via Claude-4-Sonnet
Overview
The week of June 17-21, 2025 showcased strong community engagement with practical development discussions and significant project milestones. The community addressed UI design challenges, API compatibility issues, and shared valuable insights about twinBASIC's capabilities compared to VB6/VBA. A major highlight was johanraphaeljoe successfully compiling a massive 162k line VB6 application in twinBASIC.
UI Development & Form Design
- fafalone guided users through form positioning and DPI awareness, explaining how twinBASIC's anchoring and docking features provide superior layout management compared to VB6/VBA
- WaynePhillipsEA confirmed that mnemonics (keyboard shortcuts with "&" prefix) are not yet supported but acknowledged the feature request
- Grid alignment functionality was identified as broken since build 623, with WaynePhillipsEA promising a fix after the issue was brought to attention
- The Format menu's "Center in Container" option was highlighted as an alternative for precise control alignment
64-bit Compatibility & API Declarations
- Multiple users encountered PtrSafe declaration requirements when switching between 32-bit and 64-bit compilation modes
- fafalone emphasized the importance of using tested API declarations from WinDevLib rather than relying on AI-generated code for critical functionality
- Discussion covered the evolution from VB6's 32-bit limitations to twinBASIC's native 64-bit support without runtime dependencies
Database Integration & Access Migration
- sacapuce69 explored options for migrating Access applications to twinBASIC, with fafalone and bclothier explaining three approaches: linking to Access tables, automating existing Access applications, or creating ActiveX add-ins
- Guidance provided on using ADODB connections and Access.Application objects for database integration
- bclothier noted the importance of separating business logic from UI elements for easier migration
Major Project Milestone
- johanraphaeljoe successfully compiled a 162,000-line VB6 application in twinBASIC, demonstrating the compiler's capability to handle enterprise-scale legacy codebases
Conclusion
This week highlighted twinBASIC's maturity in handling real-world migration scenarios, from massive legacy applications to modern UI requirements. The community's collaborative approach to problem-solving, combined with WaynePhillipsEA's responsive development cycle, continues to strengthen the platform's appeal for VB6/VBA developers seeking modernization paths. The successful compilation of a 162k line application represents a significant validation of twinBASIC's enterprise readiness.
Around the Web
MultiPathContextMenu
From fafalone in show-and-tell:
Show an IContextMenu for files across multiple paths (and drives!)
This novel method came out of my discussion with Don. I thought the expected method for Vista+ was reliable, but it turns out not so much, and other methods either only showed a small subset of what Windows would show, or were only ever alluded to online, I couldn't find enough details or source code to pursue that– plus, most comments still cited files across drives as a problem, or certain commands like Properties needing special handling, where this method works perfectly across drives without special handling for any command I tested.
It could probably be simplified a bit, so another version might be coming.

TwinBasic IOCP ECHO Server
Posted by forliny in show-and-tell:
An IOCP demonstration ECHO server written in twinbasic, welcome experts to criticize and correct it
Main features:
1. Complete release, no memory or handle leaks found,
2. After long-term brute force testing during high-frequency connections and disconnections on the client side, this server can run stably.,
3. Currently, only the most basic ECHO framework process runs stably, with no business side issues,
4. Perfect support for x86 x64,
5. Dependency on fafalone WinDevLib>=8.12.550.0 package,
6. Learning to fly based on rookies Professionalpassing@gmail.com The VB6 IOCP module has been extensively modified and improved.,
7. Further improvement is needed for Acceptex, including the addition of heartbeat packets, event functions similar to WinSOC, integration with basic services such as HTTP, WebSocket, etc,
Due to my limited skills, the program is a pile of useless code with a lot of redundancy. During the writing process, in order to facilitate debugging and output, many IFs were not optimized for structure. You can modify it yourself, but be sure to test more, otherwise it is likely to crash with just one change.
Please criticize and correct me, big shots.
Out of curiosity, I downloaded the .twinproj and fed the source code to an LLM (Google's Gemini-2.5-Pro). Here's its recap of the project:
Community Showcase: TBIOCP - A High-Performance IOCP Server
This week, we're looking at TBIOCP, a project by community member 静咫流云 (Jing Zhi Liu Yun). It is a high-performance TCP server framework built in twinBASIC that uses the Windows I/O Completion Ports (IOCP) model. The project is a good starting point for anyone looking to build network applications designed to handle a large number of concurrent connections, such as multi-user servers, data collectors, or backend services.
The project serves as a practical example of several advanced programming techniques in twinBASIC. This includes a multithreaded architecture with a dedicated listener and a pool of worker threads, thread-safe data handling using atomic API functions, and direct Win32 API calls for asynchronous I/O. It also demonstrates how to create a single codebase that compiles for both x86 and x64 targets.
As a functional echo server, TBIOCP provides a stable foundation for custom server development. The core IOCP logic is already implemented, allowing developers to focus on their specific application protocol and business logic.
Please note that while the source code itself (function and variable names) is in English, the code comments are written in Chinese. For those interested in understanding the detailed commentary, the comments can be easily translated using online tools like Google Translate or a modern LLM.
The developer has noted plans for future improvements, including implementing AcceptEx
and adding support for HTTP and WebSocket. For developers interested in high-performance networking with twinBASIC, the TBIOCP project is a useful reference and a solid starting point.
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-3.7-Sonnet, sorted in order of its opinion of "most impactful changes."
- Enhanced Code Editor Navigation: Added fold/unfold procedures commands (CTRL+ALT+Arrow keys) and improved auto-indentation behavior, plus navigation dropdowns now automatically unfold folded code sections
- ComboBox Control Enhancements: Added MaxDropDownItems property to control dropdown height and resolved multiple design-time and runtime issues with dropdown behavior and property changes
- Form Designer Performance Boost: Significantly improved opening times for forms containing hundreds of controls and enhanced stability when working with control arrays
- Expanded Language Support: Added 2 new language packs (Malayalam, Hindi, plus updates to Italian, Japanese, Swedish, Hungarian) with community contributions
- Large Project Handling: Fixed compiler stability issues when loading large projects and resolved problems with importing large twinpack files
- Control Rendering Fixes: Resolved BackColor rendering issues for Frame controls inside User Controls and corrected MDIForm access problems
WARNING: The following issues are present in BETA builds 623 - 815 (the latest build as of publication):
- IMPORTANT: This is an interim/experimental release. It includes significant changes, so some instability is to be expected.
- KNOWN ISSUE: Controls are not being destroyed properly by the form designer, causing big memory leaks (broken in this build)
BETA 807
- fixed: removed use of IConnectionPoint::EnumConnections in setting/unsetting of WithEvents variables to better match VBx [ axisdj, discord ]
- fixed: issues accessing MDIForm predcalred instance when the form is opened implicitly via loading of a child [ axisdh, discord ]
- fixed: removed erroneous use of the evil DoEvents() when adding control array elements, that could cause oddities due to re-entrancy
BETA 808
- improved: form designer stability for forms that contain control arrays [ XYplorer, discord ]
- improved: opening times of form designer for forms with hundreds of child controls [ XYplorer, discord ]
- added: 1 language pack (Malayalam)
- updated: 2 language packs (Italian, Japanese)
- special thanks to our community members for the new/updated language packs (Johan Raphael Joe, maxVBA, KallunWillock)
BETA 809
- improved: some tweaks to auto-indentation after pressing Enter/Return in the code editor [ loquat, discord ]
- fixed: incorrectly trying to take the value of a Sub method could be missed by the compiler, leading to a codegen bug [ XYplorer, discord ]
- fixed: ComboBox drop down height issue with increasing height each time it's dropped [ sokinkeso, discord ]
- added: ComboBox.DropDownVisibleItemCount property (default 0, auto) [ sokinkeso, discord ]
- fixed: changing certain ComboBox properties (Sorted, IntegralHeight, Style) at design time would cause loss of List data
- fixed: Frame inside a UC would not render the BackColor correctly inside the IDE when the UC is used on a form [ Puffeltje, discord ]
- fixed: UpDown control could fire duplicate DownClick/UpClick events [ lm3548, discord ]
- updated: 2 language packs (Swedish, Hungarian)
- special thanks to our community members for the new/updated language packs (DTZ)
BETA 810
- renamed: ComboBox.DropDownVisibleItemCount property to MaxDropDownItems [ Krool, discord ]
- added: 1 language pack (Hindi)
- updated: 1 language pack (Malayalam)
- special thanks to our community members for the new/updated language packs (Johan Raphael Joe)
BETA 811
- fixed: (regression since BETA 805) edge case involving PropertyBags [ AAraya, vbforums ]
BETA 812
- fixed: MaxDropDownItems not effective when run from the IDE [ sokinkeso, discord ]
BETA 813
- fixed: Find/Replace in Project scope not working properly when 'Single Click Preview' is turned off in the IDE settings
- improved: using the code editor navigation dropdown selectors now auto unfolds the scoped area, if folded
- added: IDE commands tbEditor_FoldProcedures and tbEditor_UnfoldProcedures (shortcuts CTRL+ALT+ARROWLEFT/ARROWRIGHT)
BETA 814
- fixed: issue with importing large twinpack files [ fafalone, discord ]
- fixed: (regression in BETA 623) vbSizableNoTitleBar/vbSizableToolWindowNoTitleBar not working properly
- note: (recompiled IDE host project with BETA 813)
BETA 815
- fixed: (regression) form designer 'Align Controls to Grid' option not working
- fixed: compiler symbol table edge case that can potentially cause a crash when loading a large project [ Aaraya, vbforums ]