Group: Software/research/ProgrammingLanguages
From LibrePlanet
< Group:Software | research
(→Programming languages: fix syntax confusion between textile quoting and mediawiki reference) |
(→Programming languages: Start adding distribution support: it's important because of potential bootstrapping issues) |
||
Line 3: | Line 3: | ||
This page will contain various very biased comparison of status of various software | This page will contain various very biased comparison of status of various software | ||
− | == | + | == Toolchain status == |
{| border="0" style="font-size: smaller" | {| border="0" style="font-size: smaller" | ||
Line 96: | Line 96: | ||
| ? | | ? | ||
| ? | | ? | ||
+ | |} | ||
+ | |||
+ | == Didstributions status == | ||
+ | |||
+ | === Didstributions 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. | ||
+ | |||
+ | {| border="0" style="font-size: smaller" | ||
+ | <!-- Below is the column for easy copy-paste and replacement --> | ||
+ | <!-- 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 --> | ||
+ | |- bgcolor="#6699ff" | ||
+ | ! 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}} | ||
+ | | {{yes}} | ||
+ | | {{yes}} | ||
+ | | {{yes}} | ||
+ | | {{yes}} | ||
+ | | {{yes}} | ||
+ | | {{yes}} | ||
+ | | {{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}} | ||
+ | |- | ||
+ | | Rust | ||
+ | | rustc | ||
+ | | <!-- GNU/Hurd i586 --> | ||
+ | | <!-- GNU/Linux armv7h --> | ||
+ | | <!-- GNU/Linux aarch64 --> | ||
+ | | {{no}} | ||
+ | | <!-- GNU/Linux mips64el --> | ||
+ | | <!-- GNU/Linux powerpc --> | ||
+ | | <!-- GNU/Linux powerpc64le --> | ||
+ | | <!-- GNU/Linux riscv64 --> | ||
+ | | {{yes|Bootstrapped from source with mrustc}} | ||
+ | | <!-- Mingw i686 --> | ||
+ | | <!-- Mingw x86_64 --> | ||
+ | |- | ||
|} | |} |
Revision as of 14:06, 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 | ||||||||||
Standardized[3] | ? | Yes[4] | ? | ? | ? | ? | ? | ? | ? | ? | No[5] | ? | ? |
Didstributions status
Didstributions 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 | Yes | Yes | Yes | Yes | Yes | Yes | 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 |
Rust | rustc | No | Bootstrapped from source with mrustc |
- ↑ 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.
- ↑ Can we compile code for microcontrollers, if so which compilers are used / necessary for that.
- ↑ 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.
- ↑ Only the drafts are publicly available though.
- ↑ See one of the two talks on rust in GNU cauldron 2022.