From 6d212800a42e8ab5c146b8ace3490ee17e5225f9 Mon Sep 17 00:00:00 2001 From: Dave Collins Date: Wed, 7 Sep 2016 11:21:46 -0500 Subject: [PATCH] Deprecate "disableunsafe" tag in favor of "safe". This adds a new build tag named "safe" which serves the exact same purpose as the current "disableunsafe" tag. This is being done, as recommended by @shurcooL, since it is emerging as the standard way to do it in several high profile packages, it mirrors the "unsafe" package nicely, it is shorter, and users generally seem to prefer it. However, to avoid breaking existing infrastructure, the disableunsafe tag is still available and simply is being deprecated. --- .travis.yml | 2 +- README.md | 8 ++++---- spew/bypass.go | 5 +++-- spew/bypasssafe.go | 5 +++-- spew/config.go | 2 +- spew/internalunsafe_test.go | 5 +++-- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0bf43fc..984e073 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ go: install: - go get -v golang.org/x/tools/cmd/cover script: - - go test -v -tags=disableunsafe ./spew + - go test -v -tags=safe ./spew - go test -v -tags=testcgo ./spew -covermode=count -coverprofile=profile.cov after_success: - go get -v github.com/mattn/goveralls diff --git a/README.md b/README.md index a326343..556170a 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ options. See the ConfigState documentation for more details. which only accept pointer receivers from non-pointer variables. This option relies on access to the unsafe package, so it will not have any effect when running in environments without access to the unsafe package such as Google - App Engine or with the "disableunsafe" build tag specified. + App Engine or with the "safe" build tag specified. Pointer method invocation is enabled by default. * ContinueOnMethod @@ -185,9 +185,9 @@ options. See the ConfigState documentation for more details. This package relies on the unsafe package to perform some of the more advanced features, however it also supports a "limited" mode which allows it to work in environments where the unsafe package is not available. By default, it will -operate in this mode on Google App Engine. The "disableunsafe" build tag may -also be specified to force the package to build without using the unsafe -package. +operate in this mode on Google App Engine and when compiled with GopherJS. The +"safe" build tag may also be specified to force the package to build without +using the unsafe package. ## License diff --git a/spew/bypass.go b/spew/bypass.go index 1de6e02..d42a0bc 100644 --- a/spew/bypass.go +++ b/spew/bypass.go @@ -14,8 +14,9 @@ // NOTE: Due to the following build constraints, this file will only be compiled // when the code is not running on Google App Engine, compiled by GopherJS, and -// "-tags disableunsafe" is not added to the go build command line. -// +build !appengine,!disableunsafe,!js +// "-tags safe" is not added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build !js,!appengine,!safe,!disableunsafe package spew diff --git a/spew/bypasssafe.go b/spew/bypasssafe.go index adef4c4..e47a4e7 100644 --- a/spew/bypasssafe.go +++ b/spew/bypasssafe.go @@ -14,8 +14,9 @@ // NOTE: Due to the following build constraints, this file will only be compiled // when the code is running on Google App Engine, compiled by GopherJS, or -// "-tags disableunsafe" is added to the go build command line. -// +build appengine disableunsafe js +// "-tags safe" is added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build js appengine safe disableunsafe package spew diff --git a/spew/config.go b/spew/config.go index ee1ab07..5552827 100644 --- a/spew/config.go +++ b/spew/config.go @@ -64,7 +64,7 @@ type ConfigState struct { // inside these interface methods. As a result, this option relies on // access to the unsafe package, so it will not have any effect when // running in environments without access to the unsafe package such as - // Google App Engine or with the "disableunsafe" build tag specified. + // Google App Engine or with the "safe" build tag specified. DisablePointerMethods bool // ContinueOnMethod specifies whether or not recursion should continue once diff --git a/spew/internalunsafe_test.go b/spew/internalunsafe_test.go index ddaa41d..863b62c 100644 --- a/spew/internalunsafe_test.go +++ b/spew/internalunsafe_test.go @@ -14,8 +14,9 @@ // NOTE: Due to the following build constraints, this file will only be compiled // when the code is not running on Google App Engine, compiled by GopherJS, and -// "-tags disableunsafe" is not added to the go build command line. -// +build !appengine,!disableunsafe,!js +// "-tags safe" is not added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build !js,!appengine,!safe,!disableunsafe /* This test file is part of the spew package rather than than the spew_test