News for hackers. Stuff that matters.
Re:Using go fix to modernize Go code by Groxx on Tuesday February 17, 2026 @02:25PM (#47051875)
They're particularly bad about concurrent go code, in my experience - it's almost always tutorial-like stuff, over-simplified and missing error and edge case handling to the point that it's downright dangerous to use... but it routinely slips past review because it seems simple and simple is correct, right? Go concurrency is so easy!

And then you point out issues in a review, so the author feeds it back into an LLM, and code that looks like it handles that case gets added... while also introducing a subtle data race and a rare deadlock.

Very nearly every single time. On all models.

Re:Using go fix to modernize Go code by brightball on Tuesday February 17, 2026 @03:10PM (#47052586)
Good use case for Elixir. Apparently it performs best across all programming languages with LLM completions and its concurrency model is ideal too.

https://autocodebench.github.io/

Re:Using go fix to modernize Go code by monooso on Tuesday February 17, 2026 @04:30PM (#47053650)
This is the exact opposite of my experience.

Claude 4.6 has been excellent with Go, and truly incompetent with Elixir, to the point where I would have serious concerns about choosing Elixir for a new project.

Re:Using go fix to modernize Go code by hbogert on Tuesday February 17, 2026 @04:43PM (#47053827)
Shouldn't you have concerns picking Claude 4.6 for your next project if it produces subpar elixer code? Cheapy shot perhaps, but I have a feeling exotic languages will remain more exotic longer now that LLM aided development is becoming the norm.
Re:Using go fix to modernize Go code by majewsky on Tuesday February 17, 2026 @07:01PM (#47055259)
We've finally figured out how to spread ossification from network protocols to programming languages! \o/
Re:Using go fix to modernize Go code by monooso on Wednesday February 18, 2026 @09:38PM (#47069209)
The specific agent is irrelevant. This is related to a broader personal opinion regarding LLMs and language choice.

Before we continue, the following opinion comes with several important caveats:

1. It only applies to paid professional work. If it's a hobby project, choose whatever makes you happy.

2. It ignores the strengths and weaknesses of different languages. These may outweigh any LLM-related concerns.

3. This is my opinion today. I _think_ it will survive longer than the next LLM cycle, but who knows these days.

4. May contain nuts.

Okay, that's the ass-covering dispensed with, on to the opinion:

If the choice is between a language which is "LLM friendly" (for want of a better phrase) and one which is not, it is irresponsible to choose the latter.

Re:Using go fix to modernize Go code by dimitrios1 on Tuesday February 17, 2026 @09:18PM (#47056311)
We live in different realities.

Opus and Sonnett practically writes the same idiomatic elixir (phoenix, mind you) code that I would have written myself, with few edits.

It's scary good.

Re:Using go fix to modernize Go code by monooso on Wednesday February 18, 2026 @09:40PM (#47069228)
I envy your reality.
Re:Using go fix to modernize Go code by Jyaif on Tuesday February 17, 2026 @02:54PM (#47052319)
> a subtle data race and a rare deadlock

That's a langage problem that humans face as well, which golang could stop having (see C++'s Thread Safety annotations).

Re:Using go fix to modernize Go code by kbolino on Tuesday February 17, 2026 @04:09PM (#47053387)
Go has a pretty good race detector already, and all it (usually) takes to enable it is passing the -race flag to go build/test/run/etc.
Re:Using go fix to modernize Go code by awesome_dude on Tuesday February 17, 2026 @03:43PM (#47053047)
You should be using rust... mm kay :\
Re:Using go fix to modernize Go code by danudey on Tuesday February 17, 2026 @06:36PM (#47055030)
Doing concurrency in Rust was more complex (though not overly so) than doing it in Golang was, but the fact that the compiler will outright not let me pass mutable refs to each thread does make me feel more comfortable about doing so at all.

Meanwhile I copy-pasted a Python async TaskGroup example from the docs and still found that, despite using a TaskGroup which is specifically designed to await every task and only return once all are done, it returned the instant theloop was completed and tasks were created and then the program exited without having done any of the work.

Concurrency woo~

Re:Using go fix to modernize Go code by awesome_dude on Tuesday February 17, 2026 @10:57PM (#47056982)
The person I was replying to sounded exactly like the Rust zealots roving the internet trying to convince people to change.
Re:Using go fix to modernize Go code by Groxx on Friday February 20, 2026 @01:33PM (#47091847)
Yeah, I'd really have liked to see something like [Trio](https://trio.readthedocs.io/en/stable/) gain mid more attention in Python. Structured approaches can prevent a huge amount of those issues, and Python code is absolutely riddled with concurrency problems in my experience. Much more so in practice than other languages except maybe javascript (when including async ordering mistakes). It makes it a real nightmare to try to build anything actually reliable.
Re:Using go fix to modernize Go code by anthk on Wednesday February 18, 2026 @01:49AM (#47058024)
So you are trying to explain concurrency to the folks who implemented CSP in both Plan9 and Go. Interesting. I should return "cspbook.pdf" back.
Re:Using go fix to modernize Go code by awesome_dude on Wednesday February 18, 2026 @02:10AM (#47058156)
One day, maybe today, you will learn to read
Re:Using go fix to modernize Go code by anthk on Wednesday February 18, 2026 @02:41AM (#47058345)
(eval) rather than (read), then.

On concurrency, Go has the bolts screwed in; it basically was 'lets reuse everything we can from Plan9 into a multiplatform language'.

Re:Using go fix to modernize Go code by Thaxll on Tuesday February 17, 2026 @07:37PM (#47055519)
No language protects from dead lock.
Re:Using go fix to modernize Go code by Jyaif on Wednesday February 18, 2026 @08:10AM (#47060566)
I probably agree that they don't protect you from all deadlocks, but some languages protect you from some dead locks.
Re:Using go fix to modernize Go code by Groxx on Friday February 20, 2026 @01:14PM (#47091610)
Not true! There are a fair number of them, and they're even reasonably general-purpose, e.g. https://www.ponylang.io/

Most that can recall achieve this by simply not having any locks at all. That's feasible with some careful design.

Outside proof-oriented languages though, I'm not aware of any that prevent livelocks, much less both. When excluding stuff that's single threaded but might otherwise qualify, e.g. Elm. "Lack of progress" is what most care about though, and yeah that realm is much more "you give up too much to get that guarantee" in nearly all cases (e.g. no turing completeness).

Re:Using go fix to modernize Go code by aktau on Wednesday February 18, 2026 @05:34AM (#47059552)
For Go, there is https://pkg.go.dev/gvisor.dev/gvisor/tools/checklocks. There are some missing things from C++ Thread Safety annotations, but those could be added.