People have been writing Unicode supporting VB6 apps for decades now. There's a very popular project called VBCCR that provides reimplementations of all the VB6 UI controls with full Unicode support and additional features. It's not "a mess", it's standard for any VB6 code written by a decent programmer in the past 15+ years and works fine because under the hood it's UCS-2. So everyone now just uses xxxW APIs passing strings by direct pointer. And supporting extended characters is a standard 5 line rewrite of ChrW.
Now the backwards compatible successor being talked about for the new XYPlorer versions support Unicode everything from the ground up.
And since this is discussing twinBASIC now, the new version of the language, you've got all your additions. tB has native Unicode everywhere (hell, you can even make your function names and variables emojis), generics, type inference, attributes, declaring module-level stuff anywhere, not to mention all the things you listed that were supported to begin with like enums and for loops and dozens of others like delegates for calling by pointer, defining interfaces/coclasses in the project, multithreading support, 64bit support, etc. The language is now no longer frozen in time with a backwards compatible successor with tons of new language features and cross platform support one of the major future plans.
People's knowledge of VB6 seems to be also "frozen in time", unaware of what modern use of it is really like.
Plenty VB6 apps use tons of APIs introduced well beyond 2001. I'm not too familiar with XYPlorer but it looks like it will support some more recent stuff if available.
One of my hobbies was writing demo projects showing the use of new APIs and COM objects. I have a shell browsing control with all of the features of Explorer; it for example can browse attached media devices like cameras and phones that don't even have normal file system paths and can't be used in older apps, because it's based entirely around shell interfaces and APIs not available until Vista. Another recent project was how to use the Win7+ Ribbon UI controls. I don't support earlier Windows versions than 7 at all in my personal projects now.
Security or certificates? No problem. I've written VB6 compatible versions of the entire BCrypt and NCrypt APIs covering everything up through the latest SDK, and people have written practical programs using those plus tons of other Windows security, crypto, and cert subsystems.
There's connection classes using the newest TLS versions. OAuth? Sure. People are replacing older in-app browsers with WebView2-based ones.
If that's still insufficient, and you really want something more modern, it's entirely possible and there's plenty of demos of using WinRT from VB6 and twinBASIC. XAML controls? Yup, people are doing it. We just had a big debate about the merits of using the latest Windows 11 RichEdit controls supporting color fonts directly vs using the XAML implementation instead, or implementing a windowless RichEdit with the modern Direct2D rendering pathway like the XAML one does underneath. Speaking of DirectX, there's also VB/tB compatible libraries for Direct3D 11 and 12 and the Media Foundation subsystem.
Just because a language is 'frozen' in 1998 doesn't mean it can't call modern APIs and use modern libraries. And now with twinBASIC it's unfrozen, adding tons of new language features and modernizations. Do you also think modern apps absolutely need the very latest C++ standards and you can't make modern apps in C++ 03?
Hell, I've even written demos of how to use tB to make kernel mode drivers that run on Win10/11, inspired by someone figuring out how to make one in VB6 that runs on Windows up through the last 32bit version. Since tB supports 64bit, they run on 64bit 10/11 now.
Well there's a small but significant community of hobbyists still using it for... we're enthusiastic about it to be subscribing already well it's still in beta to support it.
Lots of businesses still have critical line-of-business VB6 code and can't afford or have other issues with the total rewrite required to move anywhere else.
And one thing almost every commenter who thinks there's no market is overlooking: VBA. VBA is still huge in the business world. 64bit Office has become the default, but if you want to create active-x controls for it? Your options are... nothing without using a whole different language, usually C++. tB already has initial support for creating 64bit controls that can be used in Office VBA (and any other COM host including .NET, on top of being able to compile to 32bit for VB6 if so desired). There's a number of bugs to work out, but I've gotten some of my very complex controls running. Then you can also make VBE addins. All with the same VBAx64 syntax and language features you're used to with dozens of new ones.
I was a little later so my memories are things like dos32.bas, VB6 code to make pr0ggi3s for AOL. 12-14, making punters to boot people off, making l33t phaders for your chat room text (gradient color)... i made a scrambler that got pretty popular-- a chat room game where you competed to unscramble words the fastest. Even made it so it avoided the esay csae of smae fisrt and lsat.
I was a huge asshole back then but it was a lot of fun.
The most impressive 'pushed beyond it's limits' code I've seen is The trick's VB6 kernel mode driver. Yep, really. VB6. Kernel mode. You have to strip out the MSVBVM60.dll dependency, which dramatically limits what language features you can use, but it's possible, albeit for 32bit Windows only, of course.
Inspired by that, I made a similar 'hello world' type kernel mode driver and in addition to the VB6 version, made a twinBASIC version, which can compile to x64 and run on current Windows. twinBASIC has no runtime dependency, so you can use far more of the language features, supports cdecl for calling dbgprint, and it has native support for putting APIs into the IAT so no TLB dependency and overriding the entry point so no special hack for that.
I'm not nearly as brilliant as The trick or wqweto to figure these things out to begin with, but it's so much fun taking the techniques of these legends and running with them. Although I did claim the title of first to create a realtime kernel ETW event tracer, a notoriously unfriendly API that requires multithreading (possible in VB6 thanks to The trick et al, natively supported in tB via API for now, language syntax soon).
The trick is an actual genius. Why are people like that still using vb6 and making these awesome things? I'm not complaining, it makes me happy!
Love reading your posts too, fafalone. Imo you're up there with these other fellas! Keep at it.
They are the perfect example of the "it's not about the tool, it's how you use it" mentality. I'm not complaining either --- and actually think that we can learn a lot from how these people approach their work.
I'm a big fan of twinBASIC, more successor than clone.
It's working on full backwards compatibility with VB6 (and very, very close to it, even many complex UserControls work), with a lengthy list of new features (x64-- through compat. with VBA7 x64 syntax, multithreading (via API for now, native syntax soon), generics, overloading, Unicode-everything, defining interfaces/coclasses in language instead of TLBs, easily makes standard DLLs, Implements-Via syntax to extend classes, parameterized class constructors, can specify UDT packing, bitshift operators, inline initialization of vars, forms support modern image formats/transparency/alpha blending, AddressOf works on class members... well, the list goes on for quite some time: https://www.vbforums.com/showthread.php?890181-TwinBasic&p=5...
One thing I'm sure lots of people here will find blasphemous, it lets you make kernel mode drivers, provided you stick to WDM (you could do this as a hack in VB6, but you had to strip the runtime dependency out-- which dramatically limited usefulness, not to mention no WOW64 for kernel mode. tB has no runtime dependency so all you have to do is avoid strings/variants/most but not all arrays, as those call user mode APIs behind the scenes). Proof of concept: https://github.com/fafalone/HelloWorldDriver
Main downsides are that it's also like VB6 in being closed source/commercial (only restriction on the free version is a splash screen on x64 exes though, and won't have access to compiler optimizations or cross-platform compilation when they're implemented; no restriction on commercial use or royalties), but the creator seems amenable to changing that if it's viable, and since we've had 20 years of no community stepping up for something like this, it's just a practical matter that for one person to do it they'd need income as it's a major undertaking, not something you can do as a hobby with full time employment doing something else, at least if it's going to get done in years instead of decades (*cough* Radbasic, which has made near zero progress after being announced around the same time, and is barely a step above Hello World support).
Now the backwards compatible successor being talked about for the new XYPlorer versions support Unicode everything from the ground up.
And since this is discussing twinBASIC now, the new version of the language, you've got all your additions. tB has native Unicode everywhere (hell, you can even make your function names and variables emojis), generics, type inference, attributes, declaring module-level stuff anywhere, not to mention all the things you listed that were supported to begin with like enums and for loops and dozens of others like delegates for calling by pointer, defining interfaces/coclasses in the project, multithreading support, 64bit support, etc. The language is now no longer frozen in time with a backwards compatible successor with tons of new language features and cross platform support one of the major future plans.
People's knowledge of VB6 seems to be also "frozen in time", unaware of what modern use of it is really like.