frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Endian wars and anti-portability: this again?

https://dalmatian.life/2026/04/03/endian-wars-and-anti-portability-this-again/
21•awilfox•1d ago

Comments

RcouF1uZ4gsC•1h ago
> In closing, let me reiterate this point so it is crystal clear. If you are a maintainer of a libre software project and you refuse a community port to another architecture, you are doing a huge disservice to your community and to your software’s overall quality. As the Linux kernel has demonstrated, you can accept new ports, and deprecate old ports, as community demands and interest waxes and wanes.

Every feature has a cost and port to a different architecture has a huge cost in ongoing maintenance and testing.

This is open source. The maintainer isn’t refusing a port. The maintainer is refusing to accept being a maintainer for that port.

A person is always free to fork the open source project and maintain the port themselves as a fork.

nine_k•1h ago
Hmm, if the author of the port cares, why won't the author of the port become a maintainer of that port? This should be a two-way street.
CJefferson•1h ago
In my experience, as someone who has gone through this as maintainer of two decent sized projects, that simply doesn't work.

The author of the 'port' probably doesn't know your whole codebase like you, so they are going to need help to get their code polished and merged.

For endian issues, the bugs are often subtle and can occur in strange places (it's hard to grep for 'someone somewhere made an endian assumption'), so you often get dragged into debugging.

Now let's imagine we get everything working, CI set up, I make a PR which breaks the big-endian build. My options are:

1) Start fixing endian bugs myself -- I have other stuff to do!

2) Wait for my 'endian maintainer' to find and fix the bug -- might take weeks, they have other stuff to do!

3) Just disable the endian tests in CI, eventually someone will come complain, maybe a debian packager.

At the end of the day I have finite hours on this earth, and there are just so few big endian users -- I often think there are more packagers who want to make software work on their machine in a kind of 'pokemon-style gotta catch em all', than actual users.

josephg•1h ago
> If the community is offering you a port to an architecture, whether it is 4 days old or 40 years old, that means the community actively wants to use your software on it – otherwise, nobody would put in the effort. Ports like this are hard, and authors like me already know we are fighting an uphill battle just trying to make upstream projects care.

I've had plenty of opensource contributions over the years for some feature or other I don't care about. I used to accept these pull requests. But all too often, the person who wrote the patch disappears. Then for years I receive bug reports about a feature I didn't write and I don't care about. What do I do with those reports? Ignore them? Fix the bugs myself? Bleh.

I don't publish opensource projects so I can be a volunteer maintainer, in perpetuity, for someone else's feature ideas.

If its a small change, or something I would have done myself eventually, then fine. But there is a very real maintenance burden that comes from maintaining support for weird features and rare computer architectures. As this article points out, you need to actively test on real hardware to make sure code doesn't rust. Unfortunately I don't have a pile of exotic computers around that I can use to test my software. And you need to test software constantly or there's a good chance you'll break something and not notice.

That said, is there an easy way to run software in "big endian" mode on any modern computer? I'd happily run my test suite in big endian mode if I could do so easily.

zamadatix•1h ago
> That said, is there an easy way to run software in "big endian" mode on any modern computer?

QEMU userspace emulation is usually the easiest for most "normal" programs IMO. Once you set it up you just run the other architecture binaries like normal binaries on your test system (with no need to emulate a full system). Very much the same concept as Prism/Rosetta on Windows/macOS for running x86 apps on ARM systems except it can be any target QEMU supports.

cpeterso•26m ago
A post about big-endian testing with QEMU was posted on HN just a few days ago:

https://news.ycombinator.com/item?id=47626462

https://www.hanshq.net/big-endian-qemu.html

zephen•1h ago
> In closing, let me reiterate this point so it is crystal clear. If you are a maintainer of a libre software project and you refuse a community port to another architecture, you are doing a huge disservice to your community and to your software’s overall quality.

Linus Torvalds disagrees. Vehemently.

https://www.phoronix.com/news/Torvalds-No-RISC-V-BE

> For those who don’t know, endianness is simply how the computer stores numbers. Big endian systems store numbers the way us humans do: the largest number is written first.

Really, what's first? You're so keen on having the big end first, but when it comes to looking at memory, you look... starting at the little end of memory first??? What's up with that?

> I happen to prefer big endian systems in my own development life because they are easier for me to work with, especially reading crash dumps.

It always comes back to this. But that's not a good rationale for either the inconsistency of mixed-endianness where the least significant bit is zero but the most significant byte is zero, or true big endianness, where the least significant bit of a number might be a bit numbered 7 or numbered 15, or even 31 or 63, depending on what size integer it is.

> (Porting to different endianness can help catch obscure bugs.)

Yeah, I'm sure using 9 bit bytes would catch bugs, too, but nobody does that either.

userbinator•51m ago
BE was a huge mistake. Arabic numerals originated in a right-to-left language too.

depending on what size integer it is

That's the worst part about BE: values that have a size-dependent term in them, in addition to a subtraction. 2^n vs. 2^(l-n) and 256^N vs 256^(L-N).

According to Linus, BE has been "effectively dead" for at least a decade: https://news.ycombinator.com/item?id=9451284

lovich•1h ago
I don’t have an opinion either way on this authors belief around the port being accepted upstream or not.

I did however learn a lot googling some of the terms they dropped and finding out things like PowerPC architecture getting and update as recently as 2025.

Several of their references I knew from my first tech leads mentioning their own early career. I am surprised at how much still has active development.

userbinator•1h ago
If you want to keep software working on systems with a 9-bit byte or other weirdness, that's entirely on you. No one else needs or wants the extra complexity. Little endian is logical and won, big endian is backwards and lost for good reason. (Look at how arbitrary precision arithmetic is implemented on a BE system; chances are it's effectively LE anyway.)
yjftsjthsd-h•47m ago
> Little endian is logical and won, big endian is backwards and lost for good reason.

No, BE is logical, but LE is efficient (for machines).

lowbloodsugar•40m ago
No, BE is intuitive for humans who write digits with the highest power on the left.

LE is logical which is also why it is more efficient and more intuitive for humans once they get past “how we write numbers with a pencil”.

smj-edison•1h ago
> I happen to prefer big endian systems in my own development life because they are easier for me to work with, especially reading crash dumps.

If hex editors were mirrored both left to right and right to left, would it be easier to read little endian dumps?

ronsor•44m ago
xxd has the `-e` option for exactly this use case:

    -e          little-endian dump (incompatible with -ps,-i,-r).
bastawhiz•1h ago
I think the tricky thing here is that I simply don't have the time, patience, or resources to maintain this stuff. Let's say I have a LE-only project. Someone ports it to work on BE. Now it needs ci for BE. I write a patch in the future and the BE tests fail. Now I need to fix them. Potential contributors need to get the tests to pass. Who's using BE, though? Is the original porter even still using it?

The author betrays their own point with the anecdote about 586 support: they had tests, the tests passed, but the emulator was buggy, masking the issue. Frankly, if you're the Linux kernel and nobody has the hardware to run the tests on an actual device, it says a lot. But it also shows that qemu is struggling to make it work if the emulation isn't working as it should. How is someone who runs a small project supposed to debug a BE issue when you might have to debug the emulator when a user report comes in?

For me, I'll always welcome folks engaging with my work. But I'll be hesitant to take on maintenance of anything that takes my attention away from delivering value to the overwhelming majority of my users, especially if the value of the effort disappears over time (e.g., because nobody is making those CPUs anymore).

jandrewrogers•49m ago
The glaring omission from that long post is the term "opportunity cost".

Ensuring a code base indefinitely supports arbitrary architectures carries a substantial code architecture cost. Furthermore, it is difficult to guarantee testing going forward or that the toolchains available for those architectures will continue to evolve with your code base. I'm old enough to have lived this reality back when it was common. It sucked hard. I've also written a lot of code that was portable to some very weird silicon so I know what that entails. It goes far beyond endian-ness, that is just one aspect of silicon portability.

The expectation that people should volunteer their time for low ROI unpleasantness that has a high risk of being unmaintainable in the near future is unreasonable. There are many other facets of the code base where that time may be better invested. That's not "anti-portable", it is recognition of the potential cost to a large base of existing users when you take it on. The Pareto Principle applies here.

Today, I explicitly only support two architectures: 64-bit x86 and ARM (little-endian). It is wonderful that we have arrived at the point where this is a completely viable proposition. In most cases the cost of supporting marginal users on rare architectures in the year 2026 is not worth it. The computing world is far, far less fragmented than it used to be.

nextaccountic•26m ago
Why not wasm?
Brian_K_White•12m ago
I'm lazy too but I know that's what it is and don't mistake it for a virtue.
lowbloodsugar•26m ago
I wrote a big long reply but I realized that there’s really no point arguing with these people. BE is wrong. We all know why. Some people are personally interested in BE and believe they are entitled to everyone else incorporating their special interest into other these code base. Fuck them.

Show HN: I built a tiny LLM to demystify how language models work

https://github.com/arman-bd/guppylm
117•armanified•3h ago•8 comments

Gemma 4 on iPhone

https://apps.apple.com/nl/app/google-ai-edge-gallery/id6749645337
466•janandonly•8h ago•127 comments

Show HN: YouTube search barely works, I made a search form with advanced filters

https://playlists.at/youtube/search/
97•nevernothing•3h ago•69 comments

LÖVE: 2D Game Framework for Lua

https://github.com/love2d/love
225•cl3misch•1d ago•91 comments

Copilot is 'for entertainment purposes only', per Microsoft's terms of use

https://techcrunch.com/2026/04/05/copilot-is-for-entertainment-purposes-only-according-to-microso...
35•airstrike•3h ago•10 comments

Microsoft hasn't had a coherent GUI strategy since Petzold

https://www.jsnover.com/blog/2026/03/13/microsoft-hasnt-had-a-coherent-gui-strategy-since-petzold/
254•naves•10h ago•142 comments

Artemis II crew see first glimpse of far side of Moon [video]

https://www.bbc.com/news/videos/ce3d5gkd2geo
436•mooreds•13h ago•334 comments

Eight years of wanting, three months of building with AI

https://lalitm.com/post/building-syntaqlite-ai/
665•brilee•14h ago•208 comments

Endian wars and anti-portability: this again?

https://dalmatian.life/2026/04/03/endian-wars-and-anti-portability-this-again/
22•awilfox•1d ago•19 comments

Show HN: Gemma Gem – AI model embedded in a browser – no API keys, no cloud

https://github.com/kessler/gemma-gem
23•ikessler•3h ago•1 comments

Running Gemma 4 locally with LM Studio's new headless CLI and Claude Code

https://ai.georgeliu.com/p/running-google-gemma-4-locally-with
210•vbtechguy•10h ago•55 comments

Employers use your personal data to figure out the lowest salary you'll accept

https://www.marketwatch.com/story/employers-are-using-your-personal-data-to-figure-out-the-lowest...
106•thisislife2•3h ago•42 comments

Sheets Spreadsheets in Your Terminal

https://github.com/maaslalani/sheets
17•_____k•1d ago•4 comments

In Japan, the robot isn't coming for your job; it's filling the one nobody wants

https://techcrunch.com/2026/04/05/japan-is-proving-experimental-physical-ai-is-ready-for-the-real...
137•rbanffy•5h ago•149 comments

Show HN: Modo – I built an open-source alternative to Kiro, Cursor, and Windsurf

https://github.com/mohshomis/modo
18•mohshomis•3h ago•2 comments

Why Switzerland has 25 Gbit internet and America doesn't

https://sschueller.github.io/posts/the-free-market-lie/
281•sschueller•9h ago•227 comments

Music for Programming

https://musicforprogramming.net
119•merusame•9h ago•51 comments

The Mechanics of Steins Gate (2023) [pdf]

https://github.com/Votuko/steins-gate-mechanics/blob/main/The%20Mechanics%20of%20Steins%20Gate%20...
56•Ariarule•5h ago•9 comments

OpenAI's fall from grace as investors race to Anthropic

https://www.latimes.com/business/story/2026-04-01/openais-shocking-fall-from-grace-as-investors-r...
107•1vuio0pswjnm7•3h ago•60 comments

Recall – local multimodal semantic search for your files

https://github.com/aayu22809/Recall
12•patel_aayushya•3h ago•8 comments

Apex Protocol – An open MCP-based standard for AI agent trading

https://apexstandard.org/
10•andmerm•2h ago•3 comments

A tail-call interpreter in (nightly) Rust

https://www.mattkeeter.com/blog/2026-04-05-tailcall/
135•g0xA52A2A•12h ago•22 comments

Computational Physics (2nd Edition) (2025)

https://websites.umich.edu/~mejn/cp2/
110•teleforce•11h ago•17 comments

LLMs can't justify their answers–this CLI forces them to

https://wheat.grainulation.com/
5•volatilityfund•2h ago•2 comments

Wavelets on Graphs via Spectral Graph Theory (2009)

https://arxiv.org/abs/0912.3848
29•dedalus•5d ago•2 comments

Nanocode: The best Claude Code that $200 can buy in pure JAX on TPUs

https://github.com/salmanmohammadi/nanocode/discussions/1
170•desideratum•13h ago•24 comments

Stamp It All Programs Must Report Their Version – Michael Stapelberg

https://michael.stapelberg.ch/posts/2026-04-05-stamp-it-all-programs-must-report-their-version/
4•gurjeet•1h ago•0 comments

Caveman: Why use many token when few token do trick

https://github.com/JuliusBrussee/caveman
718•tosh•18h ago•313 comments

Friendica – A Decentralized Social Network

https://friendi.ca/
138•janandonly•16h ago•49 comments

Show HN: Mdarena – Benchmark your Claude.md against your own PRs

https://github.com/HudsonGri/mdarena
14•hudsongr•3h ago•1 comments