Hi everyone,
Thanks for everyone for the reviews and comments on my shared library
CLs. There is now only one CL still in review for basic
-buildmode=shared/-linkshared functionality, which I think is pretty
amazing progress.
There are still a few obvious missing features and gaps that should be
taken care of before the 1.5 release and I just wanted to check that
my expectations line up with the wider group's.
These are the things I expect to work on and fix before release:
* Some version of the ABI checks described in the "go execution
modes" document. I have a draft CL at
http://golang.org/cl/8773 that
basically works, but it needs some tidying and probably some
discussion here of how to define an ABI mismatch.
* Checking that all versions of the same package in the same process
are compiled from the same code, also from the execution modes
document, and testing that this situation actually works
* Fixing dwarf generation for linkshared (I'd like to talk to someone
who knows about dwarf for this)
* Adding some tests of -buildmode=shared
* Having the go tool rebuild stale shared libraries
Things I should probably do, but seem a bit lower in priority:
* Assess the performance impact of shared vs default and try to fix
any gross problems
* Support -buildmode=shared for gccgo
Things I am not intending to work on:
* Support for GOOS/GOARCH other than linux/amd64 (although I might
get to this, and would certainly hope to for 1.6)
* Internal linking for shared libraries
* -buildmode=plugin, or support for dlopen vs -buildmode=c-shared
* Enabling the race detector with -buildmode=shared
I'm open to input on this likely/probably not/unlikely categorization,
and super interested to hear about anything that I've missed. I have
a trello board with these things on at
https://trello.com/b/zsQx5BCY/go-shared-library-stuff, but be warned
that I just set this up for myself so card descriptions may not be
super comprehensible if you are not me.
Cheers,
mwh