|
|
|
@ -40,17 +40,28 @@ binary doesn't include paths from the current filesystem.
|
|
|
|
|
|
|
|
|
|
### Caveats
|
|
|
|
|
|
|
|
|
|
Most of these can improve with time and effort. The purpose of this section is
|
|
|
|
|
to document the current shortcomings of this tool.
|
|
|
|
|
|
|
|
|
|
* Package import path names are never garbled, since we require the original
|
|
|
|
|
paths for the build system to work. See #13 to investigate alternatives.
|
|
|
|
|
|
|
|
|
|
* The `-a` flag for `go build` is required, since `-toolexec` doesn't work well
|
|
|
|
|
with the build cache; see [#27628](https://github.com/golang/go/issues/27628).
|
|
|
|
|
with the build cache; see [golang/go#27628](https://github.com/golang/go/issues/27628).
|
|
|
|
|
|
|
|
|
|
* Since no caching at all can take place right now (see the link above), builds
|
|
|
|
|
will be slower than `go build` - especially for large projects.
|
|
|
|
|
* Since no caching at all can take place right now (see the link above), fast
|
|
|
|
|
incremental builds aren't possible. Large projects might be slow to build.
|
|
|
|
|
|
|
|
|
|
* The standard library is never garbled when compiled, since the source is
|
|
|
|
|
always publicly available.
|
|
|
|
|
always publicly available. See #7 for making this configurable.
|
|
|
|
|
|
|
|
|
|
* Deciding what method names to garble is always going to be difficult, due to
|
|
|
|
|
interfaces that could be implemented up or down the package import tree.
|
|
|
|
|
interfaces that could be implemented up or down the package import tree. At
|
|
|
|
|
the moment, exported methods are never garbled.
|
|
|
|
|
|
|
|
|
|
* Similarly to methods, exported struct fields are difficult to garble, as the
|
|
|
|
|
names might be relevant for reflection work like `encoding/json`
|
|
|
|
|
names might be relevant for reflection work like `encoding/json`. At the
|
|
|
|
|
moment, exported methods are never garbled.
|
|
|
|
|
|
|
|
|
|
* Functions implemented outside Go, such as assembly, aren't garbled since we
|
|
|
|
|
currently only transform the input Go source.
|
|
|
|
|