twinBASIC Update: September 23, 2024

Highlights include big plans for the future of UDTs in twinBASIC and an in-person presentation on twinBASIC at Oxford University in England.

twinBASIC Update: September 23, 2024

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

Extended UDT Support Planned

In response to a somewhat unrelated question in Discord, Wayne mentioned that he has big things in mind for future UDT support in twinBASIC:

I do have big plans for extending UDT support, including for allowing defining operators on them, which will allow very convenient and efficient implementations of things like BigNumber types

There have been many places in the builtin packages where I've wished for better UDT support to help make the implementations more lean and lightweight.

Discord Chat Summary

* Auto-generated via Claude-3.5-Sonnet-200k on poe.com

twinBASIC Development Update: September 16-23, 2024

This week's discussions in the twinBASIC Discord server covered a range of topics, including future enhancements to User-Defined Types (UDTs), performance considerations, and the ongoing development of LLVM support. Here are the key points from the conversations:

  • Wayne Phillips confirmed plans for extending UDT support in twinBASIC, including the ability to define operators on them. This enhancement will allow for more efficient implementations of complex types like BigNumber.

  • The community discussed the performance implications of using classes versus UDTs. It was noted that accessing class properties can be slower due to function call overhead, with potential performance differences of 2-5x in loop scenarios.

  • There was a conversation about memory management and heap fragmentation in twinBASIC. While reference counting makes deallocation cheap, heap fragmentation can still be an issue in certain scenarios, particularly with fast collection class implementations.

  • The need for better support of unions in twinBASIC was highlighted. Current workarounds for unions are described as "ugly" and often involve SAFEARRAY-backed byte arrays, which can be less efficient.

  • Discussions touched on the importance of command-line compilation and the ability to run twinBASIC applications headless, especially for web server implementations and microservices architectures.

  • LLVM optimization support for x64 was discussed, with confirmation that it's planned for the v1 release. Currently, the subscriber version only has partial x86 LLVM support.

  • The performance benefits of LLVM-optimized code were emphasized, with reports of significant speed improvements over native compiled VB6 code:

[CompilerOptions("+llvm,+optimize,+optimizesize,+aes,+avx,+avx2,+bmi2,+fma,+fxsr,+rdseed,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3")]
  • There were suggestions for improving the user interface for LLVM optimization options, potentially through a separate options tab or an add-in.

This week's discussions highlight twinBASIC's ongoing evolution, with a focus on performance optimizations, enhanced type support, and compiler improvements. The planned extensions to UDTs and the progress on LLVM support demonstrate the language's commitment to providing powerful, efficient tools for developers while maintaining compatibility with existing VB6 codebases.

Around the Web

twinBASIC Comes to Oxford University

It's official. I'm excited to share that I will be presenting the latest and greatest updates on twinBASIC at the UK Access User Group's conference in person (!) at world-renowned Oxford University:

twinBasic – Past, Present, and Future

presented by Mike Wolfe
Join Mike as he explains the modern programming language twinBASIC that maintains compatibility with VBA. He will explain why it’s of considerable significance to our community and how it could change the Access developer’s working life. He goes through the past, present and (most importantly!) future of this new product.

  • Past: What is twinBASIC?
    • A brief introduction
    • Key features compared to VBA
  • Present: How can it be used today?
    • Developing custom components
    • Extending existing applications
    • Replacing legacy scripts
  • Future: What lies ahead for developers?
    • Potential impact on VBA
    • Implications for Access development

The conference takes place Wednesday, November 20, 2024.

The price for UKAUG members is £65.00.

The price for non-members is £130.00, but does include a year of UKAUG membership which, among other benefits, gets you into next spring's conference at a reduced rate.

To get tickets, scroll down to the very bottom of the conference agenda web page:

Autumn 2024 Conference – The UK Access User Group
<p>Come and join us at our IN-PERSON event at Oxford University!</p>\n

Seating is strictly limited. Reserve a spot now before the event sells out. Feel free to drop a line in the comments below or DM me in Discord (@nolongerset) if you will be attending.

Hope to see you there!

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.

No new releases this week.

All original code samples by Mike Wolfe are licensed under CC BY 4.0