github.com/xg0n/routine@v0.0.0-20240119033701-c364deb94aee/CHANGELOG.md (about) 1 <!--变更日志--> 2 3 # v1.1.3 Release notes 4 5 ### Features 6 7 - Support go version range `go1.18` ~ `go1.21`. 8 - Support `generic` programming. 9 10 # Links 11 12 - Source code [https://github.com/timandy/routine/tree/v1.1.3](https://github.com/timandy/routine/tree/v1.1.3) 13 14 --- 15 16 # v1.1.2 Release notes 17 18 ### Features 19 20 - Support go version range `go1.13` ~ `go1.21`(New support `go1.21`). 21 - Support capture values of `InheritableThreadLocal` by `WrapTask()`, `WrapWaitTask()` and `WrapWaitResultTask()` methods. 22 - Support run `FutureTask` by `FutureTask.Run()` method. 23 - Define function type `Runnable` and `FutureCallable`. 24 25 ### Changes 26 27 - Rename type `Future` to `FutureTask`. 28 - Skip first runtime panic stack automatically for `RuntimeError`. 29 30 # Links 31 32 - Source code [https://github.com/timandy/routine/tree/v1.1.2](https://github.com/timandy/routine/tree/v1.1.2) 33 34 --- 35 36 # v1.1.1 Release notes 37 38 ### Features 39 40 - Support go version range `go1.13` ~ `go1.20`(New support `go1.20`). 41 42 ### Changes 43 44 - Fix a memory leak risk caused by Timer. 45 - Reduce memory by using less chan. 46 - Update copyright. 47 48 # Links 49 50 - Source code [https://github.com/timandy/routine/tree/v1.1.1](https://github.com/timandy/routine/tree/v1.1.1) 51 52 --- 53 54 # v1.1.0 Release notes 55 56 ### Features 57 58 - Support more arch `loong64`, `mips`, `mipsle`, `mips64`, `mips64le`, `ppc64le`, `riscv64`, `wasm`. 59 60 ### Changes 61 62 - Upgrade dependencies to the latest version. 63 - Modify continuous integration script to support go1.19. 64 65 # Links 66 67 - Source code [https://github.com/timandy/routine/tree/v1.1.0](https://github.com/timandy/routine/tree/v1.1.0) 68 69 --- 70 71 # v1.0.9 Release notes 72 73 ### Features 74 75 - Support arch `386` & `amd64` on `freebsd` and arch `ppc64` & `s390x` on `linux`. 76 - Support `Cancel()` and `GetWithTimeout()` methods for type `Future`. 77 - Support checking whether the tasks created by `GoWait(CancelRunnable)` and `GoWaitResult(CancelCallable)` methods are canceled. 78 79 ### Changes 80 81 - Fix spell error of type `Future`. 82 - Rename type `Any` to `any`. 83 84 # Links 85 86 - Source code [https://github.com/timandy/routine/tree/v1.0.9](https://github.com/timandy/routine/tree/v1.0.9) 87 88 --- 89 90 # v1.0.8 Release notes 91 92 ### Changes 93 94 - Rename `StackError` to `RuntimeError`. 95 - Support error nesting for `RuntimeError`. 96 - Beautify the error message of `RuntimeError`. 97 - Remove `bytesconv.Bytes()` and `bytesconv.String()` methods. 98 - Restore to the previous value if an overflow occurs when getting the index of `ThreadLocal`. 99 100 # Links 101 102 - Source code [https://github.com/timandy/routine/tree/v1.0.8](https://github.com/timandy/routine/tree/v1.0.8) 103 104 --- 105 106 # v1.0.7 Release notes 107 108 ### Bugs 109 110 - Fix released `thread` struct may be resurrected from invalid memory and cause fault error. 111 112 ### Changes 113 114 - Modify the error message format of `StackError`. 115 - Define function type `Supplier` for `threadLocal` and `inheritableThreadLocal` types. 116 - Define function type `Runnable` and `Callable` for `Go(Runnable)`, `GoWait(Runnable)` and `GoWaitResult(Callable)` methods. 117 118 # Links 119 120 - Source code [https://github.com/timandy/routine/tree/v1.0.7](https://github.com/timandy/routine/tree/v1.0.7) 121 122 --- 123 124 # v1.0.6 Release notes 125 126 ### Bugs 127 128 - Fix fault error when pprof is running. 129 130 ### Features 131 132 - Support more architectures `386`, `amd64`, `armv6`, `armv7`, `arm64`. 133 134 ### Changes 135 136 - Read and write `coroutine` information through the `gohack` library, theoretically support unreleased `go` versions in the future. 137 - When `runtime.g` cannot be obtained natively, `panic` directly instead of falling back to invoke `runtime.Stack()` method. 138 - Remove api `ThreadLocal.Id()`. 139 140 # Links 141 142 - Source code [https://github.com/timandy/routine/tree/v1.0.6](https://github.com/timandy/routine/tree/v1.0.6) 143 144 --- 145 146 # v1.0.5 Release notes 147 148 ### Features 149 150 - Support go version range `go1.13` ~ `go1.18`(New support `go1.18`). 151 152 ### Changes 153 154 - Change license to `Apache-2.0`. 155 - Upgrade dependencies to the latest version. 156 157 # Links 158 159 - Source code [https://github.com/timandy/routine/tree/v1.0.5](https://github.com/timandy/routine/tree/v1.0.5) 160 161 --- 162 163 # v1.0.4 Release notes 164 165 ### Features 166 167 - Add zero-copy conversion method between `bytes` and `string`, see `bytesconv.Bytes()` and `bytesconv.String()` methods. 168 169 ### Changes 170 171 - Modify the garbage collection mechanism, remove `gcTimer`, no longer perform garbage collection through timers. 172 - Store the context in the `g.labels` field of the coroutine structure which will be set to `nil` after coroutine ends. The context data will be collected at the next `GC`. 173 - Use `go:linkname` to invoke assembly code `getg()` directly to improve performance. 174 - Implement the `getGoidByStack()` method by invoke `http.http2curGoroutineID()`. 175 - Remove api `AllGoids()` and `ForeachGoid()`. 176 177 # Links 178 179 - Source code [https://github.com/timandy/routine/tree/v1.0.4](https://github.com/timandy/routine/tree/v1.0.4) 180 181 --- 182 183 # v1.0.3 Release notes 184 185 ### Features 186 187 - Support copy `Cloneable` objects to sub goroutine when create sub goroutines by `Go()`, `GoWait()` and `GoWaitResult()` methods. 188 - Add api `ForeachGoid(func(goid int64))` to run a func for each goid. 189 190 ### Changes 191 192 - Support go version range `go1.13` ~ `go1.17`(Not support `go1.12` anymore). 193 - Use segment locks to reduce competition and improve `ThreadLocal`'s `read`, `write` and `gc` performance. 194 - Get all goids through `runtime.allgs` instead of `runtime.atomicAllG`, so `go1.13` ~ `go1.15` can also get all goids natively. 195 196 # Links 197 198 - Source code [https://github.com/timandy/routine/tree/v1.0.3](https://github.com/timandy/routine/tree/v1.0.3) 199 200 --- 201 202 # v1.0.2 Release notes 203 204 ### Bugs 205 206 - Fix bug in `getAllGoidByStack()` method, Buffer may too small when dump all stack info. 207 208 ### Features 209 210 - Support initialize value when first get from `ThreadLocal`. 211 - Add `StackError` to catch stack info. 212 - Add `Feature` to wait goroutine finished or get result from goroutine. 213 - Add api `NewThreadLocalWithInitial()`, `NewInheritableThreadLocal()` and `NewInheritableThreadLocalWithInitial()`. 214 - Support Inherit values of `ThreadLocal` by `Go`, `GoWait()` and `GoWaitResult()`. 215 216 ### Changes 217 218 - Rename `LocalStorage` to `ThreadLocal`. 219 - Remove api `Clear()`, `InheritContext()` and `RestoreContext()`. 220 - Improve `gc` performance by reducing the number of for loops. 221 222 # Links 223 224 - Source code [https://github.com/timandy/routine/tree/v1.0.2](https://github.com/timandy/routine/tree/v1.0.2) 225 226 --- 227 228 # v1.0.1 Release notes 229 230 ### Features 231 232 - Improve performance by use slice to store goroutine local values. 233 - Optimize `clearDeadStore()` method. 234 235 # Links 236 237 - Source code [https://github.com/timandy/routine/tree/v1.0.1](https://github.com/timandy/routine/tree/v1.0.1) 238 239 --- 240 241 # v1.0.0 Release notes 242 243 `This is the first stable version available for production. It is highly recommended to upgrade to this version if you have used a previous version.` 244 245 ### Bugs 246 247 - Fix `NewLocalStorage()` always return the same value, so we can define multi `LocalStorage` instances. 248 - Fix `NewLocalStorage()` clear other `LocalStorage`'s value. 249 - Fix `RestoreContext()` not clear values when restore from empty `*ImmutableContext`. 250 251 ### Features 252 253 - Not force create `store` when invoke `Get()`, `Remove()`, `Clear()`, `BackupContext()` methods to reduce memory usage. 254 255 ### Changes 256 257 - Rename `InheritContext()` to `RestoreContext()`. 258 - Rename `Del()` to `Remove()`. 259 - Move Clear() method to `routine` package. 260 261 # Links 262 263 - Source code [https://github.com/timandy/routine/tree/v1.0.0](https://github.com/timandy/routine/tree/v1.0.0) 264 265 --- 266 267 # v0.0.2 Release notes 268 269 ### Features 270 271 - Support go version range `go1.12` ~ `go1.17`(New support `go1.17`). 272 - Enable GitHub actions for continuous integration. 273 274 ### Known Issues 275 276 - `NewLocalStorage()` always return the same value. 277 278 # Links 279 280 - Source code [https://github.com/timandy/routine/tree/v0.0.2](https://github.com/timandy/routine/tree/v0.0.2) 281 282 --- 283 284 # v0.0.1 Release notes 285 286 ### Features 287 288 - Support go version range `go1.12` ~ `go1.16`. 289 - Support `Goid()` to get current goroutine id. 290 - Support `AllGoids` to get all goroutine ids. 291 - Support `ThreadLocal` to save values ingo to goroutine. 292 293 ### Known Issues 294 295 - `NewLocalStorage()` always return the same value. 296 297 # Links 298 299 - Source code [https://github.com/timandy/routine/tree/v0.0.1](https://github.com/timandy/routine/tree/v0.0.1)