Yes, there are some incompatibilities, e.g. channel handling and Unicode, and it will be necessary to recompile the extension. Setting major no. to 8 works well and calling TclInitStubs with version 8.1 will bind it to old tcl apps and with version 9.0 to new ones. I tried it with 32 bit tcl apps (8.6 and 9.0) and it worked well (udptcl extension with little changes).

What I see is that there is a difference between 32 bit and 64 bit handling: For 32 bit extensions, it works as described because magics for version 8 and 9 are the same. For 64 bit extensions, it does not work because TclInitStubs accepts only one magic: Either 0xFCA3BACF, if compiled for old tcl apps (in this case, recompile would not be necessar4y) or 0xFCA3BAD3, if compiled for new tcl apps with major version = 9.

Is it really correct that only the 64 bit applications (version 8 and 9) are binary incompatible and the 32 bit applications remain binary compatible? Or is it an error that magic has only been changed for 64 bit versions? Do you have an example for a function or structure where old and new 64 bit tcl apps are binary incompatibility, but old and new tcl apps remain binary compatible?