Skip to content

A framework for building high-performance plugin systems into any application, powered by WebAssembly.

License

Notifications You must be signed in to change notification settings

loopholelabs/scale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

A framework for building high-performance plugin systems into any application, all powered by WebAssembly.

License: Apache 2.0 Discord

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.

Getting Started

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: http@v0.3.4
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.

Documentation

Full instructions and documentation for Scale is available at https://scale.sh/docs.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/loopholelabs/scale. For more contribution information check out the contribution guide.

License

The Scale project is available as open source under the terms of the Apache License, Version 2.0.

Code of Conduct

Everyone interacting in the Scale project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the CNCF Code of Conduct.

Project Managed By:

https://loopholelabs.io