Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The SQLite package used in Bravetools requires CGO to be enabled to build. This complicates cross-compilation of bravetools and leads to the production of dynamically linked binaries.
An alternative pure-Go SQLite implementation is avilable. This implementation is quite mature, with other projects building on top of it to provide an alternative interface to the standard Go SQLite interface.
According to benchmarks the pure-Go SQlite package is only slightly slower than the CGO version and passes all correctness tests. The platforms supported by the package cover most of our cross-compilation targets with the exception of windows/386 - we may have to drop that if we adopt this package.
Switching to this package allows for production of statically linked binaries by passing CGO_ENABLED=0 to
go build
. Formerly CGO-dependent pacakges such asnet
andos/user
have pure-Go fallbacks nowadays.The change is mostly a drop-in replacement, with one or two tweaks.