scale

package module
v0.4.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 8, 2024 License: Apache-2.0 Imports: 17 Imported by: 3

README


Logo

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

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.

Usage and Documentation

Usage 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:

Documentation

Overview

Package scale implements the Scale Runtime in Go.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoConfig        = errors.New("no config provided")
	ErrNoFunctions     = errors.New("no functions provided")
	ErrInvalidFunction = errors.New("invalid function")
	ErrInvalidEnv      = errors.New("invalid environment variable")
)

Functions

This section is empty.

Types

type Config

type Config[T interfaces.Signature] struct {
	// contains filtered or unexported fields
}

Config is the configuration for a Scale Runtime

func NewConfig

func NewConfig[T interfaces.Signature](newSignature interfaces.New[T]) *Config[T]

NewConfig returns a new Scale Runtime Config

func (*Config[T]) WithContext

func (c *Config[T]) WithContext(ctx context.Context) *Config[T]

func (*Config[T]) WithExtension added in v0.4.6

func (c *Config[T]) WithExtension(e extension.Extension) *Config[T]

func (*Config[T]) WithFunction

func (c *Config[T]) WithFunction(function *scalefunc.V1BetaSchema, env ...map[string]string) *Config[T]

func (*Config[T]) WithFunctions

func (c *Config[T]) WithFunctions(function []*scalefunc.V1BetaSchema, env ...map[string]string) *Config[T]

func (*Config[T]) WithRawOutput

func (c *Config[T]) WithRawOutput(rawOutput bool) *Config[T]

func (*Config[T]) WithSignature

func (c *Config[T]) WithSignature(newSignature interfaces.New[T]) *Config[T]

func (*Config[T]) WithStderr

func (c *Config[T]) WithStderr(w io.Writer) *Config[T]

func (*Config[T]) WithStdout

func (c *Config[T]) WithStdout(w io.Writer) *Config[T]

type Instance

type Instance[T interfaces.Signature] struct {
	// contains filtered or unexported fields
}

Instance is a single instance of a Scale Function chain

func (*Instance[T]) Run

func (i *Instance[T]) Run(ctx context.Context, signature T) error

type Next

type Next[T interfaces.Signature] func(ctx T) (T, error)

Next is the next function in the middleware chain. It's meant to be implemented by whatever adapter is being used.

type Parsed

type Parsed struct {
	Organization string
	Name         string
	Tag          string
}

func Parse

func Parse(name string) *Parsed

Parse parses a function or signature name of the form <org>/<name>:<tag> into its organization, name, and tag

type Scale

type Scale[T interfaces.Signature] struct {
	TraceDataCallback func(data string)
	// contains filtered or unexported fields
}

Scale is the Scale Runtime. It is responsible for initializing and managing the WASM runtime as well as the scale function chain.

func New

func New[T interfaces.Signature](config *Config[T]) (*Scale[T], error)

func (*Scale[T]) Clear added in v0.4.6

func (r *Scale[T]) Clear()

func (*Scale[T]) Instance

func (r *Scale[T]) Instance(next ...Next[T]) (*Instance[T], error)

Instance returns a new instance of a Scale Function chain with the provided and optional next function.

Directories

Path Synopsis
compile
go
compile Module
Package integration holds integration tests for Scale
Package integration holds integration tests for Scale
Package scalefile implements the ScaleFile type, as well as any helper functions for interacting with ScaleFile types
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 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 signature implements the interfaces, types, and utility functions that can be used by Guest and Host implementations of Scale Signatures.
converter
Package converter generates a polyglot-encoded buffer from a signature schema and a data payload
Package converter generates a polyglot-encoded buffer from a signature schema and a data payload
Package storage is used to store and retrieve built Scale Functions
Package storage is used to store and retrieve built Scale Functions

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL