Rust runtime for Vercel Functions.

Overview

Rust

Rust runtime for Vercel Functions.

Community-maintained package to support using Rust inside Vercel Functions as a Runtime.

Usage

First, you'll need a vercel.json file in your project:

{
  "functions": {
    "api/**/*.rs": {
      "runtime": "vercel-rust@latest"
    }
  }
}

A Vercel Function will be created for every file that matches api/**/*.rs. Next, you can create a new Function api/user.rs:

use http::{StatusCode};
use vercel_lambda::{lambda, error::VercelError, IntoResponse, Request, Response};
use std::error::Error;

fn handler(_: Request) -> Result<impl IntoResponse, VercelError> {
	let response = Response::builder()
		.status(StatusCode::OK)
		.header("Content-Type", "text/plain")
		.body("Hello World")
		.expect("Internal Server Error");

		Ok(response)
}

// Start the runtime with the handler
fn main() -> Result<(), Box<dyn Error>> {
	Ok(lambda!(handler))
}

Finally, we need an api/Cargo.toml file:

[package]
name = "index"
version = "1.0.0"
authors = ["Your Name <[email protected]>"]
edition = "2018"

[dependencies]
http = "0.1"
vercel_lambda = "*"

[lib]
name = "util"
path = "_util.rs"

Note: Cargo.toml must exist on the same level as the .rs files.

Dependencies

This Builder supports installing dependencies defined in the Cargo.toml file.

Furthermore, more system dependencies can be installed at build time with the presence of a shell build.sh file in the same directory as the entrypoint file.

Local Development

With vercel dev and vercel-rust, you can develop your Rust-based lamdas on your own machine.

During local development with vercel dev, ensure rust and cargo are already installed and available in your PATH, since they will not be installed automatically. The recommended way to install rust and cargo on your machine is with rustup.

Contributing

Since this project contains both Rust and Node.js code, you need to install the relevant dependencies. If you're only working on the JavaScript side, you only need to install those dependencies (and vice-versa).

# install node dependencies
npm install

# install cargo dependencies
cargo fetch

FAQ

Are cargo workspaces supported?

Not quite. Cargo's workspaces feature is a great tool when working on multiple binaries and libraries in a single project. If a cargo workspace is found in the entrypoint, however, vercel-rust will fail to build.

To get around this limitation, create build entries in your vercel.json file for each Cargo.toml that represents a Function within your workspace. In your .vercelignore, you'll want to add any binary or library project folders that aren't needed for your lambdas to speed up the build process like your Cargo.toml workspace.

It's also recommended to have a Cargo.lock alongside your lambda Cargo.toml files to speed up the build process. You can do this by running cargo check or a similar command within each project folder that contains a lambda.

If you have a compelling case for workspaces to be supported by vercel-rust which are too cumbersome with this workaround, please submit an issue! We're always looking for feedback.

Can I use musl/static linking?

Unfortunately, the AWS Lambda Runtime for Rust relies (tangentially) on proc_macro, which won't compile on musl targets. Without musl, all linking must be dynamic. If you have a crate that relies on system libraries like postgres or mysql, you can include those library files with the includeFiles config option and set the proper environment variables, config, etc. that you need to get the library to compile.

For more information, please see this issue.

Comments
  • Improve Documentation + Examples

    Improve Documentation + Examples

    Unless I am missing something it looks like setting up the project as described in the docs does not warrant a working function. By working I mean that there's now way of invoking the function without specifying the routes in the now.json file. If that is the case it could be helpful to others to provide details to setup a complete and working lambda function.

    In addition, most rust repos have example folder. Maybe adding one here could be helpful as well. It would include everything needed for a working rust lambda function.

    Just an idea!

    documentation help wanted good first issue 
    opened by taylorjdawson 13
  • Using now@16.1.1 prints a lot of errors

    Using [email protected] prints a lot of errors

    Describe the bug Using the command now dev with [email protected] prints a lot of file related errors. Mostly "too many open files". It keeps printing that until I kill the process.

    This does not happen with a pre-16 now version, e.g. [email protected]

    To Reproduce

    • Clone example project: https://github.com/cbrevik/now-rust-test/tree/bd68edc3aa2440d17537af0b772770c68cfa21e7
    • Install yarn global add [email protected]
    • Run now dev

    Expected behavior No errors.

    Logs

    Ready! Available at http://localhost:3002 2019-08-19 19:43 node[25928] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22) 2019-08-19 19:43 node[25928] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22) Error! Watcher error: Error: EMFILE: too many open files, watch

    image

    Environment (please complete the following information):

    • rust: stable 1.37.0
    • rust edition: 2018
    • now-rust: latest

    Additional context None.

    question 
    opened by cbrevik 7
  • Cannot access shared libraries

    Cannot access shared libraries

    Note: This was transferred from the official now-builders repo.

    I'm using a library that uses pq-sys, which tries to load libpq at runtime. Whenever the lambda is invoked, it encounters this error:

    /var/task/bootstrap: error while loading shared libraries: libpq.so.5:
    cannot open shared object file: No such file or directory
    

    I'm not familiar with this stuff, but I managed to verify that:

    • libpq.so.5 is located in /usr/lib64
    • LD_LIBRARY_PATH includes /usr/lib64
    • PQ_LIB_DIR includes /usr/lib64

    It seems the lambda is not able access shared libraries at runtime. Here's an example deployment for reference.

    bug 
    opened by mike-engel 6
  • A new home for this project? 😄

    A new home for this project? 😄

    Hey Mike! First off, thank you for taking over with this project and providing an option for users wanting to build functions with Rust on Vercel. We really, really appreciate all of your work. I know that you're now looking for maintainers, and we're going to be putting more effort behind Rust support on Vercel.

    We're started to create a Vercel Community GitHub organization, where we'll support community runtimes like Rust and friends. I've started the process of migrating this repo over to the community (https://github.com/vercel-community/rust)

    Before proceeding further, I just wanted to check in with you and make sure this was okay. I've credited you in the repo 🙏 and would be happy to talk about next steps if you're okay with this!

    opened by leerob 5
  • contents changed in original source code when running now dev

    contents changed in original source code when running now dev

    Note: This was transferred from the official now-builders repo.

    Not sure if I should post this here or in now-cli repo, but here it is:

    When running now dev with @now/rust builder using index.rs entry point, it keeps changing the content of Cargo.toml and index.rs

    Changes in Cargo.toml

    [[bin]]
    name = "index"
    -path = "index.rs"
    +path = "/Users/fatih/dev/paper/services/embed/github/index.rs"
    

    Changes in index.rs

    +use now_lambda::lambda;
    +use std::error::Error;
    
    // my handler code here
    
    +fn main() -> Result<(), Box<dyn Error>> {
    +    Ok(lambda!(handler))
    +}
    

    The problem is I'm not supposed to commit this changes, and I think this change should only be applied in private copy (somewhere in /var/private?).

    Another problem is when running now dev again, it will add another template over and over again, it's possible that I get something like this

    +use now_lambda::lambda;
    +use std::error::Error;
    
    +use now_lambda::lambda;
    +use std::error::Error;
    
    +use now_lambda::lambda;
    +use std::error::Error;
    
    // my handler code here
    
    +fn main() -> Result<(), Box<dyn Error>> {
    +    Ok(lambda!(handler))
    +}
    
    +fn main() -> Result<(), Box<dyn Error>> {
    +    Ok(lambda!(handler))
    +}
    
    
    +fn main() -> Result<(), Box<dyn Error>> {
    +    Ok(lambda!(handler))
    +}
    

    My config

    now.json

    {
      "builders": [
        {
          "src": "services/embed/**/index.rs",
          "use": "@now/rust@canary"
        },
      ]
    }
    

    Version

    ❯ now --version
    15.4.0
    ❯ uname -a
    Darwin TVLK-FatihKalifa.local 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 23:16:27 PDT 2019; root:xnu-4903.261.4~2/RELEASE_X86_64 x86_64
    ❯ cargo --version
    cargo 1.35.0 (6f3e9c367 2019-04-04)
    
    bug 
    opened by mike-engel 5
  • feat: Transparently support pre-configured binaries

    feat: Transparently support pre-configured binaries

    In the event that a binary is already defined for the target entrypoint in Cargo.toml, the associated name is used without rewriting the Cargo.toml file. This approach may be preferable with some development environments that require binaries to be defined in order to perform builds, etc.

    opened by connec 4
  • failed to yum install -y openssl-devel

    failed to yum install -y openssl-devel

    Describe the bug Duplicate of https://github.com/zeit/now/issues/2087 , but happens on the latest vercel CLI

    To Reproduce Steps to reproduce the behavior. Run now dev on example code in README

    Logs

    
    To configure your current shell run source $HOME/.cargo/env
    installing openssl-devel...
    failed to `yum install -y openssl-devel`
    Error: spawn yum ENOENT
        at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19)
        at onErrorNT (internal/child_process.js:469:16)
        at processTicksAndRejections (internal/process/task_queues.js:84:21) {
      errno: 'ENOENT',
      code: 'ENOENT',
      syscall: 'spawn yum',
      path: 'yum',
      spawnargs: [ 'install', '-y', 'openssl-devel' ],
      stdout: null,
      stderr: null,
      failed: true,
      signal: null,
      cmd: 'yum install -y openssl-devel',
      timedOut: false,
      killed: false
    }
    
    

    Environment (please complete the following information):

    $ now --version
    Now CLI 18.0.0
    18.0.0
    $ rustc --version
    rustc 1.43.0 (4fb7144ed 2020-04-20)
    

    Additional context Add any other context about the problem here.

    opened by lilith 4
  • now dev is not working on Windows O.S.

    now dev is not working on Windows O.S.

    Describe the bug A clear and concise description of what the bug is. The error message iss saying ENOENT: no such file or directory, open 'C:\Users\xxxxxxx\api\from-email\target\release\fromemail' It seems that

    1. the .exe extension file is not happened to the binary name
    2. the build script is not testing if the file exists. It is failing at runtime.

    To Reproduce run now dev and now rust on windows OS.

    Expected behavior rust function is working

    Logs error message :

    ENOENT: no such file or directory, open 'C:\Users\xxxxxxx\api\from-email\target\release\fromemail'

    Environment (please complete the following information):

    • rust stable
    • rust edition 2018
    • now-rust latest

    Additional context Add any other context about the problem here.

    opened by corentinway 4
  • Refactor tests to use vercel dev

    Refactor tests to use vercel dev

    Hi!

    As evoked in #31, the tests seamed outdated. I refactored them into using vercel dev.

    This mainly remove the publication requirement. However it seems like vercel dev cannot be used without linking to a project (see https://github.com/vercel/vercel/discussions/4925).

    I kept what was beeing tested and only changed the way around.

    This can also run on GitHub Actions, although it would require a vercel token. (This can be seen here: https://github.com/de-luca/now-rust/actions?query=branch%3Agh)

    opened by de-luca 3
  • [now-rust][wip] Support now-dev

    [now-rust][wip] Support now-dev

    As of right now, now-rust doesn't work very well with now-dev (at all, really). There are several things that need to happen for it to work semi-well.

    • [x] don't compile with --release during dev
    • [ ] watch relevant rust files for changes to re-compile
    • [ ] stop overwriting .rs entrypoints (#3)
    • [ ] windows support (#9)
    bug enhancement 
    opened by mike-engel 3
  • Fix TypeScript errors in the build

    Fix TypeScript errors in the build

    The build is currently failing with:

    ▲  rust/ yarn build
    yarn run v1.22.11
    $ tsc
    src/index.ts:253:9 - error TS2322: Type '{ PATH: string; RUSTFLAGS: string; TZ?: string | undefined; }' is not assignable to type 'Record<string, string>'.
      Property 'TZ' is incompatible with index signature.
        Type 'string | undefined' is not assignable to type 'string'.
          Type 'undefined' is not assignable to type 'string'.
    
    253   const rustEnv: Record<string, string> = {
                ~~~~~~~
    
    src/index.ts:280:11 - error TS2322: Type '{ PATH: string; RUSTFLAGS: string; TZ?: string | undefined; }' is not assignable to type 'Record<string, string>'.
      Property 'TZ' is incompatible with index signature.
        Type 'string | undefined' is not assignable to type 'string'.
          Type 'undefined' is not assignable to type 'string'.
    
    280     const rustEnv: Record<string, string> = {
                  ~~~~~~~
    
    
    Found 4 errors.
    
    opened by leerob 2
  • chore(deps): bump qs from 6.5.2 to 6.5.3

    chore(deps): bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Add message that Rust is currently building to deploy log

    Add message that Rust is currently building to deploy log

    When pushing a project through Git with the Vercel builder, it seems to install the rust builder, but then fail to move past the installation of Rust.

    Screenshot 2022-11-13 at 2 57 45 PM

    The code I use is available here

    It works by rebuilding the project again using the same build cache (since Rust is now installed). I would love this to work in one go though :/

    opened by bram-dingelstad 1
  • chore(deps): bump minimatch from 3.0.4 to 3.1.2

    chore(deps): bump minimatch from 3.0.4 to 3.1.2

    Bumps minimatch from 3.0.4 to 3.1.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • errors crash vercel dev environment

    errors crash vercel dev environment

    This occurs seemingly when trying to rebuild the api endpoint after running vercel dev the first time. The api endpoint works, but when I make a change and save the file, I get the below errors:

    error: could not compile `index` due to previous error
    failed to `cargo build`
    WARN! An error occurred while rebuilding `api/contour`:
    Error: ENOENT: no such file or directory, stat 'C:\Users\AJ\Desktop\Code\anthony\api\Cargo.toml.backup'
    Error! An unexpected error occurred!
    Error: ENOENT: no such file or directory, scandir 'C:\Users\AJ\Desktop\Code\anthony\api\target\debug\incremental\contour-2zjy3mhaakn7z\s-gcwx1x9gsv-1e5ohne-1j9k7entzq47h'
    Error! An unexpected error occurred!
    Error: ENOENT: no such file or directory, scandir 'C:\Users\AJ\Desktop\Code\anthony\api\target\debug\incremental\contour-2zjy3mhaakn7z\s-gcwx1x9gsv-1e5ohne-1j9k7entzq47h
    '```
    opened by pythonicode 0
Releases(3.1.2)
  • 3.1.2(Sep 9, 2021)

    Patches

    • Fix: Destroy stdout and stderr on child vercel process: #50
    • Fix: process.env members could be undefined, abstract into RustEnv type: #49

    Credits

    Huge thanks to @icyJoseph for helping!

    Source code(tar.gz)
    Source code(zip)
  • 3.1.1(Aug 25, 2021)

    Patches

    • Chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9: #40
    • Refactor tests to use vercel dev: #38
    • Chore(deps): bump lodash from 4.17.20 to 4.17.21: #39
    • Chore(deps): bump normalize-url from 4.5.0 to 4.5.1: #42
    • Run Prettier, update license, package info, and README.: #44

    Credits

    Huge thanks to @de-luca for helping!

    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Aug 30, 2020)

  • v2.0.0(Apr 14, 2020)

  • v0.2.6(Aug 1, 2019)

  • v0.2.5(Aug 1, 2019)

    This is the initial release as a community-maintained repository. It includes all the existing data from the old official builder as well as the docs from the zeit builder page.

    For previous version, please see the official builder repo.

    Source code(tar.gz)
    Source code(zip)
Owner
Vercel Community
Develop. Preview. Ship. Creators of Next.js.
Vercel Community
A genetic algorithm for bechmark problems, written to learn Rust.

Genetic Algorithm A genetic algorithm in Rust for the following benchmark problems: Ackley Griewangk Rastrigin Rosenbrock Schwefel Sphere Usage: Insta

Andrew Schwartzmeyer 73 Dec 25, 2022
interative assembly shell written in rust

Overview this project is inspired by https://github.com/poppycompass/asmshell Preview Build from source git clone https://github.com/keystone-engine/k

Xargin 236 Dec 23, 2022
Distributed compute platform implemented in Rust, and powered by Apache Arrow.

Ballista: Distributed Compute Platform Overview Ballista is a distributed compute platform primarily implemented in Rust, powered by Apache Arrow. It

Ballista 2.3k Jan 3, 2023
Userspace WireGuard® Implementation in Rust

BoringTun BoringTun is an implementation of the WireGuard® protocol designed for portability and speed. BoringTun is successfully deployed on millions

Cloudflare 4.8k Jan 8, 2023
Drill is a HTTP load testing application written in Rust inspired by Ansible syntax

Drill Drill is a HTTP load testing application written in Rust. The main goal for this project is to build a really lightweight tool as alternative to

Ferran Basora 1.5k Dec 28, 2022
An experimental HTTP load testing application written in Rust.

Herd Herd was a small side project in building a HTTP load testing application in Rust with a main focus on being easy to use and low on OS level depe

Jacob Clark 100 Dec 27, 2022
A fast data collector in Rust

Flowgger is a fast, simple and lightweight data collector written in Rust. It reads log entries over a given protocol, extracts them, decodes them usi

Amazon Web Services - Labs 739 Jan 7, 2023
kytan: High Performance Peer-to-Peer VPN in Rust

kytan: High Performance Peer-to-Peer VPN kytan is a high performance peer to peer VPN written in Rust. The goal is to to minimize the hassle of config

Chang Lan 368 Dec 31, 2022
A purpose-built proxy for the Linkerd service mesh. Written in Rust.

This repo contains the transparent proxy component of Linkerd2. While the Linkerd2 proxy is heavily influenced by the Linkerd 1.X proxy, it comprises

Linkerd 1.7k Jan 7, 2023
Full fake REST API generator written with Rust

Weld Full fake REST API generator. This project is heavily inspired by json-server, written with rust. Synopsis Our first aim is to generate a fake ap

Seray Uzgur 243 Dec 31, 2022
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

Wez's Terminal A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust User facing docs and guide a

Wez Furlong 6.7k Jan 2, 2023
pastebin written in pure rust. A rewrite of ptpb/pb.

rspb rust fork of ptpb/pb TL;DR Create a new paste from the output of cmd: cmd | curl -F c=@- https://pb.mgt.moe/ Usage Creating pastes > echo hi | c

mgt 39 Jan 4, 2023
The LibreTranslate API for Rust.

libretranslate-rs A LibreTranslate API for Rust. libretranslate = "0.2.4" libretranslate allows you to use open source machine translation in your pr

Grant Handy 51 Jan 5, 2023
Yet another pager in Rust

rust-pager Yet another pager in Rust Features Vim like keybindings Search substring Mouse wheel support Install cargo install rust-pager Usage <comman

null 19 Dec 7, 2022
A Rust serverless function to retrieve and relay a playlist for Twitch livestreams/VODs.

City17 A Rust serverless function to retrieve and relay a playlist for Twitch livestreams/VODs. By running this in specific countries and using a brow

Malloc Voidstar 5 Dec 15, 2021
Fork of async-raft, the Tokio-based Rust implementation of the Raft protocol.

Agreed Fork of async-raft, the Tokio-based Rust implementation of the Raft distributed consensus protocol. Agreed is an implementation of the Raft con

NLV8 Technologies 8 Jul 5, 2022
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Rust API deployed on Vercel.

This project is a Rust API deployed on Vercel. It is designed for users to build Rust code which can then be called using POST requests. This repository is an easy to use Rust-Vercel API that can be amended for your own requirements.

Ellie Sleightholm 3 Feb 28, 2024
Deploy dioxus-web to Vercel.

Dioxus demo This demo shows how to use Dioxus to build a static web application and deploy it to Vercel. Local development To run the demo locally, yo

Zihua Wu 8 Dec 28, 2022
Reverse engineering Vercel's bot protection

vercel-anti-bot Reverse engineering and analysis of Vercel's bot protection used on https://sdk.vercel.ai (and potentially more of their platforms). U

Levi 16 Aug 22, 2023