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
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.23 \
  --builder ghcr.io/fission/go-builder-1.23 \
  --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