With Scale Functions your users can write fully typed plugins in any language they choose, and your application can easily and safely run those plugins with the Scale Runtime, which provides state-of-the-art sandboxing, low startup times, and extremely high performance.
Currently, guest plugins can be written in Golang, Rust, and Typescript, with the Runtime supporting Golang and Typescript host applications.
First, install the CLI.
Create a new function, passing <name>:<tag>
to the new
command:
scale new hello:1.0
The following files will be generated:
version: v1alpha
name: hello
tag: 1.0
signature: [email protected]
language: go
dependencies:
- name: github.com/loopholelabs/scale-signature
version: v0.2.9
- name: github.com/loopholelabs/scale-signature-http
version: v0.3.4
source: scale.go
//go:build tinygo || js || wasm
package scale
import (
signature "github.com/loopholelabs/scale-signature-http"
)
func Scale(ctx *signature.Context) (*signature.Context, error) {
ctx.Response().SetBody("Hello, World!")
return ctx.Next()
}
module scale
go 1.18
require github.com/loopholelabs/scale-signature v0.2.9
require github.com/loopholelabs/scale-signature-http v0.3.4
For more information on these files, see the full Quick Start Guide.
Build the above function:
scale function build
And run:
scale run local/hello:1.0
This will start a local HTTP server on port 8080
and will run the function whenever you make a request to it.
Et Voilà! Your first Scale Function! 🎉
Functions be chained together, embedded in other language's apps, and used independently. For more information, as well as usage with other supported language, including Rust and TypeScript/JavaScript, see the documentation.
Full instructions and documentation for Scale is available at https://scale.sh/docs.
Bug reports and pull requests are welcome on GitHub at https://github.com/loopholelabs/scale. For more contribution information check out the contribution guide.
The Scale project is available as open source under the terms of the Apache License, Version 2.0.
Everyone interacting in the Scale project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the CNCF Code of Conduct.