Remix.run Logo
pjmlp 4 days ago

Go's strucutural typing already existed in languages of the ML linage, nothing new.

F# can do that just fine, if the team actually cared about using .NET.

yomismoaqui 4 days ago | parent | next [-]

After hearing the explanation about why he picked Go for the Typescript compiler I can only be more of a fan of Anders Hejlsber.

He said that Go was chosen due to its suitability for the workload, offering low-level control, optimized native code, automatic memory management, and concurrency.

And this coming from the same guy that created C#, Typescript, Delphi & Turbo Pascal shows how a real engineer takes a decision of this magnitude.

Is Go the best decision for every SW project? No, but in this case the arguments (and the tests they did during their evaluation) check out.

And no, picking F# simply because you love the language is not a mature decision.

You can check his arguments here:

https://www.youtube.com/watch?v=pNlq-EVld70

pjmlp 4 days ago | parent [-]

I know, you are telling the fisher how to fish.

See the BUILD 2025 talk, where he explains the data structures redesign to fit into Go's lesser type system.

snickerdoodle12 4 days ago | parent | prev [-]

.net is also a pain to distribute since it typically isn't packaged as a single static binary and requires a separately installed runtime

pjmlp 4 days ago | parent [-]

Mono AOT has existed for quite a while, .NET Native also existed, and it isn't .NET fault if people cannot know about Native AOT.

I don't buy any of reasoning why Typescript team adopted Go, first of all the authors are more than knowledgeable about .NET AOT capabilities.

Second as Anders Hejlsberg went through his BUILD 2025 talk, turns out they had to redesign the data structures around Go's weaker type system anyway, as they couldn't easily map what they were doing with TypeScript types.

Third, Azure teams are using AI to convert C++ projects into Rust, as described by Mark Russinovich at RustConf UK 2025, which shows it is up to the challenge at hand.

snickerdoodle12 4 days ago | parent [-]

All I know is that, as a user, whenever I encounter a .net project I have to put in more effort to run it versus a golang project.

This matters for these tools because they're usually distributed via npm packages and then invoked by a javascript wrapper. So you want something with a small binary that runs on pretty much every windows/mac/linux system no matter the configuration.

pjmlp 4 days ago | parent [-]

I bet those Go projects did not used CGO, and if they did would you blame the users or Go?

snickerdoodle12 4 days ago | parent | next [-]

I don't know what you're hoping to hear, but I have no idea. All I know is that with loads of Go projects I've used I can go to the releases page, download a binary and run it.

And that for every .net project I can remember, which are far more rare, there's been some complicated installer that does a bunch of stuff. Or it fails to launch telling me I need to install some runtime separately.

pjmlp 4 days ago | parent [-]

The point is that when you happen to compile yourself Go projects, and CGO is used, you better have the C or C++ compiler toolchain installed that is compatible with Go, with the related dependencies they rely on, otherwise the build will break.

But you won't be blaming Go for that, rather the devs that decided to use CGO.

Likewise, when downloading some .NET project, it isn't .NET to blame, if the devs have decided they wouldn't be making use of Mono AOT, Native AOT, or single-file deployment package (with ReadyToRun).

9rx 4 days ago | parent [-]

> The point is that when you happen to compile yourself...

He made it pretty clear that he doesn't compile himself, he downloads pre-built binaries. In one case he finds that once the binary is downloaded, it just runs. In the other he finds it requires additional steps, like needing to go through an arduous installation process, before it runs.

Sure, better devs can figure out how to avoid things like the aforementioned installation process. Great devs aren't limited by their tools. But pointing out that the devs attracted to that ecosystem are not very good doesn't change much. That it requires one to be good echos the "pain" assertion. If it weren't painful, even the poor devs would do it.

trenchpilgrim 4 days ago | parent | prev [-]

I compile and distribute a Go app using CGO targeted at non-programmers. I hand them a single EXE file and they run it. They don't need to install anything else. It's so easy.

pjmlp 4 days ago | parent [-]

Great news, .NET Native AOT is exactly the same.