So far I had not missed generics in Go. Much could be solved via interfaces or closures. And with the disgusting syntactic aberrations of other languages when dealing with generics, I was rather afraid that the elegant simplicity of Go could be lost. As of Go 1.18, Google’s language now handles generics after much discussion.
I have always appreciated the implicit simplicity with which, for example, types in a statement like
The package Tideland Go Wait reached version 0.2.0 due to a new added feature. It now contains the type Throttle to provide a limited processing of events per second, e.g. for web handlers. The events are simple closures or functions with a given signature. The limit and a burst size for the maximum number of events during one call are defined at throttle creation.
Example A throttled wrapper of a http.
There are times when you find a bug in your software. Today it had been in my testing library TIdeland Go Audit. Here the assertion ErrorContains() reacted with a panic in case of a nil error. So I fixed it like I already had done it earlier in ErrorMatch(). Interestingly I found in testing that I didn’t verified it there. So this test is now also changed.
Additionally during tests for a different library with high concurrency I, or better go test during the tests, discovered a race condition.
While step by step reorganizing the Tideland Go libraries the one for testing your projects reached a new version. I’ve just released the Tideland Go Audit v0.5.0. As it already is a very robust and complete library there are only few changes.
The asserts package now provides the additional assertions NotOK() and AnyError(). In case of asserting tests and using Failable like testing.T their provided Logf() and Errorf() will be used for output.
Here it is, a new minor release of the Tideland Go Library. It’s the new v0.2.0 and contains some smaller changes. You can read about it inside the CHANGELOG.
But it also contains two bigger blocks. One has been the splitting of the somehow poor designed and organized webbex into the new httpx and web. The other one is the even bigger one, I needed most of the time for it.
It costed some time, but now I’m happy to release v0.1.0 of the Tideland Go Library. Some of you may wonder, because I already had a Go library and once started to break it into individual repositories. But then different discussions happened.
The introduction of Go modules. The discussions about mono-repos or multi-repos. Microsoft was buying GitHub with the insight about the dependency of one provider, regardless who it is.