4 ms·
This has perhaps been my biggest pain-point with Golang.. Woe unto those who do not follow the idiosyncrasies of how golang handles versioning, package managem
by adhoc_slime 4y ago
This has perhaps been my biggest pain-point with Golang..
Woe unto those who do not follow the idiosyncrasies of how golang handles versioning, package management, tooling etc.
if this is really your most important part of a language I would whole-heartedly recommend looking at rust which has been a breathe of fresh air in terms of package management and tooling.
- jeroenhd 4y agoI love Rust as a language but its packaging mechanism is as flawed as all the others. I don't really see what breath of fresh air it brings. I suppose you can define feature flags in your Cargo.toml but that's about it.
- yen223 4y agoGolang has the most hilarious approach to date formatting
- deleted 4y ago[deleted]
- lenkite 4y agoLol, I thought it was some sort of Joke when I first learnt it. And kept hunting for the 'proper' way. When I realised this was serious, I banged my head against the wall.
- Karrot_Kream 4y ago+100. I found a lot of the points in the post pretty silly/arbitrary, but if he had talked about date formatting I would be all aboard.
- thegeekpirate 4y agoYou might enjoy https://golangti.me https://golangti.me which I wrote to help with my inability to remember it!
- busterarm 4y agoAs an operations person who cares about deploying repeatable systems at scale, Rust's package management (and the toolchain's "packaging" itself) is an absolute nightmare. But at least I with MUSL can I have a 100% statically linked binary, which really should have been easier but that's another argument. Seriously though, Rust team needs to have its Come To Jesus moment about not piping shit off the internet to sh.
- conradludgate 4y agoI'm interested if you could elaborate on that? My company deploys many Rust (web) applications to production and I've not experienced these issues with cargo
- busterarm 4y agoIt's either a problem that you have or you don't, but also one that you have to have a specific mindset to even recognize. To start off with, please read this: https://lwn.net/Articles/889924/ https://lwn.net/Articles/889924/ As you start having to worry about deploying to 10^5 scale machines you want your mindset to be more like the longtime kernel development folks. You want minimal dependencies. You want to build with minimal pulls to the internet. You want repeatable static binaries built from a source tree you can reasonably audit. At that scale of deployment your "business risk" goes up significantly. Rust's approach to tooling/packages looks very similar to the Node.js ecosystem. It's a total free for all and dependencies are managed really poorly (in the sense that they grow in number completely out of control).
- zozbot234 4y agoYou can use cargo vendor to import specific versions of your dependencies into your project for easy auditing, or cargo fetch to simply be more explicit about when to download from remote repositories (when combined with the --offline flag). The typical Rust "dependency" is small; it's more like a single .c or .cxx file than a conventional "library", except that it also plays nice with generic code unlike these languages.
- 4y ago
- Thaxll 4y agoGo tooling is awesome compared to other language ( Rust included ). Everything is built it and you don't need something external, everything works out of the box dependencies included, it has been the case for 4 years with go mod. The fact that you can cross compile a win10 .exe on a raspberry pi with a single command as easy as "GOARCH=amd64 GOOS=win go build ." it's very powerful and I don't know a single language that does it out of the box like go does. Go tooling is one of the strongest point of Go you have all of that built-in: - compilation - testing - benchamark - dep managment
- formerly_proven 4y ago> it's very powerful and I don't know a single language that does it out of the box like go does. zig build -Dtarget=x86_64-windows
- Thaxll 4y agoI'm talking about mainstream language not stuff in dev. And go has been doing that for 10years+
- kristoff_it 4y agowell, not exactly. Zig is also crosscompiling C/C++ code, not just Zig. CGo doesn't do cross-compilation.