twinbasic / twinbasic

282 stars 23 forks source link

Will there be a version compatibility in tB? #756

Open jpbro opened 2 years ago

jpbro commented 2 years ago

Will there be a version compatibility in tB? Because setting to "Binary Compatibility" it will automatically re-use the GUIDS compared to the select file and will guard by any breaks. image

Originally posted by @Kr00l in https://github.com/WaynePhillipsEA/twinbasic/issues/94#issuecomment-828428622

Just found this comment by Kr00l to which @WaynePhillipsEA replied that this feature is planned, but there's no issue yet. I'm creating the issue since it is something that is important to me. When migrating existing VB6 ActiveX DLL code to tB, it will be important to maintain binary compatibility and all GUIDs so we can build "drop-in" replacement DLLs easily.

wqweto commented 2 years ago

For Project Compatibility there is Use Project ID for the type library ID project setting already which must keep LIBID stable (not tested).

For Binary Compatibility (if this is planned) I would very much like to see target (source?) binary being a compatible typelib. Currently VB6 demands a DLL compiled by VB6 for it's compatibility target which is unnecessary limitation IMO.

jpbro commented 2 years ago

My interest in a simple & "stupid" Binary Compatibility option is that it will help make piecemeal migrations from VB6 -> tB a bit easier. If I can compile one my old VB6 DLLs in tB and have it be binary compatible to the VB6 one, then I can drop the new one in to my larger project and test against it to see that A) everything still works as it should, and B) compare the performance between the 2 different builds. It would be handy to do this 1 DLL at a time until they're all verified and then swap all the old VB6 builds for the fancy new tB builds in my installer. Without binary compatibility, it will be a much more painful path forward.

I do like the simplicity of pointing to an already compiled DLL for this reason too, but having a more advanced option of pointing to a TLB would a nice to have. Maybe if the TLB could be visible/editable as source in the project explorer somewhere (with option to import from a compiled DLL) would be ideal? I think I like the sound of that better than having a bunch of "ugly" GUID attributes appearing in each method, but maybe it would be more difficult to keep synchronized.