Changelog History
-
v0.9.1 Changes
January 14, 2020๐ pkg/errors 0.9.1 is a bug fix release for errors 0.9.0. This restore the previous behaviour on Cause method, this behaviour was changed on the PR: #215 and many breaking changes was produced by that.
-
v0.9.0 Changes
January 12, 2020๐ errors 0.9.0 is a preparation release for a 1.0 final release. Also we were working on removing support for Go 1.8, 1.9 and 1.10 and earlier, and become compatible this package with new way of errors on Go 1.13.
๐ We tried to move into
runtime.CallerFrames
but this was not possible, you can show the explanation here: Issue 188.๐ฆ The motivation for do the backward compatible this package with Go 1.13 is that you can migrate the easy way for this to the new way.
Now you could use the methods,
Is
andAs
, and theUnwrap()
interface like on the standard library.The method
Cause
is now compatible withfmt.Errorf("%w", err)
and with theUnwrap()
interface.๐ฆ On the same way the methods related with
wrapping
on this package now are compatible withCause
andUnwrap()
interface.๐ Improvements
.travis.yml
Now use make file.- โฌ๏ธ reduce allocations when printing stack traces. Thanks @cstockton
- โฌ๏ธ Reduce allocations in Stacktrace.Format
- โ Add Support to Go 1.13. Thanks @jayschwa, @Sherlock-Holo and @puellanivis.
- โ Add json.Marshaler support to the Frame type. Thanks @flimzy
๐ Bugs fixed
-
v0.8.1 Changes
January 05, 2019๐ pkg/errors 0.8.1 is a bug fix release for errors 0.8.0. It will be the last version to support Go 1.8 and below. pkg/errors 0.9 and above will require Go 1.9 for the new
runtime.CallersFrames
API.pkg/errors 0.8.1 also adds one new feature,
errors.WithMessagef
. Ideally this would be held over til 0.9, but that complicates the switch toruntime.CallersFrames
.๐ Improvements
- โ Added
errors.WithMessagef
. Thanks @chemicL.
๐ Bugs fixed
.travis.yml
. Adjust Go versions. Thanks @AlekSi, @dvrkps, @HaraldNordgren, and @komuw- ๐ Fixed gofmt. Thanks @tariq1890
- ๐ Copyedit the package documentation. Thanks @seh, @TomSweeneyRedHat, @nicksnyder, and @beono
- โ Remove unreachable code. Thanks @philoserf and @haya14busa
- ๐ Move benchmark error sink to global variable. Thanks @bradleyfalzon
- ๐ Fix minor newline consistency issues in test files. Thanks @nmiyake
- โ Add doc comment for exported Format func. Thanks @mrhwick and @ihrwein
- โ Added
-
v0.8.0 Changes
September 29, 2016What's new since version 0.7.1
๐ errors 0.8.0 decomposes
Wrap
(andWrapf
) into their component operations, namely adding a message to an error, and adding a stack trace to an error, which were previously merged into a single operation.This is accomplished by adding two top level functions,
errors.WithMessage
anderrors.WithStack
, and rewritingWrap
andWrapf
in terms of these operations.The motivation for this change was need to treat each of the following operations as distinct:
- Adding a context message to an existing error without altering the stack trace.
- Adding a stack trace to an existing error without the requirement of adding an additional message.
- Retrieving the immediate cause of an error; popping one element of the error stack.
๐ฆ The addition of
WithStack
andWithMessage
increases the surface area of this package by two methods, after long discussions at GopherCon 2016 it was felt strongly that destructuring the operation ofWrap
andWrapf
was necessary.๐ For the moment
Wrap
andWrapf
remain, but depending on your feedback may be deprecated in future releases. Please leave comments via the issue link.๐ Thanks to @nmiyake and @fabstu for their assistance in preparing this release.
๐ Bug fixes
- โ Add Go 1.7.1 to .travis.yml. Thanks @Thomasdezeeuw
-
v0.7.1 Changes
August 22, 2016What's new since version 0.7.0
๐ 0.7.1 is a minor release in the 0.7 series which contains bugfixes, documentation improvements and cleanups and some internal refactoring.
๐ Improvements
- ๐ Rename
StackTrace
interface tostacktracer
in docs and examples. - Capitalise first letter of trace in examples. Thanks @jongillham
- ๐จ Wrapped errors now print full stacktrace.
- ๐ Documentation improvements, #69. Thanks @AlekSi
- โ Added benchmarks comparing stack trace performance. Fixes #72. Thanks @kardianos
๐ Bug fixes
- ๐ Fix %q format for wrapped errors. Thanks @greensnark
- โ Remove trailing newline from LICENSE file. Thanks @vbatts
- โ
Tests now pass when
pkg/errors
is vendored. Fixes #77. Thanks @exp - ๐ Fix the %q format for errors so it puts "" around the output (caused by a bug introduced between 0.7.0 and 0.7.1). Thanks @ncw
- ๐ Rename
-
v0.7.0 Changes
June 14, 2016What's new since version 0.6.0
๐ฆ 0.7.0 removes the deprecated
errors.Location
anderrors.Stack
interfaces, and theerrors.Fprint
helper. Types returned from this package now implement thefmt.Formatter
interface and can print themselves when passed tofmt.Printf
and friends.For example:
- ๐จ
fmt.Printf("%s\n", err)
will print the message of the error as per normal, recursive if the underlying error has aCause
method. - ๐จ
fmt.Printf(%v\n", err)
operates the same as%s
. - ๐จ
fmt.Printf(%+v\n", err)
prints the error message as above, then prints a stack trace of the point that the error was created witherrors.New
,errors.Errorf
, etc.
๐ฆ This new behaviour is described in this blog post.
Other changes in 0.7.0 include:
- ๐ The
Stacktrace() []Frame
interface method was renamed toStackTrace() StackTrace
. Please note the change in capitalisation. The previous interface was added in 0.6.0 so hopefully this change will not cause to many breaking changes. The name and signature of the method is not expected to change again in the future. Fixes #50.
๐ Bug fixes
- ๐ฆ
README.md
incorrectly reported the licence of this package as MIT, not BSD 2 clause, this has been rectified. Thanks @anthonyfok. Fixes #41.
- ๐จ
-
v0.6.0 Changes
June 07, 2016What's new since version 0.5.1
๐ The 0.6.0 release is a transitional release aimed at exposing the error's call stack, introduced in 0.5.0, to the caller.
๐ 0.6.0 is the last release that will support the
errors.Fprint
helper function. This function will be removed in version 0.7 and will be replaced with a more flexible option based on thefmt.Formatter
interface.๐ฆ Many thanks to @ChrisHines for inspiration, via his go-stack/stack package, and for his thoughtful review feedback.
๐ Deprecation notice
๐ The following symbols have been deprecated and will be removed in future releases.
- ๐
errors.Fprintf
will be removed in the 0.7 release. Read on for more details. The
Location
interface,type location interface { Location() (string, int) }
๐ is deprecated and will not be recognised in future releases. The replacement is
fmt.Sprintf("%+v", err.Stacktrace()[0])
๐จ That is, pass the topmost element of error's stack trace (assuming it has a
Stacktrace() []Frame
method) tofmt
and print it with the%+v
verb.The
Stack
interface,type stack interface { Stack() []uintptr}
๐ is deprecated and will not be recognised in future releases. Callers should use the new
Stacktrace
interface described below.๐ New features
๐ฆ
Stacktrace
interface. As a replacement for the deprecatedStack() []uintptr
interface, implementations in this package now support aStacktrace
interfacetype Stacktrace interface { Stacktrace() []Frame}
๐ Calling this method returns a slice of
Frame
values, the most recent on the top. See #37- ๐
Frame
values replace rawuintptr
's (representing program counters) providing a type which implement thefmt.Formatter
interface, which in turn exposes various aspect of a call frame (name, source file and line, etc) via thefmt
package. See also #37 - ๐ The name of the formal parameter to
Wrap
andWrapf
has been renamed fromcause
toerr
. This reflects the nature of these functions; to create a stack of errors. Apparently this also helps editor auto completion. Thanks @matryer. Fixes #32
- ๐
-
v0.5.1 Changes
May 24, 2016 -
v0.5.0 Changes
May 23, 2016What's new
New
,Errorf
,Wrap
, andWrapf
, now store the stack trace of their caller (currently limited to a depth of 32). This can be retrieved by asserting for the following interfacetype Stack interface { Stack() []uintptr}
The resulting
[]uintptr
is the same format asruntime.Callers
. At the moment there are no helpers to inspect this information. -
v0.4.0 Changes
May 11, 2016What's new
- โ Remove the
errors.Print
helper, callers should useerrors.Fprint(os.Stderr, err)
as a replacement. See #23 for details - README.md now has syntax highlighting. Thanks @mustafaakin
- ๐ Package short description has been revised based. See #24 for details.
- โ Remove the