twinBASIC Update: May 2, 2021
Highlights include C-style block comments, support for additional Rubberduck annotations, and With blocks for UDTs.
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, 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, tweet me @NoLongerSet or email me at mike at nolongerset dot com.
If you would like to influence the future of the twinBASIC project, you can put your two cents in at this Github issue discussion: twinBASIC Roadmap / Priorities -- have your say!
Highlights
Block comments
Version 0.9.2177 added support for C-style block comments:
Rubberduck annotations
Added support for the following Rubberduck-VBA annotations:
With blocks for user-defined types
Implemented a known limitation of the preview version of twinBASIC:
Around the Web
A fun proof of concept
Olaf Schmidt posted a small (~100 lines) proof of concept application using twinBASIC and his vbRichClient-Framework:
You can grab the source code over at the twinBASIC Github project.
Changelog
Here are the updates from the past week. You can also find this information by installing the twinBASIC VS Code extension and clicking on the Changelog tab of the extension page:
[v0.9.2220, 30th April 2021]
- improved: intellisense/on-hover now indicates 'Private' on approriate procedures and fields
- fixed: standard library functions returning Booleans (all the Is* functions) were actually being output as Integers
- added: support for RubberDuck @ModuleDescription annotation inside modules [ https://github.com/WaynePhillipsEA/twinbasic/issues/8 ]
- added: support for RubberDuck @DefaultMember annotation inside modules [ https://github.com/WaynePhillipsEA/twinbasic/issues/9 ]
- added: support for RubberDuck @EnumeratorMember annotation inside modules [ https://github.com/WaynePhillipsEA/twinbasic/issues/10 ]
- fixed: support for Option Private Module, mapping to Private Module [ https://github.com/WaynePhillipsEA/twinbasic/issues/29 ]
- added: standard library function VBA.Information.IsArrayInitialized [ https://github.com/WaynePhillipsEA/twinbasic/issues/37 ]
- changed: explicitly disallow AddressOf to be used on class instance members [ https://github.com/WaynePhillipsEA/twinbasic/issues/5 ]
[v0.9.2177, 30th April 2021]
- added: support for block-comments, denoted by /* and */ [ https://github.com/WaynePhillipsEA/twinbasic/issues/97 ]
[v0.9.2136, 29th April 2021]
- fixed: typelibrary coclass instantiation now checks for the TYPEFLAG_FCANCREATE flag at compile-time
- fixed: property let/set assignments in typelibraries that have implicit lcid arguments not always binding correctly [ https://github.com/WaynePhillipsEA/twinbasic/issues/96 ]
[v0.9.2125, 29th April 2021]
- added: vscode extension review request prompt (once only)
- fixed: vscode extension error handling around launching the compiler EXE [ https://github.com/WaynePhillipsEA/twinbasic/issues/90 ]
- improved: debug console 'time taken' now only counts the execution time, rather than the code generation + execution time, for more accurate timings
[v0.9.2100, 28th April 2021]
- fixed: added support for UDTs in With blocks [ https://github.com/WaynePhillipsEA/twinbasic/issues/60 ]
- fixed: detection of ParamArrays in type libraries when procedures have a return value [ https://github.com/WaynePhillipsEA/twinbasic/issues/83 ]
- fixed: ParamArray implicit arrays now have the FADF_VARIANT flag set on them
- fixed: correction to bindings of implicit function return variables in cases where arguments are passed to support recursive self calling [ https://github.com/WaynePhillipsEA/twinbasic/issues/77 ]
[v0.9.2021, 27th April 2021]
- added: late-bound support for twinBASIC generated classes (IDispatch implementation). Support for overloaded members currently disabled. [ https://github.com/WaynePhillipsEA/twinbasic/issues/58 ] [ https://github.com/WaynePhillipsEA/twinbasic/issues/83 ]
- fixed: codegen issue for auto-implemented field property accessors sometimes clobbering esi/ebx registers
- fixed: TypeName() now works correctly on twinBASIC generated classes
- fixed: multithreading from the debug console since the introduction of global variables [ https://github.com/WaynePhillipsEA/twinbasic/issues/91 ]
[v0.9.1944, 23rd April 2021]
- fixed: compiler crash when module-level constants were defined with no non-constants defined at the same scope [ https://github.com/WaynePhillipsEA/twinbasic/issues/85 ]
- fixed: TypeName() returned generic "Unknown" or "Dispatch" result on twinBASIC VBA.Collection objects [ https://github.com/WaynePhillipsEA/twinbasic/issues/84 ]
- fixed: bang operator resolution when a default-member in the chain takes a required parameter [ https://github.com/WaynePhillipsEA/twinbasic/issues/88 ]