Skip to content
This repository has been archived by the owner on Dec 1, 2021. It is now read-only.

Releases: pkg/errors

errors 0.9.1

14 Jan 19:50
614d223
Compare
Choose a tag to compare

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.

errors 0.9.0

12 Jan 16:11
Compare
Choose a tag to compare

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 and As, and the Unwrap() interface like on the standard library.

The method Cause is now compatible with fmt.Errorf("%w", err) and with the Unwrap() interface.

On the same way the methods related with wrapping on this package now are compatible with Cause and Unwrap() 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

  • .travis.yml Adjust Go versions. Thanks @komuw, @aperezg
  • minor fix in an example to print Stack Trace. Thanks @bep.
  • Remove not necessary code.
  • Clean up documentation. Thanks @seh.

errors 0.8.1

05 Jan 02:27
Compare
Choose a tag to compare

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 to runtime.CallersFrames.

Improvements

  • Added errors.WithMessagef. Thanks @chemicL.

Bugs fixed

errors 0.8.0

29 Sep 02:05
Compare
Choose a tag to compare

What's new since version 0.7.1

errors 0.8.0 decomposes Wrap (and Wrapf) 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 and errors.WithStack, and rewriting Wrap and Wrapf 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 and WithMessage increases the surface area of this package by two methods, after long discussions at GopherCon 2016 it was felt strongly that destructuring the operation of Wrap and Wrapf was necessary.

For the moment Wrap and Wrapf 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

errors 0.7.1

22 Aug 09:19
Compare
Choose a tag to compare

What'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 to stacktracer 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

errors 0.7.0

14 Jun 06:29
Compare
Choose a tag to compare

What's new since version 0.6.0

0.7.0 removes the deprecated errors.Location and errors.Stack interfaces, and the errors.Fprint helper. Types returned from this package now implement the fmt.Formatter interface and can print themselves when passed to fmt.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 a Cause 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 with errors.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 to StackTrace() 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.

errors 0.6.0

07 Jun 07:58
Compare
Choose a tag to compare

What'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 the fmt.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) to fmt 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 deprecated Stack() []uintptr interface, implementations in this package now support a Stacktrace interface
type Stacktrace interface {
         Stacktrace() []Frame
}

Calling this method returns a slice of Frame values, the most recent on the top. See #37

  • Frame values replace raw uintptr's (representing program counters) providing a type which implement the fmt.Formatter interface, which in turn exposes various aspect of a call frame (name, source file and line, etc) via the fmt package. See also #37
  • The name of the formal parameter to Wrap and Wrapf has been renamed from cause to err. This reflects the nature of these functions; to create a stack of errors. Apparently this also helps editor auto completion. Thanks @matryer. Fixes #32

errors 0.5.1

24 May 02:41
Compare
Choose a tag to compare

Bugs fixed

  • Fix a bug whereby errors returned by New, Errorf, Wrap, Wrapf were not comparable with ==. Thanks to @stevvooe. Fixes #29

errors 0.5.0

23 May 09:27
Compare
Choose a tag to compare

What's new

  • New, Errorf, Wrap, and Wrapf, now store the stack trace of their caller (currently limited to a depth of 32). This can be retrieved by asserting for the following interface
type Stack interface {
        Stack() []uintptr
}

The resulting []uintptr is the same format as runtime.Callers. At the moment there are no helpers to inspect this information.

errors 0.4.0

11 May 00:03
Compare
Choose a tag to compare

What's new

  • Remove the errors.Print helper, callers should use errors.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.