I am mostly interested in programming under ARM64 in Linux, so I am starting this thread here.
I want to gather peoples interests in different programming languages and the current state of them under ARM64. This includes the programming language itself, and the libraries. I am doing that because ARM64 is very new platform. And PINE64 is basically first generally available computer with ARM64. Previous ones were very expensive, so anything other than few languages needed to run some basic functions (C, C++, Python, Bash, Perl and PHP to run maybe a web server), was not really tested or easy to port without access to cheap hardware by developers.
This is both for my amusement, for showing the state of the platform, and maybe as a guide for other people what can be done with Pine.
Let me divide support into 3 categories or classes. If somebody have some experience about these languages/libraries under Pine64 or other ARM64 board, or under other systems (MacOS, Windows, Linux, FreeBSD) under normal PC (x86, amd64), and want to add something to the list, by testing it under PINE64, please post comments below.
1st class support (compilers and most libraries fully available upstream, and packaged into all major Linux distributions, works out of the box, and there is no major obstacles to use fully the language). This will also include most of the interpreted languages, with working interpreter. But remember that even interpreted languages often interact with C, C++ and host systems in many libraries (i.e. PHP libraries are often written in C, same with Python)
I limited myself to languages I had some contact in the past, or are reasonably popular with big community. I explicitly excluded many esoteric languages (the ones made just for fun), even if they are in 1st or 2nd category, because they were not really done for practical purposes, and I do not want to pollute this list too much with them. I also explicitly excluded many languages that run in the web browser, with few minor exceptions like Dart and Elm, but in general, they are platform independent and do not even really run on the development host but in the clients browser. I included some, and they inclusion stats the status of the development, tools and compilers to Java or JavaScript target, not whatever you can run the programs in the browser correctly (but usually some support for execution would be also necessary for example to run tests). I also excluded very old languages, that nobody expect to be running even on modern PCs (like Algol variants, or Modula), or do have extremely small community or numbers of libraries available.
Anything more to add? Again, if you do have expirience with some of the above languages, and if you already tested them to work correctly, comment about moving the language to the proper category. (In example I feel that the Lua, Haskell and Ocaml might just work out of the box, same with Octave and R libraries. I just had no time to test anything in them yet). If you are under Debian, or Ubuntu, try installing provided packages, and see how things work, and report back. If so please provide distribution version, and version of the language tools and libraries you used for testing.
Changes: Moved Erlang and Elixir up. Moved Scheme up. Moved Haskell and Ocaml up. Moved Ada and Fortran up. Added comments to D and Rust.
I want to gather peoples interests in different programming languages and the current state of them under ARM64. This includes the programming language itself, and the libraries. I am doing that because ARM64 is very new platform. And PINE64 is basically first generally available computer with ARM64. Previous ones were very expensive, so anything other than few languages needed to run some basic functions (C, C++, Python, Bash, Perl and PHP to run maybe a web server), was not really tested or easy to port without access to cheap hardware by developers.
This is both for my amusement, for showing the state of the platform, and maybe as a guide for other people what can be done with Pine.
Let me divide support into 3 categories or classes. If somebody have some experience about these languages/libraries under Pine64 or other ARM64 board, or under other systems (MacOS, Windows, Linux, FreeBSD) under normal PC (x86, amd64), and want to add something to the list, by testing it under PINE64, please post comments below.
1st class support (compilers and most libraries fully available upstream, and packaged into all major Linux distributions, works out of the box, and there is no major obstacles to use fully the language). This will also include most of the interpreted languages, with working interpreter. But remember that even interpreted languages often interact with C, C++ and host systems in many libraries (i.e. PHP libraries are often written in C, same with Python)
- C (gcc and clang compilers)
- C++ (gcc and clang compilers)
- Go (gcgo compiler)
- PHP
- Python 2.x and 3.x
- Perl 5
- Ruby
- JavaScript, Node.js - under V8, Chromium and Firefox
- Unix shell scripting like Bash, ZSH, KSH, etc.
- Erlang and Elixir (no HiPE support for aarch64, just arm and other archs, but interpreter works. LLVM backend in the works).
- Scheme (multiple implementations works just fine. not tested native code compilers)
- Java using OpenJDK environment (Tested OpenJRE9, but it older should work too, including OpenJDK too)
- Ada (tested gnat-6 6.1.1)
- Haskell (tested Glagow Haskell Compiler 7.10.3 with -fllvm backend)
- OCaml (tested ocaml 4.02.3)
- Fortran (tested gfortran-5 5.3.1)
- Forth (tested gforth 0.7.3)
- Rust - compiler should work (LLVM based), but core libraries are not yet ready
- D 2.x (gdc compiler, ldc compiler maybe) - gdc compiler almost works, phobos almost ready
- Groovy
- Elm
- Kotlin
- C#, F#, etc under Mono virtual machine and its compilers
- Haskell
- OCaml
- OpenCL
- Clojure
- Swift
- Objective-C
- PyPy
- Lua, and LuaJIT
- Lisp, ie. Common Lisp
- Scala
- Dart
- Fortran (i.e. gfortran
- Ada (i.e. gnat)
- Jython
- Octave
- R
- Nemerle
- Pascal (i.e. Gnu Pascal)
- Vala
- Eiffel
- Visual Basic
- Fortress
- Delphi
- Maple
- Matlab
- Mathematica
- Sawzall
- Oberon
- Escher
- Factor
I limited myself to languages I had some contact in the past, or are reasonably popular with big community. I explicitly excluded many esoteric languages (the ones made just for fun), even if they are in 1st or 2nd category, because they were not really done for practical purposes, and I do not want to pollute this list too much with them. I also explicitly excluded many languages that run in the web browser, with few minor exceptions like Dart and Elm, but in general, they are platform independent and do not even really run on the development host but in the clients browser. I included some, and they inclusion stats the status of the development, tools and compilers to Java or JavaScript target, not whatever you can run the programs in the browser correctly (but usually some support for execution would be also necessary for example to run tests). I also excluded very old languages, that nobody expect to be running even on modern PCs (like Algol variants, or Modula), or do have extremely small community or numbers of libraries available.
Anything more to add? Again, if you do have expirience with some of the above languages, and if you already tested them to work correctly, comment about moving the language to the proper category. (In example I feel that the Lua, Haskell and Ocaml might just work out of the box, same with Octave and R libraries. I just had no time to test anything in them yet). If you are under Debian, or Ubuntu, try installing provided packages, and see how things work, and report back. If so please provide distribution version, and version of the language tools and libraries you used for testing.
Changes: Moved Erlang and Elixir up. Moved Scheme up. Moved Haskell and Ocaml up. Moved Ada and Fortran up. Added comments to D and Rust.