Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: add .net

This page gives an overview of upstream projects. If you miss information or find mistakes, please edit.

Table of Contents

...

Dart

Dart is client-optimized programming language.

RISC-V status

...

GHC

The Glasgow Haskell Compiler (GHC) is an open-source compiler for the programming language Haskell.

RISC-V status

GHC does not support RISC-V, but there are people working on it. The porting attempts are tracked here:

...

Go is a programming language designed for simplicity, reliability, and efficiency.

RISC-V status

RISC-V support has been mainlined with Go 1.14.

...

OpenJDK

GDB is the GNU Project debugger.

OpenJDK is an open-source implementation of the Java Platform (Java SE).

RISC-V

...

  • Andrew Burgess (Embecosm)
  • Palmer Dabbelt (Google)

Releases

GDB major releases are approximately annually. There are typically one or two minor releases each year. This is the typical schedule:

  • major release branch/pre-release approximately 1 month before release
  • first minor release ("re-spin") approximately 3 months after major release

At the time of writing the most recent release was 10.1, released on 2020-10-24. Dates for branching (and hence release) of GDB 11 have yet to be announced.

RISC-V status

Debugging works on top of PTRACE syscalls. HW-Breakpoint or HW-Watchpoint support is missing.

Glibc

Glibc is the GNU C library.

RISC-V maintainers

  • Palmer Dabbelt (Google)
  • Andrew Waterman (SiFive)
  • DJ Delorie (Red Hat)
  • Darius Rad(Bluespec)

Releases

Rule of thumb: Glibc releases twice per year (February and August).

Previous releases:

  • glibc 2.32 (2020-08-05)
  • glibc 2.33 (2021-02-01)
  • glibc 2.34 (2021-08-01)

RISC-V status

RV32 and RV64 are supported. Still, there is optimization and completeness potential.

LLVM

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.

RISC-V maintainer

  • Alex Bradbury (lowRISC)

LLVM RISC-V meetings

Releases

  • LLVM 12 schedule
    • LLVM 12.0.0 RC1 (branching) (2021-01-26)
    • LLVM 12.0.0 RC2 (2021-02-23)
    • LLVM 12.0.0 final (2021-03-02)

The upstream release page can be found here.

RISC-V status

RV32G and RV64G are mostly implemented. However, there is still some optimization potential.

Newlib

Newlib is a C standard library implementation intended for use on embedded systems.

RISC-V maintainer

  • Kito Cheng (SiFive)

Releases

Rule of thumb: Newlib releases once per year.

Last releases:

  • Newlib 3.3.0 (2020-01-22)
  • Newlib 4.0.0 (2020-11-17)
  • Newlib 4.1.0 (2020-12-18)

RISC-V status

status

The OpenJDK RISC-V Port project has been approved by the OpenJDK community [1] and Fei Yang from Huawei Technologies is leading this new project now [2].

They have a project-specific repo for future development here [3].


This port only supports RV64GV for now, shorthand for RV64IMAFDV ISA extensions, and covers the templateInterpreter, C1 and C2, excluding AOT/JVMCI.

All existing GCs are available on riscv64, including ZGC and ShenandoahGC. The VectorAPI and ForeignAPI features are not supported for now. Support for vector

operations is experimental, they need to do more testing for this part.


Aleksey Shipilev is building nightlies here [4]. And they have provided build instructions for reference [5]. This port has passed jtreg tier{1,2,3,4} and jcstress tests

on HiFive Unmatched board. SPECjbb & SPECjvm benchmark tests are also carried out regularly. So it should be good enough to run most Java programs.


A JEP has been submitted in order to bring it upstream in JDK mainline [6], but that process will surely take some time.


[1] https://openjdk.java.net/projects/riscv-port

[2] https://openjdk.java.net/census#riscv-port

[3] https://github.com/openjdk/riscv-port/tree/riscv-port

[4] https://builds.shipilev.net/openjdk-jdk-riscv

[5] http://cr.openjdk.java.net/~fyang/openjdk-riscv-port/BuildRISCVJDK.md

[6] https://openjdk.java.net/jeps/8276797

...

PHP

PHP is a programming language targeting web development.

RISC-V status

The PHP interpreter works on RISC-V. However, certain features, such as the PCRE JIT, are not ported yet and there are no RISC-V specific optimizations in the codebase at the moment. Thus optimal performance cannot be achieved right now.

...

Rust

Rust is a programming language designed for performance, reliability and productivity. It relies on LLVM for generating code.

RISC-V status

Rust has tier 2 support for RISC-V RV64 (riscv64gc-unknown-linux-gnu) since 1.42.0 (2020-03-12). RV32 is supported, but currenlty does not have a complete standard library.

...

Rust Embedded

Rust Embedded is a project for enabling the Rust Programming Language on "Bare Metal" embedded systems.

RISC-V status

Since Embedded Rust does not require Rust’s standard library (no_std), more RISC-V platforms are available than for a full Rust runtime.

The following platforms are supported:

  • Bare RISC-V RV32

    • RV32I

    • RV32IMAC

    • RV32IMC

  • Bare RISC-V RV64

    • RV64IMAFDC

    • RV64IMAC

There is also a quickstart guide to build Rust applications for HiFive1 boards:

...

V8

V8 is a JavaScript and WebAssembly engine with a strong focus on performance.

V8 is used a JavaScript runtime for other runtimes/projects, such as

  • Google Chrome Browser

  • Chromium Browser

  • Node.js


...

.Net


.Net is a C# runtime. It has two different backend engine.




RISC-V status

The RISCV64GC backend has been upstreamed on Feb 10, 2021 with the joint effort of RIOS lab, Futurewei and PLCT. Now it's maintained by PLCT. 

Node.js' support for RISCV64GC has been mainlined with V17.0.0 and now it's maintained by PLCT.

The maintaining page for RISCV V8 related projects can be found in https://github.com/riscv-collab/v8 . RV32 and RV64 are supported. Still, there is optimization and completeness potential.