Home ci 38. functions / configuring-functions: Configuring the Runtime for Epycbyte Functions

38. functions / configuring-functions: Configuring the Runtime for Epycbyte Functions

Last updated on Aug 05, 2025

Configuring the Runtime for Epycbyte Functions

The runtime of your function determines the environment in which your function will execute. Epycbyte supports various runtimes including Node.js, Edge, Python, Ruby, and Go. You can also configure other runtimes using the epycbyte.json file.

Choosing a Runtime

The runtime you choose will affect how your function is deployed and executed. For example:

  • Node.js: Default for functions without additional configuration.
  • Edge: For edge computing and low-latency operations.
  • Go: For high-performance, concurrent tasks.
  • Python: For quick prototyping and dynamic scripting.
  • Ruby: For concise and expressive code.

Configuring via epycbyte.json

You can explicitly set the runtime for your functions by adding configuration to your epycbyte.json file. This is useful for:

  • Custom runtimes
  • Specifying runtime versions
  • Enforcing consistent configurations across functions

Example: Custom Runtime Configuration

{
  "functions": {
    "api/test.php": {
      "runtime": "epycbyte-php@0.5.2"
    }
  }
}

In this example, the function api/test.php uses a custom PHP runtime version.

Function Runtime Examples

Node.js

For Node.js, you can explicitly set the runtime by adding:

export const runtime = 'nodejs';

Edge

To use the Edge runtime:

export const runtime = 'edge';

Go

For Go, create a handler function in an index.go file within your /api directory.

package handler

import (
    "fmt"
    "net/http"
)

func Handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "<h1>Hello from Go!</h1>")
}

Python

For Python, create a function in index.py:

from http.server import BaseHTTPRequestHandler

class handler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/plain')
        self.end_headers()
        self.wfile.write('Hello, world!'.encode('utf-8'))

Ruby

For Ruby, define a handler in index.rb:

require 'cowsay'

Handler = Proc.new do |env|
  [ "Content-type", "text/plain" ].each do |k, v|
    env["HTTP_#{k}"] = v
  end
  ["GET", "/"].each do |method, path|
    if method == "GET"
      env["HTTP_AGE"] = "123"
    end
    env["HTTP_RESPONSE"] = "200 OK"
  end
end

Other Runtimes

Epycbyte supports various other runtimes such as PHP, Java, and custom interpreters. These can be configured using the epycbyte.json file.


This guide provides a clear overview of runtime configuration options for Epycbyte Functions, ensuring you can optimize performance and deployment for your specific needs.