Group: Software/research/ProgrammingLanguages

From LibrePlanet
Jump to: navigation, search
(Move references in their own section: This way they don't appear like they only belong to the last section)
(Parabola status: C#: add toolchain name and fix table shift)
Line 222: Line 222:
 
|-
 
|-
 
| C#
 
| C#
 +
| mono
 
| {{yes}}
 
| {{yes}}
 
| {{yes}}
 
| {{yes}}

Revision as of 18:42, 9 November 2022

Introduction

This page will contain various very biased comparison of status of various software

Toolchain status

Feature Ada C C++ D Erlang Fortran Go Java Objective-C Objective-C++ Rust Unified Parallel C. Vala
Autoconf Yes Yes Yes Fortran 77, Fortran 90, Fortran 95 basic support for gccgo Yes Yes No
Automake Yes Yes Fortran 77, Fortran 9x No with CGJ Yes Yes No partial partial
GCC 12 support[1] Yes Yes Yes Yes No Yes Yes No Yes Yes Work in progress No valac uses gcc
Microcontrollers[2] GCC, SDCC GCC, other? depends on glib
Strict specifications[3] ? Yes[4] ? ? ? ? ? ? ? ? No[5] ? ?

Didstributions status

Guix status

Guix is the most strict FSDG compliant distribution with regard to languages support: it requires the bootstrap process to be reproducible.

While there are still binary compilers being used in the bootstrap process for some languages, other languages are completely bootstrapped from source.

Language Toolchain GNU/Hurd i586 GNU/Linux armv7h GNU/Linux aarch64 GNU/Linux i686 GNU/Linux mips64el GNU/Linux powerpc GNU/Linux powerpc64le GNU/Linux riscv64 GNU/Linux x86_64 Mingw i686 Mingw x86_64
C gcc-toolchain Yes Yes Yes Reduced Binary Seed of about 145MiB[6] Yes Yes Yes Yes Reduced Binary Seed of about 145MiB[6] Yes Yes
C# No
Haskell ghc No No No Bootstrapped from ghc-4 binaries No No No No Bootstrapped from ghc-4 binaries No No
Java openjdk ? ? ? bootstraped from source[7] ? ? ? ? bootstraped from source[7] ? ?
Rust rustc No[8] No[8] Bootstrapped from source with mrustc[8] No[8] No[8] No[8] No[8] Bootstrapped from source with mrustc[8] Bootstrapped from source with mrustc[8] No[8] No[8]

Parabola status

Parabola has a policy which requires all the packages to be built from source. But it doesn't have a policy to reduce the size of the bootstrap binaries, so there can be circular dependencies.

Language Toolchain GNU/Linux armv7h GNU/Linux i686 GNU/Linux x86_64
C gcc-toolchain Yes Yes Yes
C# mono Yes Yes Yes
Haskell ghc No Yes Yes
Java openjdk Yes Yes Yes
Rust rustc Yes Yes Yes

References

  1. Compared with other compilers like LLVM and rustc, GCC supports many CPU architectures and it's quite well integrated with various other software (gdb, gprof, build systems, etc). It also has long term support in mind as it continues to support other programming language standards. It also has good documentation that explain how it handles C code for instance. In addition it's a GNU project, so it has users freedom in mind. In addition Guix has made GCC bootstrapable from a binary that is less than 1KB, and it doesn't require huge resources to build or bootstrap.
  2. Can we compile code for microcontrollers, if so which compilers are used / necessary for that.
  3. Having a standard or something similar to refer to enables people to write code that can still be used without requiring too much maintenance to adapt to newer compiler versions.
  4. Only the drafts are publicly available though.
  5. See one of the two talks on rust in GNU cauldron 2022.
  6. 6.06.1 https://guix.gnu.org/en/manual/devel/en/guix.html#Bootstrapping
  7. 7.07.1 In gnu/packages/java.scm icedtea-7 depends on jamvm which depends on jamvm-1-bootstrap which is built from source. The source bootstrap is not architecture specific.
  8. 8.008.018.028.038.048.058.068.078.088.098.10 See supported-systems in the rust 1.54 package definition