Well, I do think Binary-only packages are very important for some security 
case, such as authentication algorithm in a private enterprise。

在 2018年10月19日星期五 UTC+8上午1:16:43,Russ Cox写道:
>
> The go command supports "binary-only packages", in which 
> the compiled .a file is installed in GOROOT/pkg or GOPATH/pkg
> but the corresponding source code is only a stub with relevant
> imports (for linking), a special comment marking it as a binary-only
> package, and perhaps documentation for exported API.
>
> While the go command will use these packages if they exist in
> GOROOT or GOPATH, 'go get' will not download them: 'go get'
> is intentionally only about source code distribution.
>
> Furthermore, binary-only packages only work when the build is
> using the exact versions of whatever imported packages are
> needed by the binary-only package. If there were any important
> differences in a dependency between compilation and linking,
> the binary-only portion might have stale information about details
> of the imported package, such as type sizes, struct field offsets,
> inlined function bodies, escape analysis decisions, and so on,
> leading to silent memory corruption at runtime.
>
> Binary-only packages also only work when the build is using the
> exact version of the Go toolchain that was used for compilation.
> This is at least enforced at link time, with the effect that if your
> binary-only package only imports the standard library and you don't
> use any special compilation flags, then the toolchain version check
> suffices to avoid the silent memory corruption problem described in
> the previous package. But if your package imports any non-standard
> package for which that the eventual user might try to combine with
> a different version, you're in trouble again.
>
> Compiled Go programs also contain much richer amounts of runtime
> information than compiled C programs, so that for example all the
> details of type declarations, including struct definitions, are in the
> compiled code, along with file names and line numbers for the compiled
> code, and increasingly good debug information that was impossible to
> turn off until very recently. Overall, a binary-only package obscures very 
> little.
>
> In short, binary-only packages:
>
> - have never been supported by 'go get',
> so you've had to go out of your way to use them,
> - aren't even guaranteed to work when you do use them,
> possibly leading to silent memory corruption, and
> - still expose quite a lot more than most people would expect
> about the original source code.
>
> For these reasons, we're looking at removing binary-only package
> support entirely.
>
> If you use binary-only packages and think it's important to keep that
> support around, please let us know either on this thread or at
> golang.org/issue/28152. 
>
> Thanks.
> Russ
>

-- 
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.

Reply via email to