[Feature Request] Support Linux PowerPC64 Little Endian

Firstly I would like to congratulate the core team on hitting the 1.0 milestone. Here is for the bright future of the language.

I am writing this proposal in hope the core team would consider support Linux PPC64LE as a target architecture. Though PowerPC is no longer popular like it is used to be in the old Mac day, it is still much alive and used widely in enterprises and research institutions. With the introduction of consumer-range products such as the Raptor Blackbird motherboard, it is now easier for everyone to get their hands on the platform.

I am fully aware the major blocker would be the access to the computer for development. There are options out there, for example the kernel.cafe folks do have PPC64LE boxes (free access). And if needed, companies like https://www.integricloud.com/ does sponsor free access to one of their nodes for OSS projects.

Looking forward to seeing response from the core team

PowerPC, now there’s an architecture I haven’t heard of since Apple made iBooks (great laptops, btw). Since Crystal uses LLVM to emit binaries and LLVM recently added support for PPC-LE, you should be able to pass the necessary options to crystal build (ex: --target, --mcpu, or --mattr) to compile a PPC64-LE targeted binary. If LLVM supports an architecture, in theory, Crystal should as well.

FYI, while I’m not a member of the core-team, Feature Requests should probably be submitted to Crystal’s GitHub Issue tracker.

Yes technically, Crystal should be able to compile for PPC-LE target through recent LLVM support. But this just gives you the bare language. It doesn’t cover the stdlib. A new architecture requires appropriate ABI support, C bindings, and assembly for context switching.

So there’s a bit more to it. Doesn’t mean it’s super complicated and with access to hardware it shouldn’t be that difficult to do.
I wouldn’t expect anyone from the core team to work on this feature in the near future. There are far more important features and platforms to work on.
Contributions are of course welcome.

There is already an issue about this on the main repo:

2 Likes