User:Aslantis/SPARC usability in the modern age

From Gentoo Wiki
Jump to:navigation Jump to:search
Very much WIP. Links will be broken until I stop being lazy.

You might have heard me talking about using a SPARC box as a general-purpose machine. Or maybe a web search brought you here.

Either way, you're here for one reason: you want to know what one can and can't do on SPARC.

General info

Language support

Hover over the info bubbles for more information.

Language Does it work? Working versions "Just works?" ™ If installable by a normal emerge && If emerge can use the toolchain Working compilers Notes
C/C++ Yes All Yes GCC, clang ICE's (Internal Compiler Errors) are fairly common on sparc. Try toning down your -mcpu.</br>lld only has basic functionality on sparc.
Rust Yes All Yes rustc dev-lang/rust None
Fortran Yes Did very little testing All Yes gfortran sys-devel/gcc[fortran] None
Java Yes JIT only on some Sparc support was officially dropped in JDK15. If you want JIT support, use version < 15. OpenJDK of any version will work however: but at 10-30% of the performance of one with a JIT. No Not yet but eta son (tm) openjdk None
Go Code can be very buggy Will always likely be behind gc TODO Partial Have to manually set the go -> go-12 symlink gccgo sys-devel/gcc[go]:12 The gc compiler (dev-lang/go) does not support sparc, and never will. GCC-12 or higher must be used to build go.
Nim worked for my light testing unknown Yes nim None
Zig Kinda, but not yet unknown TODO So far zig TODO
Pascal Yes 3.2.2 PR #27569 ppcsparc64dev-lang/fpc None

Server usability

Very usable as a server! However, keep in mind the things you want to host.

  • At this time, do NOT expect anything written in golang to work!!!!
  • Any time tested server software written in C/C++ will likely do well. Keep in mind less popular software does have a chance to be effected by endianness or unaligned memory access problems. I personally have not encountered this yet with headless programs.
  • While rust does work, keep in mind the nature of rust crates. Many applications rely on crates that have assembly, C, or CPU specific code(looking at you ring). Many 'nightly' rust features do not work(yet!).
  • Interestingly enough, java might not be the invulnerable bullet you might think. While supposed to be backward compatible, this is not always the case, and I have yet to get jdk8 working on linux/sparc. Also, there is a slight chance you can run into an unaligned memory access issue. I have encountered this for GUI java programs, so it is possible.
  • node does not and will not support sparc.

Are we desktop yet?



Does xyz work on SPARC?

You can search the Gentoo tree and overlays to see if a package is keyworded. If it is keyworded, your answer is pretty much 'yes'. If it isn't, it does not mean it doesn't work on SPARC! It just means nobody has tested that it does yet.

What problems can prevent a program from running on SPARC?

Big endian issues, unaligned memory accesses, internal compiler errors on compilation, lack of language support, and page size issues to name a few.