« first day (2470 days earlier)      last day (710 days later) » 

00:00
@WaynePhillipsEA twinBASIC looks incredible. Must have been a huge amount of work.
RELOAD!
[rubberduck-vba/Rubberduck] 2 opened issues. 1 issue comment.
[Zomis/Games] 2 commits. 1 issue comment. 36 additions. 24 deletions.
[Minesweeper] Games Played: 117, Bombs Used: 82, Moves Performed: 17377, New Users: 9
 
1 hour later…
01:15
 
3 hours later…
04:40
hey @mansellan glad you like it! Also, thanks for your comments on the vbforums thread the other day
@this thanks for your email as well, hope you got my reply.
hope everyone is well. i'll try to pop back later
5
 
8 hours later…
 
3 hours later…
15:30
@WaynePhillipsEA Yep I did, thanks! Looking forward to see what you accomplish with the twinbasic. :)
 
2 hours later…
17:49
I'm excited to try out twinBASIC too!
I'm curious how performance will be compared to VB.NET, I'm assuming you could create some small lightweight executable for simple things that have better performance.
18:18
hi guys. performance wise, the initial release of twinBASIC will sit somewhere between VBA (or VB6 p-code) and VB.NET. I haven't done extensive benchmarking comparisons yet, but for the ones I have done, twinBASIC can be up-to 10 times faster than VBA, depending on many factors of course.
twinBASIC outputs EXE code directly now, rather than using an intermediate layer like p-code. Once we turn on support for LLVM compilation, performance should be on par with VB.NET, if not surpass it.
@WaynePhillipsEA are you able to comment on the support for VBA projects? How will that work?
There is no VBA integration yet. I've got some ideas around that, but nothing concrete. For now, you'll be able to create compiled DLLs with twinBASIC (ActiveX or non-ActiveX) that you can reference from VBA.
compiled DLL is A Very Good Thing™.
One other option for the VBA integration is to allow twinBASIC to create self-contained VCOM objects, as seen in vbWatchdog.
If I were to get a pie in the sky, I'd be able to click hte ... in an Access form's event and be taken to twinBASIC screen.
18:26
That sounds sweet. Would this allow me to make an Access add-in?
Yes, you can make COM addins, no problem
Oh, the possibilities
Maybe a ribbon button that would take you to the twinBASIC screen. That could be almost as good as what you are asking for @this
One of the big advantages (I feel), is that DLLs and EXEs compiled with twinBASIC don't have any dependencies beyond the OS standard DLLs. The runtime parts are statically linked in to the DLL/EXE as necessary
I think that's a important feature. It's annoying to have to make sure that appropriate runtime / framework / whatever you call it are installed.
I've been wanting something like that for a long time. That's even better than C++ which needs it's runtime
18:30
Rust would have solved this problem, too but it's too low level for what we want, I think.
@HackSlash that's not really correct
C++ doesn't need its runtime
C# needs the .NET runtime
@Vogel612 there are C++ redist files that needs to be installed... depends on whether you use extended features
C++ just usually dynamically links things from the vcredist family
18:31
So why are we all plagued with 15 versions of the C++ runtime?
the redist stuffs are not a runtime
I think that if you stick to standard (ANSI?) C++, you don't have that problem, I think. (Interestingly, even Rust depends on some C++ redist, AFAIUI)
because rust compiles down to c++ IINM
Correct.
C++ is the basis of a lot of toolchains
haskell also compiles down to c++
18:33
@Vogel612 even so, if you don't have the redist installed, this one C++ program probably won't run so from user's POV, redist is basically required to run this.
true
That's what I'm saying. Feels no different than a runtime to the user.
but there's a technical difference
a runtime implies that you're not executing machine code
just to be clear, when I mentioned the twinBASIC runtime, I was referring to the runtime library, not a runtime p-code compiler or anything like that.
and that get built into the DLL as the output (thus not requiring a separate install), correct?
18:42
yup
does it contribute to DLL's size significantly?
in .NET core they introduced the ability to run .NET code without having a runtime installed but doing that makes the binaries way bigger... like hundred of MBs.... :-O
@this I'd assume it's subject to compiler optimizations, so probably only as much as needed
Not really. The whole project, including compiler, debugger, all the vscode LSP support etc, and the runtime comes in at <2MB for the x86 release. So even if the whole runtime gets linked in to your DLL/EXE, it's only going to be 1MB or so. Probably a lot less than that actually.
oh wow that's awesome
you know that the C++ guys are howling in horrors that you're quoting MBs, not KBs. ;-)
18:46
haha
@this I'm currently used to the sizes that come with node js applications, soo ...
Kidding aside, I'm perfectly happy with even 10 MB addition.
so that's impressive, as Vogel said.
As things evolve and we add more optimizations to the runtime library, things may grow a little. But realistically, I am keeping things tight, and so I don't see us ever getting to a 10MB runtime library.
That's good. A simple application is easily less than 1MB. I wouldn't want to add a chuck for every app released. What is the twinBASIC runtime?
18:55
The twinBASIC runtime contains all the functions under the VBA namespace which you see in the VBE Object Browser. Like MsgBox(), Left(), etc, plus there's many implicit conversions and things like that which require extra support from helper functions.
Will twinBASIC allow use of pointers? (thinking more about function pointers)
Currently only the same support as VBA/VB6 for them. So AddressOf works in the same way (giving you a LongPtr). Possibly we could look at supporting something like VB.NETs delegates.
Wish I understood what you’re doing enough to appreciate it.
hey @IvenBach if you write VBA code, you'll already be able to use twinBASIC
19:12
Isn't MsgBox just a call to MessageBox function (winuser.h) ? I thought most of the things in VBA were just system calls.
MsgBox boils down to MessageBoxIndirect, but the issue is that MsgBox takes Variant inputs, and these have to be converted down to BSTRs or even ANSI strings for MessageBoxIndirect. So you don't do those conversions inline every single time you call MsgBox, but instead have a helper routine to do them for you.
Cool, thanks for the explanation. So sometimes it's just a wrapper that handles the VBA > C++ type conversion.
If you did those conversions inline every single time (and for all the VBA functions), your compiled DLL/EXE would grow significantly.
We might actually offer that as an option in future. i.e. bigger code generation for a small performance gain.
I've got to go guys, nice talking to you all. I was hoping to bump into @mansellan, so I'll try again tomorrow. Cheers
 
2 hours later…
21:22
Gah sorry just seen this. I'll check back in tomorrow.
And yeah - delegates would be freaking amazing. Able to write a full-fat Fluent API in VB6...
 
2 hours later…
23:45
[rubberduck-vba/Rubberduck]: 1281 stars vs. [decalage2/oletools]: 1471 stars

« first day (2470 days earlier)      last day (710 days later) »