https://github.com/loopholelabs/scale
A framework for building high-performance plugin systems into any application, powered by WebAssembly.
https://github.com/loopholelabs/scale
browser functions go javascript js node plugin runtime rust scale sdk typescript wasm webassembly
Last synced: about 1 month ago
JSON representation
A framework for building high-performance plugin systems into any application, powered by WebAssembly.
- Host: GitHub
- URL: https://github.com/loopholelabs/scale
- Owner: loopholelabs
- License: apache-2.0
- Created: 2022-10-14T18:31:34.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-18T02:55:02.000Z (7 months ago)
- Last Synced: 2025-04-10T06:33:20.783Z (3 months ago)
- Topics: browser, functions, go, javascript, js, node, plugin, runtime, rust, scale, sdk, typescript, wasm, webassembly
- Language: C
- Homepage: https://scale.sh
- Size: 211 MB
- Stars: 523
- Watchers: 5
- Forks: 17
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
![]()
A framework for building high-performance plugin systems into any application, all powered by WebAssembly.
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://loopholelabs.io/discord)With [Scale Functions](https://scale.sh) 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](https://golang.org), [Rust](https://www.rust-lang.org/), and [Typescript](https://www.typescriptlang.org/), with the Runtime supporting [Golang](https://golang.org) and [Typescript](https://www.typescriptlang.org/) host applications.
## Getting Started
First, install the [CLI](https://scale.sh/docs/getting-started/quick-start#install-the-scale-cli).
Create a new function, passing `:` to the `new` command:
```bash
scale new hello:1.0
```The following files will be generated:
```yaml
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
//go:build tinygo || js || wasm
package scaleimport (
signature "github.com/loopholelabs/scale-signature-http"
)func Scale(ctx *signature.Context) (*signature.Context, error) {
ctx.Response().SetBody("Hello, World!")
return ctx.Next()
}
``````Go
module scalego 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](https://scale.sh/docs/getting-started/quick-start#create-a-new-function).
Build the above function:
```bash
scale function build
```
And run:```bash
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](https://scale.sh/docs/languages/golang/overview#guest-support), [embedded in other language's apps](https://scale.sh/docs/languages/javascript-typescript/overview#embedding-scale-functions), and used independently. For more information, as well as usage with other supported
language, including Rust and TypeScript/JavaScript, see the [documentation](https://scale.sh/docs).## Documentation
Full instructions and documentation for Scale is available at [https://scale.sh/docs](https://scale.sh/docs).
## Contributing
Bug reports and pull requests are welcome on GitHub at [https://github.com/loopholelabs/scale][gitrepo]. For more
contribution information check
out [the contribution guide](https://github.com/loopholelabs/scale/blob/main/CONTRIBUTING.md).## License
The Scale project is available as open source under the terms of
the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-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](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
## Project Managed By:
[![https://loopholelabs.io][loopholelabs]](https://loopholelabs.io)
[gitrepo]: https://github.com/loopholelabs/scale
[loopholelabs]: https://cdn.loopholelabs.io/loopholelabs/LoopholeLabsLogo.svg
[loophomepage]: https://loopholelabs.io