twinBASIC is a modern version of the classic BASIC programming language.  With twinBASIC we aim for 100% backwards compatibility with existing VB6 and VBA projects.

We aspire to offer a complete replacement development environment for classic BASIC projects whilst also bringing many new features and improvements over the old VB6 IDE and compiler.

Here at twinBASIC, we are BASIC fanatics.  For the initial release, we have put painstaking effort into building a solid and well tested compiler, standard library and debugger.  Our top priority has been to make sure that we copy every last quirk (or feature?) found in the legacy VB6 compiler.

The first preview version of twinBASIC will be released to the public on 9th April 2021.

twinBASIC IDE support is provided via an extension to the amazing open source project, VS Code.  This first version of twinBASIC will not offer any GUI (form) elements.

Once we have finalized and fixed up any bugs in the first release of twinBASIC, we will be focusing on three key areas over the coming weeks and months:
  • Forms / GUI support, including full backwards compatibility with existing VB6 forms.
  • Native compilation.
  • Cross-platform compilation.

To keep up-to-date with twinBASIC developments:


IDE features

  • Semantic highlighting
  • Intellisense, code completion and signature help
  • Outline view
  • Goto definition
  • uses the LSP protocol for seamless integration with VSCode

Debugger features

  • Multi-thread debugging
  • Callstack window
  • Variables window
  • Watch window
  • Debug console (aka 'Immediate Window')
  • uses the DAP protocol for seamless integration with VSCode

Compiler features

  • Designed to be 100% compatible with existing VB6 and VBA code, simulating all known quirks
  • Compiles to Win32 and Win64 architectures. Mac, Linux and Android compilation planned.
  • Multi-threading support, and the standard library is fully thread-safe
  • Unicode (UTF8) support throughout (IDE -> parser -> compiler -> standard library)
  • Supports class parameterized constructors (for non-exposed classes)
  • Generics are supported, as seen in VB.NET (but more flexible)
  • Overloading is supported, with overloading rules as per VB.NET
  • New datatypes: LongLong (on Win32 as well as Win64), LongPtr, Decimal
  • New operators: AndAlso, OrElse, <<, >>
  • New assignment operators: +=, -=, *=, \=, /=, ^=, &=, <<=, >>=
  • New statements: Continue For, Continue While, Continue Do, Exit While...
  • Return syntax is supported (as per VB.NET), using this disallows the old GoSub syntax
  • Per-procedure Handles/Implements event syntax as per VB.NET
  • DeclareWide support for using Strings in unicode DLL calls (turns off implicit ANSI conversions)
  • Entire compilation process is multi-threaded for great performance
  • Currently compiles to unoptimized native code, giving better performance than VBA excode (VB6 p-code)
  • Fully based on COM technologies, like the classic versions of Visual Basic
  • Multiple components per source file allowed (within Class / Module blocks)
  • Brand new custom parser (written in C++), built for flexibility and amazing performance
  • Removal of many legacy limitations, such as the size of procedures, number of line continuations
  • Designed with LLVM in mind, so we can soon offer full native compilation for superior runtime performance

Project features

  • Build configurations... allows for customizing builds, and easily switching between them
  • Single project file solution, much like VBA projects. External file links allowed

Built-in extension libraries

  • WebEx: high performance multi-threaded web-server, based on IOCP completion ports. Supports HTTPS with ACME support, and also provides a HTTP client and JSON parsing
  • vbWatchdog: a native implementation of vbWatchdog (ErrEx) for fantastic error handling possibilities

Visual Basic (VB) is a trademark of the Microsoft Corporation

Copyright © 2021 iTech Masters (VAT: GB202994606)