github.com/go-playground/pkg/v5@v5.29.1/CHANGELOG.md (about) 1 # Changelog 2 All notable changes to this project will be documented in this file. 3 4 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 7 ## [Unreleased] 8 9 ## [5.29.1] - 2024-04-04 10 ### Fixed 11 - Added HTTP 404 to non retryable status codes. 12 13 ## [5.29.0] - 2024-03-24 14 ### Added 15 - `asciiext` package for ASCII related functions. 16 - `errorsext.Retrier` configurable retry helper for any fallible operation. 17 - `httpext.Retrier` configurable retry helper for HTTP requests and parsing of responses. 18 - `httpext.DecodeResponseAny` non-generic helper for decoding HTTP responses. 19 - `httpext.HasRetryAfter` helper for checking if a response has a `Retry-After` header and returning duration to wait. 20 21 ## [5.28.1] - 2024-02-14 22 ### Fixed 23 - Additional supported types, cast to `sql.Valuer` supported types, they need to be returned to the driver for evaluation. 24 25 ## [5.28.0] - 2024-02-13 26 ### Added 27 - Additionally supported types, cast to `sql.Valuer` supported types. 28 29 ### Changed 30 - Option scan to take advantage of new `sql.Null` and `reflect.TypeFor` for go1.22+. 31 - `BytesToString` & `StringToBytes` to use `unsafe.String` & `unsafe.Slice` for go1.21+. 32 33 ### Deprecated 34 - `mathext.Min` & `mathext.Max` in favour of std lib min & max. 35 36 ### Fixed 37 - Some documentation typos. 38 39 ## [5.27.0] - 2024-01-29 40 ### Changed 41 - `sliceext.Retain` & `sliceext.Filter` to not shuffle data in the underlying slice array but create new slice referencing the data instead. In practice, it can cause unexpected behaviour and users expectations not met when the same data is also referenced elsewhere. If anyone still requires a `shuffle` implementation for efficiency I'd be happy to add a separate function for that as well. 42 43 ## [5.26.0] - 2024-01-28 44 ### Added 45 - `stringsext.Join` a more ergonomic way to join strings with a separator when you don't have a slice of strings. 46 47 ## [5.25.0] - 2024-01-22 48 ### Added 49 - Add additional `Option.Scan` type support for `sql.Scanner` interface of Uint, Uint16, Uint32, Uint64, Int, Int, Int8, Float32, []byte, json.RawValue. 50 51 ## [5.24.0] - 2024-01-21 52 ### Added 53 - `appext` package for application level helpers. Specifically added setting up os signal trapping and cancellation of context.Context. 54 55 ## [5.23.0] - 2024-01-14 56 ### Added 57 - `And` and `AndThen` functions to `Option` & `Result` types. 58 59 ## [5.22.0] - 2023-10-18 60 ### Added 61 - `UnwrapOr`, `UnwrapOrElse` and `UnwrapOrDefault` functions to `Option` & `Result` types. 62 63 ## [5.21.3] - 2023-10-11 64 ### Fixed 65 - Fix SQL Scanner interface not returning None for Option when source data is nil. 66 67 ## [5.21.2] - 2023-07-13 68 ### Fixed 69 - Updated default form/url.Value encoder/decoder with fix for bubbling up invalid array index values. 70 71 ## [5.21.1] - 2023-06-30 72 ### Fixed 73 - Instant type to not be wrapped in a struct but a type itself. 74 75 ## [5.21.0] - 2023-06-30 76 ### Added 77 - Instant type to make working with monotonically increasing times more convenient. 78 79 ## [5.20.0] - 2023-06-17 80 ### Added 81 - Expanded Option type SQL Value support to handle value custom types and honour the `driver.Valuer` interface. 82 83 ### Changed 84 - Option sql.Scanner to support custom types. 85 86 ## [5.19.0] - 2023-06-14 87 ### Added 88 - strconvext.ParseBool(...) which is a drop-in replacement for the std lin strconv.ParseBool(..) with a few more supported values. 89 - Expanded Option type SQL Scan support to handle Scanning to an Interface, Struct, Slice, Map and anything that implements the sql.Scanner interface. 90 91 ## [5.18.0] - 2023-05-21 92 ### Added 93 - typesext.Nothing & valuesext.Nothing for better clarity in generic params and values that represent struct{}. This will provide better code readability and intent. 94 95 ## [5.17.2] - 2023-05-09 96 ### Fixed 97 - Prematurely closing http.Response Body before error with it can be intercepted for ErrUnexpectedResponse. 98 99 ## [5.17.1] - 2023-05-09 100 ### Fixed 101 - ErrRetryableStatusCode passing the *http.Response to have access to not only the status code but headers etc. related to retrying. 102 - Added ErrUnexpectedResponse to pass back when encountering an unexpected response code to allow the caller to decide what to do. 103 104 ## [5.17.0] - 2023-05-08 105 ### Added 106 - bytesext.Bytes alias to int64 for better code clarity. 107 - errorext.DoRetryable(...) building block for automating retryable errors. 108 - sqlext.DoTransaction(...) building block for abstracting away transactions. 109 - httpext.DoRetryableResponse(...) & httpext.DoRetryable(...) building blocks for automating retryable http requests. 110 - httpext.DecodeResponse(...) building block for decoding http responses. 111 - httpext.ErrRetryableStatusCode error for retryable http status code detection and handling. 112 - errorsext.ErrMaxAttemptsReached error for retryable retryable logic & reuse. 113 114 ## [5.16.0] - 2023-04-16 115 ### Added 116 - sliceext.Reverse(...) 117 118 ## [5.15.2] - 2023-03-06 119 ### Remove 120 - Unnecessary second type param for Mutex2. 121 122 ## [5.15.1] - 2023-03-06 123 ### Fixed 124 - New Mutex2 functions and guards; checked in the wrong code accidentally last commit. 125 126 ## [5.15.0] - 2023-03-05 127 ### Added 128 - New Mutex2 and RWMutex2 which corrects the original Mutex's design issues. 129 - Deprecation warning for original Mutex usage. 130 131 ## [5.14.0] - 2023-02-25 132 ### Added 133 - Added `timext.NanoTime` for fast low level monotonic time with nanosecond precision. 134 135 [Unreleased]: https://github.com/go-playground/pkg/compare/v5.29.1...HEAD 136 [5.29.1]: https://github.com/go-playground/pkg/compare/v5.29.0..v5.29.1 137 [5.29.0]: https://github.com/go-playground/pkg/compare/v5.28.1..v5.29.0 138 [5.28.1]: https://github.com/go-playground/pkg/compare/v5.28.0..v5.28.1 139 [5.28.0]: https://github.com/go-playground/pkg/compare/v5.27.0..v5.28.0 140 [5.27.0]: https://github.com/go-playground/pkg/compare/v5.26.0..v5.27.0 141 [5.26.0]: https://github.com/go-playground/pkg/compare/v5.25.0..v5.26.0 142 [5.25.0]: https://github.com/go-playground/pkg/compare/v5.24.0..v5.25.0 143 [5.24.0]: https://github.com/go-playground/pkg/compare/v5.23.0..v5.24.0 144 [5.23.0]: https://github.com/go-playground/pkg/compare/v5.22.0..v5.23.0 145 [5.22.0]: https://github.com/go-playground/pkg/compare/v5.21.3..v5.22.0 146 [5.21.3]: https://github.com/go-playground/pkg/compare/v5.21.2..v5.21.3 147 [5.21.2]: https://github.com/go-playground/pkg/compare/v5.21.1..v5.21.2 148 [5.21.1]: https://github.com/go-playground/pkg/compare/v5.21.0..v5.21.1 149 [5.21.0]: https://github.com/go-playground/pkg/compare/v5.20.0..v5.21.0 150 [5.20.0]: https://github.com/go-playground/pkg/compare/v5.19.0..v5.20.0 151 [5.19.0]: https://github.com/go-playground/pkg/compare/v5.18.0..v5.19.0 152 [5.18.0]: https://github.com/go-playground/pkg/compare/v5.17.2..v5.18.0 153 [5.17.2]: https://github.com/go-playground/pkg/compare/v5.17.1..v5.17.2 154 [5.17.1]: https://github.com/go-playground/pkg/compare/v5.17.0...v5.17.1 155 [5.17.0]: https://github.com/go-playground/pkg/compare/v5.16.0...v5.17.0 156 [5.16.0]: https://github.com/go-playground/pkg/compare/v5.15.2...v5.16.0 157 [5.15.2]: https://github.com/go-playground/pkg/compare/v5.15.1...v5.15.2 158 [5.15.1]: https://github.com/go-playground/pkg/compare/v5.15.0...v5.15.1 159 [5.15.0]: https://github.com/go-playground/pkg/compare/v5.14.0...v5.15.0 160 [5.14.0]: https://github.com/go-playground/pkg/commit/v5.14.0