cross-posted from: https://programming.dev/post/4558241

It contains some breaking changes.