On Thursday, February 22, 2018 at 6:43:07 AM UTC-5, alex....@gmail.com wrote: > > Yup, the package I'm working on really cannot have 2 instances even in > different import paths as it deals with a shared resource and code that > must be run on the main thread. > So I have to choose between daisy chaining v1 to v2 to v3 etc.. or have a > central v0 where all the v1, v2, etc.. packages import. > > Daisy chaining would mean I would only have to code API translations for > the latest API but then it's debug hell and if one version in the chain > breaks, > it means fixing all the newer versions. Also there's a performance hit > going through many translations. >
If I understand you correctly, v2's foo() has to call v1's foo() in the daisy-chain case. This was one of the two common cases in Multics (and Solaris, and Linux glibc). The other case was v1's foo() calling a wrapper around v2's foo(). We called these "updaters" and "downdaters", and implemented them in the same library, under the covers. Feel free to drop me a line if you are interested, and see also https://leaflessca.wordpress.com/2017/02/12/dll-hell-and-avoiding-an-np-complete-problem/ fore some of the background. --dave dav...@spamcop.net -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.