Hacker News new | ask | show | jobs
by phantasmish 168 days ago
> Replaces the standard Go runtime with one designed for the Dreamcast's constraints: memory 16MB RAM, CPU single-core SH-4, no operating system.

24 total megabytes, with an M, of memory between system and video (another 8 there), single core 200mhz CPU, graphics chip runs at 100mhz. Shenmue runs on it.

Glares at Teams.

5 comments

I really don't get how Teams gets developed, not even the worst offshoring projects I have been part of, have reached so low in quality.
It baffles me that Microsoft can build an entire OS, and build and rebuild GUI stacks, and they couldn't build the Teams UI using C#???
Microsoft applications always look and behave as if they were ported to windows...
They needed true cross-platform consistence, so it had to be equally terrible everywhere.
If they built Teams with a C# UI framework, it'd have to be rebuilt 4 times by now.
They already had to rebuild it once because it was in angularjs lol
Maybe they know they’re going to do it badly and it will tarnish C#’s reputation.
Would happily take work chat, video conferencing in network-enabled Shenmue over Teams, Slack any day
As long as you don't work in the shipping industry. I hear it's next to impossible to get hold of any sailors over Shenmue
Could implement a custom Teams client on top of that. My biggest concern would be TLS and media decoding, but could just proxy the traffic and roll a text only client.

I mucked about with Microsoft Graph a bit before, didn't seem too bad.

> CPU single-core

This does not fare well for Go though.

It runs fine. It is perhaps a bit pricey for a 200MHz system, I'd certainly focus on having only a few of them and doing most of my work by looping over some sort of user-defined tasklet (or, in other words, "standard game architecture"), but it's not like Go requires multiple CPUs to work at all.
I didn't say it would not run and I am happy that Go is being used in gaming like this. But it's like buying a Koenigsegg and using to to drive into your near by grocery store as concurrency is at the heart of Go and having it run on a single core, or rather, i assume, thread, is not the best use case for it.
I'm actually not a big fan of people who recite "concurrency is not the same as parallelism" like a mantra because I don't think it's anywhere near as orthogonal as those people think. But then, that's also largely because multicore is the norm now, rather than some bizarre exception. In a single core case, it is still true. Goroutines are just a different way of achieving async functionality, in a way probably a lot more convenient than the actual code of the time had, albeit at a bit of a performance penalty.

There was a period of time towards the beginning of Go when you could get some small performance advantages for certain tasks by locking the runtime to one goroutine at a time. They've long since addressed that, but there was a time when there were people writing Go code and deliberately limiting it to one execution context at a time.

"concurrency is not the same as parallelism" is a "mantra" exactly because most people are unable to distinguish between them and/or understand the meaning. maybe not nowadays, but go back a decade and that was definitely the case.
Wouldn't it suit Go over some other architecture, because of goroutines being in userspace, the single CPU is effectively multithreaded when using Go
Most Go code on Kubernetes runs on a single core.
Paging Mythbusters
Huh?