Port Julia to AIX: How to do?

Hi,
My first question in Julia forum. I hope I’m using the correct category.
I’m studying the port of Julia to AIX/PowerPC64. I’ve already searched for some information about: HowToPort, but I found nothing. Is there a place where information dealing with porting Julia to a new OperatingSystem is available?
I’ve started to look at the port of Julia to Fedora/PowerPC64LE. Build is OK and 36.8 millions of tests are Pass, 38.6 on Fedora/x86_64 . LLVM on AIX builds and there are only 276 failures, out of about 16.000 tests. So, it looks to me that there is a correct basis for starting the port. Correct?
I’d like to know what are the main things to change and adapt, and how we have to proceed. We are looking for a student to do the port.
Thanks
Tony

2 Likes

Doing a port to a new operating system is a non-trivial endeavor. You’re lucky in that libuv already supports it, so you don’t have to worry about the I/O system. The big other OS specific thing in Julia is task/signal handling, memory management for executable pages, unwind handling, as well as potentially some work to handle ABI difference (don’t know if the AIX system ABI matches the standard ABI - I would expect that it does since IBM controls everything, but who knows). You’ll also need to build a BinaryBuilder toolchain to get binaries built for all the packages, though there isn’t really great documentation for that. Overall it’s definitely a doable thing for an engineer experienced in operating systems and build system messes, but a student would have to be willing to put up with a lot of frustration to get it done.

6 Likes

Yes, sure, porting Julia to a new OS is not an easy task. However, we already did that for several other languages, like golang recently, which was ported by a student (6 months as internship + 6 more months). So, we think we’ll be able to help the (future) student, as we did this year for Erlang. I’m now gathering information about how this port must be done and what are the dependencies and constraints.
Thanks to provide the name of libuv: I’ve seen that it is tested in NodeJS CI for AIX 7.1 & 7.2 with XL Clang (but no more with GCC): that will help us.
About the AIX system ABI, I’ll check.
Thanks for the information you gave! I’ll tried to dig/study more the subjects you have listed and will return here for more questions after. Any more information is welcome!
About LLVM dependency, I’ve seen that Julia 1.5.2 depends on LLVM v9. And that the master now depends on LLVM v10. When do you expect to move to using LLVM v11 ? Because I think that only LLVM v11 (which is “final” and will be out soon) works fine on AIX. Do you plan to continue using LLVM source code delivered within Julia’s code + patches? or do you plan to use an installed version of LLVM?
Thanks !

Work in progress: https://github.com/JuliaLang/julia/pull/37842

4 Likes

Thanks for the news about LLVM v11 !

About libuv, yes, it builds on AIX. However, I see 14 test failures out of 388 tests. Investigating.

I’ve checked that, on Fedora/x86_64 and Fedora/PPC64LE, 100% of 389 tests are OK.

A post was split to a new topic: Keno’s not famous enough for Wikipedia

About libuv on AIX, since I’m new on this subject, I missed some information for configuring the system before testing. With this added configuration, only 1 test still fails on AIX and I guess it is due to some mis-configuration of IPv6. Thus, as a conclusion, libuv seems to work perfectly well on AIX! Good!