Categorygithub.com/loopholelabs/scale
modulepackage
0.4.8
Repository: https://github.com/loopholelabs/scale.git
Documentation: pkg.go.dev

# README


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: [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.

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

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
Package integration holds integration tests for Scale.
No description provided by the author
Package scalefile implements the ScaleFile type, as well as any helper functions for interacting with ScaleFile types.
Package scalefunc implements the Schema type, as well as any helper functions for interacting with Schema types.
Package signature implements the interfaces, types, and utility functions that can be used by Guest and Host implementations of Scale Signatures.
Package storage is used to store and retrieve built Scale Functions and Scale Signatures.
No description provided by the author

# Functions

No description provided by the author
NewConfig returns a new Scale Runtime Config.
Parse parses a function or signature name of the form <org>/<name>:<tag> into its organization, name, and tag.

# Variables

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

Config is the configuration for a Scale Runtime.
Instance is a single instance of a Scale Function chain.
No description provided by the author
Scale is the Scale Runtime.

# Type aliases

Next is the next function in the middleware chain.