| Alt Account | https://ohai.social/@ExNG |
| Alt Account | https://ohai.social/@ExNG |
It's refreshing using #golang's ecosystem after spending time with other languages' tooling. Over the past few years, things have become really slick.
I'm not talking about the language itself; it's still full of `if err != nil`. But the tooling and ecosystem is *pleasant*.
Go 1.25 came out a few weeks ago, and we've decided to upgrade at work so we can use a few new features.
There's no drama. There are no backwards-incompatible changes. We don't need to get everyone to upgrade to a new version of tools. There are no mandatory "upgrade this library that everything depends on" steps.
You just change the version number in `go.mod`. The next time you run `go build`, in addition to downloading any new Go modules, it also downloads the new version of the compiler backend. It takes a couple seconds.
If you run into bugs (IIRC early releases of Go 1.23 had a few doozies) then reverting is trivial. Just change the version back in `go.mod`.
Package management? Just add code that you need to `import` in your source code. When you build, new imports will be mapped to a specific version, it'll be downloaded automatically, and the version and checksum will be added to `go.mod` and/or `go.sum`. If you download the source onto a new system and build there, it should compile byte-for-byte identical executable. Assuming that you're building for the same CPU and OS, of course.
Upgrading dependencies is a bit of work, but it's not bad. Edit the version number in `go.mod`, run `go mod tidy`, then build. By default, the system is optimized for stability.
It's still possible to get supply-chain attacks, but mostly only by explicitly requesting something that turns out to be bad. Go doesn't auto-upgrade module versions (directly or transitively), and it verifies checksums when (re-)downloading. Unlike NPM, Go style mostly doesn't depend on hordes of tiny third-party modules. So it's not flawless, but it's about as good as we can get today.
The language isn't everyone's cup of tea, and doesn't try to be. Like it, don't like it, whatever. But it'd be great if more languages could use Go's tooling as an example.
Das Amtsgericht betonte, bei der Aktion seien lediglich bestehende Schmierereien übermalt worden. Um Sachbeschädigung handele es sich nicht, weil sich das Erscheinungsbild des Hauses nicht "im rechtsgutsspezifischen Sinne" verändert habe.
somehow i still keep learning new stuff about css
today i discovered that `font-family: monospace;` causes the text to become smaller!
you can get around this by doing `font-family: monospace, monospace;`