Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: rust runtime #96

Merged
merged 23 commits into from
Aug 31, 2022
Merged

feat: rust runtime #96

merged 23 commits into from
Aug 31, 2022

Conversation

QuiiBz
Copy link
Member

@QuiiBz QuiiBz commented Jul 14, 2022

About

Testing the possibilities to rewrite the runtime in Rust.

Pros:

  • No double GC (Node.js (yes) + V8 (yes) VS Rust (no) + V8 (yes))
  • Should be faster, mostly for the HTTP server in @lagon/serverless
  • Should scale a lot more

Cons:

  • Rust is harder to learn than JS / fewer peoples know it
  • Implicitly means a rewrite of @lagon/serverless and @lagon/cli

@QuiiBz QuiiBz changed the base branch from main to rust August 31, 2022 17:24
@QuiiBz QuiiBz marked this pull request as ready for review August 31, 2022 17:24
@QuiiBz QuiiBz merged commit 2db486f into rust Aug 31, 2022
@QuiiBz QuiiBz deleted the feat/rust-runtime branch August 31, 2022 17:24
@QuiiBz QuiiBz mentioned this pull request Sep 1, 2022
QuiiBz added a commit that referenced this pull request Sep 14, 2022
* feat: rust runtime (#96)

* feat: rust runtime

* feat: log function

* refactor: split tests

* feat: add custom allocator for memory limit

* feat: move to isolate

update

* feat: compile es modules & run handler function

* feat: extract error message

* refactor: single thread & cache handler

* feat: lazy create isolates

* feat: basic request / response

* feat: format

* refactor: clean unused dependencies

* feat: construct request object to v8

* feat: handle response objects

* refactor: rename extract to utils

* refactor: architecture

* feat: add js runtime basics

* feat: start fetch impl

* feat: *very* basic working promises

* refactor: request/response

* refactor: move bindings

* refactor: handle errors for from_v8_response

* feat: handle compilation errors

* refactor: clean

* feat: start serverless deployments logic

* feat: start assets handling

* feat: add assets reading

* test: add some runtime tests

* test: add request tests

* refactor: remove useless comment

* chore: ignore runtime.js in eslint

* feat: add deployments fetching

* feat: download assets

* feat: delete old deployments

* chore: format

* feat: handle get_deployments errors

* chore: ignore deployments folder

* refactor: move fs deployments

* feat: add pub/sub deploy/undeploy

* feat: support environment variables

* feat: add memory and timeout fields

* feat: implement timeout

* test: add timeout test

* chore: format

* feat: add memory reached guards

* test: add memory reached test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant