Languages (Environment)

Supported language runtimes and how environments provide them

An environment is the language-specific runtime in which your function executes.

Every Fission function references exactly one environment. The environment supplies a container image with the language runtime, a small web server that loads your code, and (optionally) a builder image that compiles source and fetches dependencies. This page lists the runtimes Fission ships, explains the environment interface versions, and links to per-language guides.

Supported language images

The following pre-built environments are published to ghcr.io/fission/<name> and maintained in the fission/environments repository. Each environment has a runtime image (*-env) and, where dependency building is supported, a builder image (*-builder).

LanguageRuntime imageBuilder imageGuide
Node.jsghcr.io/fission/node-envghcr.io/fission/node-builderNode.js
Pythonghcr.io/fission/python-envghcr.io/fission/python-builderPython
Goghcr.io/fission/go-envghcr.io/fission/go-builderGo
Rustghcr.io/fission/rust-envghcr.io/fission/rust-builderRust
Java (JVM)ghcr.io/fission/jvm-envghcr.io/fission/jvm-builderJava
Rubyghcr.io/fission/ruby-envghcr.io/fission/ruby-builderenvironments repo
PHPghcr.io/fission/php-envghcr.io/fission/php-builderenvironments repo
Binary / Bashghcr.io/fission/binary-envghcr.io/fission/binary-builderenvironments repo
Perlghcr.io/fission/perl-envnoneenvironments repo
.NETghcr.io/fission/dotnet-envnoneenvironments repo
.NET Coreghcr.io/fission/dotnet20-envghcr.io/fission/dotnet20-builderenvironments repo
TensorFlow Servingghcr.io/fission/tensorflow-serving-envnoneenvironments repo
The environment portal lists every published image and its available tags, generated from the fission/environments repository. You can also bring your own runtime by packaging any container that speaks the Fission environment interface.

Environment interface versions

Fission supports three environment interface versions: v1, v2, and v3. The interface version controls how your code is loaded and whether builders and pool tuning are available.

v1

  • Loads a function from a single file, which suits interpreted languages such as Python and JavaScript.
  • Does not let you choose an entrypoint when the file defines several.
  • The function code can live in a directory, or a single file can expose multiple entrypoints.
  • Loads a function by a specific entrypoint, so you must provide one.
  • Supports downloading dependencies and compiling source through a builder (optional).
  • Includes everything in v2.
  • Lets you tune the pre-warmed pool size per environment.

Which interface version should I choose

If all source code and dependencies fit into a single, non-compiled file, the v1 interface is enough.

If your function needs third-party dependencies at runtime, or is written in a compiled language, choose v2 so you can load from a directory or binary with a specific entrypoint.

If you also want to tune the size of the environment’s pre-warmed pool, use v3.

Selecting an interface version

Pass the --version flag to fission environment create:

fission environment create --name go \
  --image ghcr.io/fission/go-env-1.26 \
  --builder ghcr.io/fission/go-builder-1.26 \
  --version 3

Go Functions

Writing Go functions with fission

Java Functions

Writing Java functions with fission

Node.js Functions

Writing Node.js functions with fission

Python3 Functions

Writing Python functions with fission

Rust Functions

Writing Rust functions with fission