ISVs providing Linux downloads
Posted Sep 15, 2012 17:31 UTC (Sat) by
khim (subscriber, #9252)
In reply to:
ISVs providing Linux downloads by anselm
Parent article:
Meeks: Linux on the (consumer) Desktop
I think you have missed one small yet vital letter. I'll highlight: totally incompatible between versions at the C A⇒B⇐I level. ABI, not API. Here we go:
$ objdump -T /usr/lib/libtcl8.[45].so.0 | grep 'g DF' | cut -b 62- | sort | uniq -d | head
_fini
_init
Tcl_Access
Tcl_AddErrorInfo
Tcl_AddInterpResolvers
TclAddLiteralObj
Tcl_AddObjErrorInfo
Tcl_AlertNotifier
Tcl_Alloc
TclAllocateFreeObjects
$ objdump -T /usr/lib/libtcl8.[45].so.0 | grep 'g DF' | cut -b 62- | sort | uniq -d | wc -l
639
You can not easily use TCL in any library or plugin because of that. If one plugin will use TCL 8.4 and another plugin will use TCL 8.5 you'll have Russian Roulette: it may work for sime time, but nobody can predict when (and if!) it'll kill you.
Note that even Microsoft is guilty: .NET framework 1.x is totally incompatible with .NET framework 2.x. Thankfully they quickly dropped this insane idea and .NET frameworks 3.x were built on top of the CLR 2. .NET frameworks 4.x use different (and incompatible!) runtimes, but you can use in-process side-by-side hosting to run multiple versions of the CLR in a single process.
Sure, you can do with TCL using some tricks with dlopen and some recompileable shims (nVidia does this even with Linux kernel ABI which is infamous for it's instability!), but… this is not something TCL authors propose and support. They push for the same tried and found wanting "recompile the world" approach.
(
Log in to post comments)