> ## Content Index
> Fetch the complete content index at: https://nolongerset.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# twinBASIC Update: October 20, 2026
- URL: https://nolongerset.com/twinbasic-update-october-20-2026/
- Published: 2026-10-21T03:59:00.000Z
- Updated: 2026-10-21T04:55:13.000Z
- Description: Highlights include the initial release of command-line tool tblaunch to support automated workflows and a preview of fafalone's forthcoming rich edit control.
- Author: Mike Wolfe
- Tags: twinBASIC Weekly Update

*On April 23, 2021, I helped* [*Wayne Phillips*](https://twitter.com/WaynePhillipsEA/) *introduce the world to* [*twinBASIC*](https://www.twinbasic.com/) *at the* [*Access DevCon Vienna*](https://www.donkarl.com/devcon/) *conference. I* [*boldly predicted*](https://nolongerset.com/devcon-2021/) *that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025\. (And I was* [*oh so close*](https://www.youtube.com/watch?v=LCxfObwA7E8)*...) 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***](https://nolongerset.com/how-to-install-twinbasic/)
- [*twinBASIC Discord Server*](https://discord.com/invite/UaW9GgKKuE) *(*[*chat about the project*](https://github.com/WaynePhillipsEA/twinbasic/discussions/629)*)*
- [*twinBASIC Documentation*](https://docs.twinbasic.com/) *(list of* [*new features*](https://docs.twinbasic.com/Features/) *not in VBx)*
- [*GitHub Issue Tracker (report bugs)*](https://github.com/WaynePhillipsEA/twinbasic/issues)

---

## Highlights

*\*Generated with Claude Opus 5.5*

### tblaunch: Build twinBASIC Projects Without the IDE

Until now, compiling a twinBASIC project meant running the twinBASIC IDE. Scripted builds, CI pipelines and AI agents had to drive the IDE itself, with no proper way to build without it.

That changed this week. Community member okas\_o (the force behind much of the recent [twinBASIC documentation](https://docs.twinbasic.com/) overhaul) released **tblaunch**, a command-line tool that builds twinBASIC projects with no IDE involved. Wayne Phillips highlighted it in the General channel:

> For those of you that might've missed it, @okaso has released an experimental tool that allows for proper CLI building of tB projects (without the IDE being attached)

#### What it is

tblaunch is written in twinBASIC itself. Rather than automating the IDE, it [talks to the compiler directly](https://discord.com/channels/927638153546829845/1021635324809596988/1560991563146854501). As okas\_o describes it, it "does the fine dance needed to pretend to be an IDE without being an IDE."

It can compile, build and run a project from either a `.twinproj` file **or a folder of exported source files**. That second option is a step toward git-friendly twinBASIC development: you can build straight from the text files you keep under source control.

```
tblaunch build <project> [--arch win32|win64] [--out <dir>]
tblaunch run <tree|project>
tblaunch compile <project> [--json]
tblaunch export <project> <folder>
tblaunch import <project> <folder>
tblaunch ide [<project>]

```

Version 9.0 (October 18) also:

- builds in the `export` and `import` commands from okas\_o's [import/export tool](https://docs.twinbasic.com/Features/Packages/Import-Export-Tool);
- adds a `--json` option that reports results in a form other tools can read;
- can open the twinBASIC IDE itself.

#### What problem it solves

Anything that needs a twinBASIC build without a person at the keyboard: build scripts, automated tests, continuous integration and AI coding tools.

Ben Clothier (bclothier) noted that AI-assisted workflows need a "write-import-build-run" loop and suggested merging tblaunch with the import/export tool as "the foundation for a proper MCP server." okas\_o agreed.

tblaunch is also the piece okas\_o's **peloader** project will launch to build twinBASIC projects on **Linux**. peloader runs the Windows twinBASIC compiler there without Wine. It is not released yet, but okas\_o reports it already hosts the compiler under WSL.

#### How to get it

tblaunch is not on the twinBASIC website yet. For now it is distributed through the [twinBASIC Discord server](https://discord.com/invite/UaW9GgKKuE):

1. In the **#docs** channel, download `tblaunch-9.0.twinproj` from okas\_o's October 18 post.
2. Open it in the twinBASIC IDE and build it for **both** 32-bit and 64-bit.
3. Use the build that matches the project you want to compile: 32-bit tblaunch for win32 projects, 64-bit for win64.
4. Run `tblaunch` with no arguments to see its usage reference.

okas\_o calls it "rough around the edges, and in continuous development," so treat it as an early preview, not a finished tool.

### ucRichEditD2D: Modern Rich Text Editing for twinBASIC

fafalone is building **ucRichEditD2D**, a rich text editor UserControl for twinBASIC. This week [he showed off](https://discord.com/channels/927638153546829845/927638154192748606/1561938275604897794) an unexpected party trick:

> ucRichEditD2D will accept MathML input like from the system Math Input Panel and display it as an equation, even with regular msftedit

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2026/10/image-7.png)

In other words, write an equation with Windows' built-in Math Input Panel, and the control displays it as a properly typeset formula.

#### Why build another rich text control?

The standard edit control is decades behind what users expect from a text box today. As [fafalone put it](https://discord.com/channels/927638153546829845/927638154192748606/1561422598250958971):

> I think people expect color font support these days, and this is the easiest way to get it in tB without a proprietary 3rd party control, if they even exist

The control is built on the Windows RichEdit engine (msftedit), rendered through Direct2D. That combination is what makes color fonts possible: msftedit only supports them in windowless mode, which a conventional windowed RichEdit control can't use.

Once it's finished, [fafalone says](https://discord.com/channels/927638153546829845/927638154192748606/1561423541885468714) twinBASIC "will have an edit control you can drop in with":

- **Color fonts**, including color emoji, even when printing
- **Built-in spellcheck in any installed language.** Windows doesn't attach spellchecking to edit or RichEdit controls automatically, so he wrote his own implementation.
- **Auto-linkified URLs**
- **Basic table support**
- **MathML equations**, with a friendlier typed format such as `x=((-b+-sqrt(b^2-4ac))/2a` on his to-do list

Because it is a UserControl, it can also go on a VBA UserForm when ActiveX is enabled. He has already built a `ColorFontLabel` that works in VB6 and VBA.

#### Status

It is not released yet. fafalone says he is "about done with adding features" and has moved on to cleanup and testing. The demo app will be "basically a full wordpad," complete with a ribbon, table options and zoom.

For the curious, okas\_o pointed out that the same quadratic formula takes a single line of TeX, `x = \frac{-b \pm \sqrt{b^2-4 a c}}{2a}`, instead of a screenful of MathML. fafalone found that TeX input works only with the Office version of RichEdit (`riched20.dll`), not the version built into Windows (`msftedit`).

## Discord Chat Summary

\* *Auto-generated via Claude Sonnet 5.5*

### Overview

This week's General and Docs channels centered on compiler hardening, IDE and LLVM settings feedback, a new Detours package, and a fast-moving documentation overhaul from okas\_o. fafalone's MathML-capable rich edit control drew the biggest community response in General. In Docs, okas\_o's tblaunch command-line builder, the experimental peloader (Linux compilation) and verifiable, test-backed documentation stood out. Engagement was high across both channels, with frequent BETA releases and many small iterations.

#### Compiler Fixes & Language Behavior

- waynephillipsea says TwinSight identified an IDE/backend timing bug that caused `[BUILD] failed due to licence error`. The fix ships in the next release, and restarting the compiler works around it until then.
- waynephillipsea confirms that building an HKLM ActiveX control from an un-elevated IDE reports a misleading "BUILD failed" when only registration fails. He proposes launching an elevated instance to register the control automatically.
- A 64-bit LLVM build can crash when a `ByRef ... As Long` API parameter receives `ByVal 0&`. waynephillipsea says `As Any` with `ByVal vbNullPtr` works, `Optional` passes a temporary variable instead, and he will harden the codegen.
- `WithEvents` on arrays works, but the event can't yet tell which element fired. Members favor a leading `Index` argument like VB6 control arrays, and waynephillipsea says it was skipped only because he didn't need it.  
```vb  
Class ClassA  
    WithEvents MyArray() As ClassB  
    Private Sub MyArray_MyEvent()  
        ' fires, but the element index isn't available yet  
    End Sub  
End Class  
```

#### IDE, Settings & LLVM

- Feedback on the new Project Settings dialog asked for wider text boxes (build output path, Project Id, Fusion/Export path). waynephillipsea will address them in the next release, and COM references can now be dragged into position.
- For LLVM optimization flags, fafalone requested an "all on" option. waynephillipsea proposes a "match to host" option that detects the current CPU, plus presets per CPU generation after he researches instruction sets. Output built that way will crash on older CPUs, so a startup capability check is planned eventually.
- waynephillipsea says macro recording is "a v2 thing for sure," though the command-driven IDE would make most of it fairly easy.
- BETA 1008 now preserves docked state when importing `.vbp` files. Docking several external controls in sequence still loses their order.
- waynephillipsea removed a description-less package from the list, and TWINSERV will enforce a minimum description length.

#### Packages, Static Linking & Interop

- waynephillipsea released a statically linked Detours package, based on SlimDetours (experimental/beta). It requires BETA 1006 to fix an x64 crash in compiled executables, and okas\_o has since documented it.
- Static linking currently works only for libs that don't depend on the C runtime. The compiler provides just a minimal set of built-ins such as `memset` and `memcpy`, which is why sqlite's amalgamation and SlimDetours link and arbitrary projects usually don't.
- fafalone explains that WinDevLib (v9.5.746) leaves out `hWnd`, `LRESULT`, `WPARAM` and `LPARAM` aliases. The package aliases only C types with restricted value ranges, such as `BOOL`, and uses `LongPtr` for generic handles. He also confirms that `.tlb` typelibs work like VB6, though his oleexp.tlb is 32-bit only.
- VanGoghGaming extended the WinRT package with `mdlMetaDataLocator`, which recursively resolves parameterized type IIDs. A test result matched MagnumDB.

#### Rich Text, XAML & VBA/Excel

- fafalone's ucRichEditD2D (in development) accepts MathML input and renders it as an equation, even with regular msftedit. It also offers color fonts, manual spellcheck in any installed language, auto-linkified URLs and basic tables.
- Limits: TeX input needs riched20.dll rather than msftedit, and Office's riched20 renders badly through Direct2D. VanGoghGaming shows that XAML controls can rotate via `RenderTransform` and that XAML spellcheck works out of the box.
- XAML Islands can run on Excel UserForms with a manifest change. bclothier notes that this needs admin rights, which locked-down corporate environments rarely allow.
- In VBA, a Frame control (which has an hWnd) stands in for the missing PictureBox, according to kayjaydubya. tB's Frame, like VB6's, has no Resize event.

#### Documentation Platform & Content

- okas\_o's docs now show which tB and package versions each note or warning was tested against. Downloads and run-time error reference pages are live, and he proposes splitting the docs into three books so they build in parallel.
- Public test suites tied to documentation paragraphs now exist for contributed packages, and many fail, which shows where the docs are "forward-looking." gcuser99's tbRegExp v1.9.0.0 PR failed the new check on stale v1.8.0.0 references, and okas\_o acknowledged the contributor instructions were unclear.
- BigNumberLib is promoted from Experimental to Contributed. waynephillipsea welcomes the test effort if it improves package quality.
- Community feedback produced fast changes:  
  - Built-in data types now have a Data-Types reference page.
  - A new `Class_Initialize` versus `Sub New` section was added. Only one runs, depending on how the object is created.
  - Per-method "Common Errors" tables are in production, starting with the Strings module, and they are exposing tB-versus-VB6 error differences that waynephillipsea is fixing.
  - Requested `KeyCountHint` docs are in progress.  
```vb  
Dim obj As New Class1      ' Class_Initialize runs  
Dim obj2 As New Class1(42) ' parameterized Sub New runs  
```

#### Command-Line Tooling, Peloader & IDE Protocols

- tblaunch (experimental, written in tB) builds projects without an IDE by talking directly to the compiler. It supports `.twinproj` files and exported folders, includes full impexp syntax, can launch the IDE, and now ships with a changelog at waynephillipsea's request. bclothier suggests merging impexp and tblaunch as a foundation for an MCP server, and okas\_o agrees.
- peloader (unreleased, experimental) runs the Windows tB compiler on Linux without Wine or glibc. It reimplements 557 Windows functions in about 50k lines of C and verifies behavior against recordings from real Windows. Its exes match Windows builds byte for byte across about 130 test projects. It already hosts the compiler under WSL, and okas\_o expects about a week of cleanup.
- waynephillipsea says the JSON-over-websocket IDE protocols (root, filesystem, language, debugger) will move to a binary format soon and already deviate from standard LSP/DAP. They stay officially undocumented for now, but he is fine with imojenisys reverse-engineering them, and imojenisys is connecting HexIDE to tB.
- waynephillipsea shared the full list of tB warning and error codes, and `ERROR_MissingImplementation` is internal.

### Conclusion

This week brought concrete fixes (the licence-error timing bug and elevated registration), a new Detours package, and hardening plans for LLVM `ByVal 0&` handling. Documentation became test-backed and error-aware, and that work is surfacing real VB6 differences. The command-line tooling is maturing quickly, with tblaunch now available as an early preview and peloader pointing toward Linux builds. Ahead are the binary IDE protocol, CPU-preset options for LLVM, and v2 features such as macro recording. The community also remains active on rich text and VBA integration.

## Around the Web

### tbBlob: Generate twinBASIC Bindings for C Libraries

[Posted in show-and-tell](https://discord.com/channels/927638153546829845/1561201847384145950) by bclothier:

> Makes writing FFI slightly easier.

From the project's README, tbBlob "generates **twinBASIC bindings for a C library** from its header files": `Declare`s, `Type`s, `Enum`s, `Delegate`s and constants. "One generated source works as both win32 and win64." It parses the headers with CastXML, writes `.twin` source files you add to your project, and produces a `report.md` listing anything that couldn't be expressed in twinBASIC. It requires Visual Studio 2022 (or its Build Tools) with the C++ workload.

[GitHub - bclothier/tbBlob: twinBASIC C FFI GeneratortwinBASIC C FFI Generator. Contribute to bclothier/tbBlob development by creating an account on GitHub.![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/icon/favicon-1a381165-0554-429b-a27c-0ab3dd65c0d8.png)GitHub![](https://opengraph.githubassets.com/090b182ed3c1f7d7dad67e894518a29f436dec7f6aafeb0571ff41e267d8bc77/bclothier/tbBlob)](https://github.com/bclothier/tbBlob)

### libgit2tB: Git as a Library

bclothier also [posted the first package built with it](https://discord.com/channels/927638153546829845/1561211678706638938):

> There's a package available if you'd rather use git as a library than as a command line. Made with tbBlob.

According to the tbBlob README, its bindings were tested against all of libgit2 1.9.1 (960 functions). They compile for both 32-bit and 64-bit, the struct layouts match C's, and a git workflow and a clone with callbacks both ran through them.

## Changelog

Here are the updates from the past week. You can also find this information by visiting the GitHub [twinBASIC Releases page](https://github.com/WaynePhillipsEA/twinbasic/releases).

[Releases · twinbasic/twinbasicThe twinBASIC Programming Language. Contribute to twinbasic/twinbasic development by creating an account on GitHub.![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/icon/favicon-b19f900f-ada6-4b84-b8ba-7ab673418587.png)GitHub![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/thumbnail/6e701b93-68b5-43ad-82c4-d84b28ae4b52-5ca60e29-05e4-4660-8f20-9a38588544b1.png)](https://github.com/WaynePhillipsEA/twinbasic/releases)

### AI-Generated Changelog Summary

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

- **Revamped project settings dialog (1015):** The project settings dialog has been redesigned. Text input widths were tweaked in 1016.
- **Better form designer and control support:**
  - All controls now have a `DockOrder` property for finer control of docking priorities (1006). Importing `Align` settings from a VBP was corrected in 1006 and 1012.
  - The property sheet now supports Currency, Decimal and Variant types (1007).
  - Individual properties can now be linked to their own PropertyPage (1008).
  - AX host wrapper now stops events reaching user code after `FreezeEvents` is issued (1006).
- **New language and runtime features:**
  - New `vbPtrSize` constant that adapts to the current architecture (1010).
  - New `Bin` and `Bin$` functions to complement `Hex` and `Oct` (1010).
  - New `${Bitness}` variable for project settings such as the build output path (1010).
- **New DetoursLib package (1006):** A statically linked Detours library based on SlimDetours (MIT licence).
- **Better IDE tooling and diagnostics:**
  - Compilation errors now point you to the Diagnostics panel when a definite error is already listed (1007).
  - A missing PropertyPage is now reported as a proper compilation error, TB5259, instead of a debug console message (1008).
  - New command line options for the IDE: `--no-update-recent-files`, `--no-save-ide-settings` and `--reset-ide-settings` (1007).
  - Intellisense and LLVM code generation were refined (1013).
- **Compiler and VB6 compatibility fixes:**
  - Static linked libraries such as SQLite no longer crash on Win64 executables (1006).
  - Enum members in generated type libraries now follow the declared order, and an explicit `EnumId` is included (1009).
  - Several compiler crashes were fixed, including ones involving the MS Script Control in 64-bit mode and invalid `RunBeforeStartupObject` use (1009, 1010).
  - `ReDim` with an upper bound below the lower bound now raises error 9, as in VB6 (1017).
  - Issues with returning enhanced UDT types from functions were fixed (1016).

---

**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 1006

- fixed: invalid message in the DEBUG CONSOLE '\[BUILD\] failed due to licence error. Please try again.' \[ yereverluvinunclebert, discord \]
- fixed: AX controls with non-default Align property were not importing properly from a VBP \[ Saturnian, discord \]
- fixed: AX host wrapper now forcefully prevents events from propagating through to user code when FreezeEvents has been issued to an AX control
- added: DockOrder (Long) property to all controls, for finer control of docking priorities
- tweaked: MarkDown preview formatting for <pre> blocks and <a> links
- new: package DetoursLib (statically linked Detours library based on SlimDetours, MIT licence, see README.md in package)
- fixed: some static linked libraries (e.g. SQLITE) crash on Win64 when compiled to an executable

### BETA 1007

- improved: 'COMPILATION (CODEGEN) ERROR AT LINE #' breakpoint now reads 'COMPILATION ERROR DETECTED. CHECK THE DIAGNOSTICS AT LINE #' when there is a definite compilation error already listed in the diagnostics panel \[ Gary Miller, discord \]
- fixed: insufficient contrast between VariablesPanelHoverTooltipBackColor and the foreground color in the dark theme \[ GrandPaM, discord \]
- added: support for Currency, Decimal and Variant types in the form designer property sheet for control properties \[ fafalone, discord \]
- improved: Removed unnecessary metadata from data URIs embedded in our IDE CSS files [\[#2511\]](https://github.com/twinbasic/twinbasic/issues/2511)
- added: support for command line option '--no-update-recent-files' to the twinBASIC IDE [\[#2510\]](https://github.com/twinbasic/twinbasic/issues/2510)
- added: support for command line option '--no-save-ide-settings' to the twinBASIC IDE [\[#2510\]](https://github.com/twinbasic/twinbasic/issues/2510)
- added: support for command line option '--reset-ide-settings' to the twinBASIC IDE

### BETA 1008

- improved: 'Failed to find named PropertyPage' error no longer prints in the DEBUG CONSOLE, and instead is reported as a proper compilation error TB5259
- added: IDE support for per-property PropertyPage associations, allowing individual properties to invoke their linked PropertyPage via the designer property sheet \[ Arrow Loop, discord \]

### BETA 1009

- fixed: ordering of Enum members in generated type libraries was reverse of the declared order \[ Krool, discord \]
- improved: if an explicit EnumId attribute is set on an Enum, it now gets included in the type library generation \[ Krool, discord \]
- fixed: invalid use of RunBeforeStartupObject attribute would cause a compiler crash during build [\[#2517\]](https://github.com/twinbasic/twinbasic/issues/2517)
- fixed: missing diagnostic 'class modules cannot expose public fixed-arrays' in some instances, and leads to potential compiler crash [\[#2521\]](https://github.com/twinbasic/twinbasic/issues/2521)

### BETA 1010

- fixed: compiler crash when opening a project that references the MS Script Control when opening in 64-bit mode [\[#2523\]](https://github.com/twinbasic/twinbasic/issues/2523)
- added: constant vbPtrSize context-aware based on the current architecture \[ Krool, discord \]
- added: ${Bitness} variable for use in project settings such as the build output path \[ Krool, discord \]
- added: VBA.Conversion.Bin$(x) and Bin(x) functions to complement existing Hex/Oct \[ fafalone, discord \]

### BETA 1011

- fixed: (regression) root package symbols erroneously showing up in intellisense lists where they shouldn't
- fixed: some compiler crash restarts involving intellisense

### BETA 1012

- fixed: corrections to Align -> DockOrder property when importing a VBP \[ Saturnian, discord \]

### BETA 1013

- improved: some LLVM refinements for missing/previously unsupported codegen
- improved: some intellisense tweaks

### BETA 1014

- fixed:edge case logic bug involving Byte to Boolean comparisons \[ axisdj, discord \]

### BETA 1015

- improved: revamped the project settings dialog \[ AI \]

### BETA 1016

- improved: tweaked the new project settings dialog text input widths \[ Krool, discord \]
- fixed: some issues around returning enhanced-UDT types from functions \[ VanGoghGaming, discord \]

### BETA 1017

- fixed: built-in IDE themes DiagnosticsGroupFontSize/DiagnosticsGroupFontWeight being ignored [\[#2529\]](https://github.com/twinbasic/twinbasic/issues/2529)
- fixed: recursive inheritance in IDE theme files would cause IDE issues [\[#2526\]](https://github.com/twinbasic/twinbasic/issues/2526)
- fixed: \[RunAfterBuild\] property edge cases [\[#2516\]](https://github.com/twinbasic/twinbasic/issues/2516)
- fixed: WebView2 IEnumVARIANT::Reset implementation to fix issue with Clone [\[#2531\]](https://github.com/twinbasic/twinbasic/issues/2531)
- fixed: ReDim with an upper bound below the lower bound raises E\_FAIL where VB6 raises error 9 [\[#2524\]](https://github.com/twinbasic/twinbasic/issues/2524)