The Hassle-Free JavaScript Tool Manager

Overview

Volta

The Hassle-Free JavaScript Tool Manager

Production Build Status Test Status

Fast: Install and run any JS tool quickly and seamlessly! Volta is built in Rust and ships as a snappy static binary.

Reliable: Ensure everyone in your project has the same tools—without interfering with their workflow.

Universal: No matter the package manager, Node runtime, or OS, one command is all you need: volta install.

Features

  • Speed 🚀
  • Seamless, per-project version switching
  • Cross-platform support, including Windows and all Unix shells
  • Support for multiple package managers
  • Stable tool installation—no reinstalling on every Node upgrade!
  • Extensibility hooks for site-specific customization

Installing Volta

Read the Getting Started Guide on our website for detailed instructions on how to install Volta.

Using Volta

Read the Understanding Volta Guide on our website for detailed instructions on how to use Volta.

Contributing to Volta

Contributions are always welcome, no matter how large or small. Substantial feature ideas should be proposed as an RFC. Before contributing, please read the code of conduct.

See the Contributing Guide on our website for detailed instructions on how to contribute to Volta.

Who is using Volta?

TypeScript Grafana Sentry Astro

See here for more Volta users.

Comments
  • Support for non-binary global installs

    Support for non-binary global installs

    Volta throws an error Volta error: Global package installs are not supported. on adding a global yarn/npm package. I understand the reasoning for this for projects but a valid use case of global installs are scripts to be run locally outside a project directory, and volta fundamentally breaks this.

    I've seen VOLTA_UNSAFE_GLOBAL env posted, however this still doesn't allow requiring the package globally, so it doesn't really serve as a workaround. Is there any other recourse?

    enhancement 
    opened by andrewplummer 29
  • feat: Initial pnpm support

    feat: Initial pnpm support

    This PR is going to implement the first-class support for the pnpm package manager.

    Thanks to @mikrostew for the well-written https://github.com/volta-cli/rfcs/pull/46, I've been able to implement this feature initially. Most of the critical functionalities have been implemented, except for the global package management. Due to a lack of further details on how to intercept pnpm to relocate its global package installs to fit Volta's current layout.

    Implemented

    • pnpm shim
    • pnpm fetch / install / pin
    • pnpm hooks
    • per project pnpm manipulation
    • volta run with --pnpm and --no-pnpm

    Not Implemented

    • global package manipulation/management via pnpm

    In fact the argument parser for_pnpm() has been introduced to try to intercept pnpm args, but I found that there is no proper way to make pnpm's global installs whose original location is <path to pnpm home>/global/5/node_modules fit Volta's current global package image layout <path to volta home>/tools/image/packages. Hence I intercepted all --global pnpm commands and marked them as unimplemented.

    Trackers

    RFC: https://github.com/volta-cli/rfcs/pull/46 Tracking issue: https://github.com/volta-cli/volta/issues/737

    This is currently a draft PR, please leave your review or comment if you have any ideas to improve the PR to push forward.

    Demo

    ❯ .\target\debug\volta.exe list
    ⚡️ Currently active tools:
    
        Node: v16.16.0 (default)
        npm: v8.15.1 (default)
        pnpm: v7.7.1 (default)
        Yarn: v1.22.19 (default)
        Tool binaries available:
            cleancss (default)
            yarn-deduplicate (default)
    
    See options for more detailed reports by running `volta list --help`.
    DESKTOP in volta on  feature/pnpm [?] is 📦 v1.0.8 via 🦀 v1.62.0
    ❯ .\target\debug\pnpm.exe -h
    Version 7.7.1
    Usage: pnpm [command] [flags]
           pnpm [ -h | --help | -v | --version ]
    
    Manage your dependencies:
          add                  Installs a package and any packages that it depends on. By default, any new package is installed as a prod dependency
          import               Generates a pnpm-lock.yaml from an npm package-lock.json (or npm-shrinkwrap.json) file
       i, install              Install all dependencies for a project
      it, install-test         Runs a pnpm install followed immediately by a pnpm test
      ln, link                 Connect the local project to another one
          prune                Removes extraneous packages
      rb, rebuild              Rebuild a package
      rm, remove               Removes packages from node_modules and from the project's package.json
          unlink               Unlinks a package. Like yarn unlink but pnpm re-installs the dependency after removing the external link
      up, update               Updates packages to their latest version based on the specified range
    
    Review your dependencies:
          audit                Checks for known security issues with the installed packages
      ls, list                 Print all the versions of packages that are installed, as well as their dependencies, in a tree-structure
          outdated             Check for outdated packages
    
    Run your scripts:
          exec                 Executes a shell command in scope of a project
          run                  Runs a defined package script
          start                Runs an arbitrary command specified in the package's "start" property of its "scripts" object
       t, test                 Runs a package's "test" script, if one was provided
    
    Other:
          pack
          publish              Publishes a package to the registry
          root
    
    Manage your store:
          store add            Adds new packages to the pnpm store directly. Does not modify any projects or files outside the store
          store prune          Removes unreferenced (extraneous, orphan) packages from the store
          store status         Checks for modified packages in the store
    
    Options:
      -r, --recursive          Run the command for each project in the workspace.
    DESKTOP in volta on  feature/pnpm [!] is 📦 v1.1.0-alpha.1 via 🦀 v1.62.0
    ❯ .\target\debug\pnpm.exe dlx create-vite vite-project --template vanilla
    .../../../.pnpm-store/v3/tmp/dlx-31720   |   +6 +
    Packages are hard linked from the content-addressable store to the virtual store.
      Content-addressable store is at: D:\.pnpm-store\v3
      Virtual store is at:             ../../../../../.pnpm-store/v3/tmp/dlx-31720/node_modules/.pnpm
    .../../../.pnpm-store/v3/tmp/dlx-31720   | Progress: resolved 6, reused 6, downloaded 0, added 6, done
    
    Scaffolding project in D:\workspace\repos\chawyehsu\volta\vite-project...
    
    Done. Now run:
    
      cd vite-project
      pnpm install
      pnpm run dev
    
    DESKTOP in volta on  feature/pnpm [!?] is 📦 v1.1.0-alpha.1 via 🦀 v1.62.0 took 5s
    ❯ cd vite-project
    DESKTOP in volta\vite-project on  feature/pnpm [!?] via ⬢ v16.16.0
    ❯ ..\target\debug\pnpm.exe i
    Packages: +14
    ++++++++++++++
    Packages are copied from the content-addressable store to the virtual store.
      Content-addressable store is at: D:\.pnpm-store\v3
      Virtual store is at:             node_modules/.pnpm
    node_modules/.pnpm/[email protected]/node_modules/esbuild: Running postinstall script, done in 318ms
    Progress: resolved 34, reused 0, downloaded 14, added 14, done
    
    devDependencies:
    + vite 3.0.4
    DESKTOP in volta\vite-project on  feature/pnpm [!?] via ⬢ v16.16.0
    ❯ ..\target\debug\volta.exe pin node pnpm
    success: pinned [email protected] (with [email protected]) in package.json
    success: pinned [email protected] in package.json
    DESKTOP in volta\vite-project on  feature/pnpm [!?] via ⬢ v16.16.0 took 3s
    ❯ cat .\package.json
    {
      "name": "vite-project",
      "private": true,
      "version": "0.0.0",
      "type": "module",
      "scripts": {
        "dev": "vite",
        "build": "vite build",
        "preview": "vite preview"
      },
      "devDependencies": {
        "vite": "^3.0.0"
      },
      "volta": {
        "node": "16.16.0",
        "pnpm": "7.7.1"
      }
    }
    DESKTOP in volta\vite-project on  feature/pnpm [!?] via ⬢ v16.16.0
    ❯ ..\target\debug\pnpm.exe --version
    7.7.1
    DESKTOP in volta\vite-project on  feature/pnpm [!?] via ⬢ v16.16.0
    ❯
    
    opened by chawyehsu 21
  • Is it possible to manually set the default node version?

    Is it possible to manually set the default node version?

    My intention was to have my first volta install node be the default moving forward. I then went ahead and installed another version I wanted to use in another project and that became my default. Is there a way to manually set the global default version?

    opened by FreeMasen 21
  • Fix Windows Shim Issues and Add Full Windows Installer

    Fix Windows Shim Issues and Add Full Windows Installer

    Closes #102 Closes #52 Closes #20 Closes #329

    Info

    • There wasn't a Windows installer that actually got the system into a usable state with the changes that have been made to Notion since the installer was initially created.
    • There were also some issues causing Notion to not actually work in Windows:
      • The node zip file has a different structure than the *nix tarball, without the intervening lib directory.
      • We need to execute the scripts on Windows using cmd.exe /C <TOOL>, instead of just <TOOL>
      • In PowerShell on Windows, the arg0 path includes .exe, but when we want to execute one of the tools, we don't want to call e.g. npm.exe, since npm is a script, not an executable.

    Changes

    • Added main.wxs XML file for building the Installer with cargo wix, including creating the necessary directory structure and removing the installed binary files on uninstall.
    • Moved node_archive_npm_package_json_path to the OS-specific modules to represent the fact that the Windows archive has a different directory structure than the *nix archive.
      • Also updated the acceptance test fixtures for the Windows .zip files to represent the correct structure.
    • Refactored the creation of std::process::Command objects into a module that handles the platform-specific addition of cmd.exe /C.
    • Updated logic for getting the tool name from arg0 to remove any .exe suffixes on Windows.
    • Removed old dev/windows scripts in favor of cargo wix.
    • Added logic for determining if a 3rd party package is a script with a shebang loader and recording that information.
    • If a loader is found, when executing the script, call <loader> <tool> <args> instead of <tool> <args>

    Tested

    • Built the Windows installer using cargo wix.
    • Verified that the installer correctly installs and uninstalls Notion.
    • After install, verified that notion install node and notion install yarn work correctly.
    • Verified that notion, node, npm, npx, and yarn can be executed in the Command Prompt, PowerShell, and Git Bash.

    Notes

    • Building the Windows Installer requires the WiX Toolset and cargo-wix (cargo install cargo-wix). Once those are installed, you can build the installer using cargo wix in the root of the project.
    • The UI for the Installer is very minimal and doesn't include any Notion images at the moment. There are comments in main.wxs about how to add the Welcome Image and the Banner image, as well as the Icon for the program in the "Add / Remove Programs" screen. Related to #8
    • An issue was found with Git Bash (MinGW emulated Bash prompt), causing the shims to 3rd party binaries to not execute correctly. A hacky workaround was added (described in the comments here), but if anyone can come up with a better solution, that would be appreciated.
    opened by charlespierce 20
  • Add fish support 🐟

    Add fish support 🐟

    This PR builds on the work @scalvert started in #171 to add full fish support to Notion.

    • closes #171
    • resolves #152

    Testing

    1. Check out this branch locally. If you're using hub, hub pr checkout 266. (If you're not using hub… you should do that thing. And also alias it to git to make your life wonderful.)

    2. Create a release build: cargo build --release.

    3. Do the equivalent of running the install script: ./dev/unix/build.sh; and ./dev/unix/install.sh.

    4. Open a new shell, or refresh your current shell with the updated config: source ~/.config/fish/config.fish.

    Then you should be able to use Notion!

    opened by chriskrycho 20
  • Volta fails to set executable for node/yarn on Mac OS

    Volta fails to set executable for node/yarn on Mac OS

    It seems that install volta when using a fish shell, the executables do not get properly set. Therefore, my system version is either non-existent or it uses a version from a previous workflow.

    As a temporary work around, I copied the executables found in ~/.volta/bin/ to /usr/local/bin/. But this breaks down when using volta for multiple projects, with different versions.

    bug 
    opened by kingscott 19
  • monorepo support

    monorepo support

    In a monorepo I'd like a way to have a single source of truth for what versions are pinned. Can we have a way of extending notion config within a sub-project? E.g.

    {
      "toolchain": {
        "extends": "../../package.json"
      }
    }
    

    This would still allow for overrides on a per-project basis but simplify the common case within a monorepo.

    needs RFC 
    opened by chriseppstein 18
  • Support OpenSSL 1.0 and 1.1

    Support OpenSSL 1.0 and 1.1

    After installation on ubuntu. I receive this message and notion don't start.

    error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory

    Any idea why ?

    infrastructure automation 
    opened by gilles-bertrand 18
  • Support ARM builds for macOS

    Support ARM builds for macOS

    At WWDC 2020, Apple announced upcoming Macs will ship with ARM processors. We'll want to add support for those as soon as makes good sense:

    • when Rust itself supports the target architecture
    • once someone has a dev kit we can use for testing (this may end up being me, since I have interest for side projects)

    This is currently blocked:

    • Rust support should come quickly, since Apple's ARM 64 targets are already in the general support matrix—but are currently Tier 2 targets per the Forge, and Rust will need to do some work to bump that up to a Tier 1 support category. (Presumably the existing aarch64-apple-ios is the same architecture, which could make an interesting situation name-wise. 😂)
    • Getting a dev kit is a matter of applying for one and being approved. I'll investigate on that front since it's potentially of interest to me anyway.
    enhancement automation mac 
    opened by chriskrycho 16
  • Improve platform support

    Improve platform support

    This pull request extends #1130 by implementing the requested changes and making sure things work on Linux ( arm64 -> aarch64 )

    Requested changes that were implemented

    • Redundant comments in ./ci/docker/Dockerfile.centos8 were removed
    • $arch_str backwards compatibility: the public download URL's haven't changed at all, the ARM versions now append a -aarch64 suffix while the x86 versions do not have this suffix, to stay backwards compatible. This has also been extended to the volta-install.sh file, which only adds the suffix to the download url if the platform is aarch64.

    Unsolved questions

    (@charlespierce): Given that the arm64 builds take so long, is there a way we can lock them in the same way as the final Publish release job, so that they only run when we're actually publishing a new version? My worry is that currently this build is part of the CI check for PRs and I don't want to run into a spot where every PR is gated on a build that takes ~2 hours. This is possible if we split out the ARM build into a separate CI job instead of using a matrix. I've made that change here, but if this is not preferred ( not DRY, but CI files are never really DRY anyway ), let me know.

    Most of the changes were made by @vanstinator, and his commits have been preserved in this PR such that he is credited properly for his work. I made this separate PR to speed up the process to getting these changes released.

    Reviews would be massively appreciated 🙏

    opened by jensmeindertsma 15
  • chore: upgrade console, indicatif to avoid building parking_lot entirely

    chore: upgrade console, indicatif to avoid building parking_lot entirely

    As mentioned here, you can avoid building parking_lot entirely if you upgrade console, indicatif, and reqwest.

    Since reqwest has been swapped out in https://github.com/volta-cli/volta/pull/733 (this PR builds on top of that) and the new stuff doesn't require it, this is now possible. Honestly it's not really that much more to build, but it is completely unnecessary.

    Also @charlespierce, it looks like the lockfile is stale, so feel free to cherry-pick e9599ce and see if you get any improvements there too? Here are some cargo trees you can reproduce:

    before regeneration (5af6691): https://gist.github.com/joshuarli/9bb2968b764e7a747a78b6697faae39b

    after (e9599ce): https://gist.github.com/joshuarli/9289bcbcf5233b93fa7701fbe9faa925

    after upgrade (8fb6e2d): https://gist.github.com/joshuarli/7a973b26a518c33de45a040ad3a79bb1

    opened by joshuarli 15
  • build(deps): bump once_cell from 1.16.0 to 1.17.0

    build(deps): bump once_cell from 1.16.0 to 1.17.0

    Bumps once_cell from 1.16.0 to 1.17.0.

    Changelog

    Sourced from once_cell's changelog.

    1.17.0

    • Add race::OnceRef for storing a &'a T.
    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)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump console from 0.15.2 to 0.15.3

    build(deps): bump console from 0.15.2 to 0.15.3

    Bumps console from 0.15.2 to 0.15.3.

    Changelog

    Sourced from console's changelog.

    0.15.3

    Enhancements

    • Dropped terminal_size dependency.
    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)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump serde from 1.0.151 to 1.0.152

    build(deps): bump serde from 1.0.151 to 1.0.152

    Bumps serde from 1.0.151 to 1.0.152.

    Release notes

    Sourced from serde's releases.

    v1.0.152

    • Documentation improvements
    Commits
    • ccf9c6f Release 1.0.152
    • b25d0ea Link to Hjson data format
    • 4f4557f Link to bencode data format
    • bf400d6 Link to serde_tokenstream data format
    • 4d2e36d Wrap flexbuffers bullet point to 80 columns
    • df6310e Merge pull request #2347 from dtolnay/docsrs
    • 938ab5d Replace docs.serde.rs links with intra-rustdoc links
    • ef5a0de Point documentation links to docs.rs instead of docs.serde.rs
    • 5d186c7 Opt out -Zrustdoc-scrape-examples on docs.rs
    • See full diff 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)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump serde_json from 1.0.89 to 1.0.91

    build(deps): bump serde_json from 1.0.89 to 1.0.91

    Bumps serde_json from 1.0.89 to 1.0.91.

    Release notes

    Sourced from serde_json's releases.

    v1.0.90

    • Documentation improvements
    Commits
    • 26f147f Release 1.0.91
    • d9cdb98 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 331511d Release 1.0.90
    • 8753829 Replace ancient CI service provider in readme
    • 0a43394 Update build status badge
    • 8794844 Prevent build.rs rerunning unnecessarily on all source changes
    • 0b54871 Time out workflows after 45 minutes
    • ecad462 Fix renamed let_underscore_drop lint
    • 9295c96 Resolve needless_borrowed_reference clippy lints
    • See full diff 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)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump thiserror from 1.0.37 to 1.0.38

    build(deps): bump thiserror from 1.0.37 to 1.0.38

    Bumps thiserror from 1.0.37 to 1.0.38.

    Release notes

    Sourced from thiserror's releases.

    1.0.38

    • Documentation improvements
    Commits
    • 74bfe75 Release 1.0.38
    • cfc7d8c Update build status badge
    • db78fa2 Update ui test suite to nightly-2022-12-15
    • c25a710 Time out workflows after 45 minutes
    • 464e2e7 Merge pull request #200 from dtolnay/displayattr
    • 4b06a3e Add test of Display impl nested inside display attribute
    • 29ee95e Ui test changes for trybuild 1.0.66
    • See full diff 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)
    dependencies 
    opened by dependabot[bot] 0
  • Replacing shim file symlink by a

    Replacing shim file symlink by a "lightweight shim" copy

    Solves issue https://github.com/volta-cli/volta/issues/1397 for files.

    PS: I'm not a Rust developer and I did my best but I know this code must have some serious issues that I'll be happy to solve,

    opened by rcsilva83 0
Releases(v1.1.0)
Owner
Volta: Start your engines. ⚡
Volta: Start your engines. ⚡
The JavaScript runtime that aims for productivity and ease

Byte Byte is a easy and productive runtime for Javascript . It makes making complex programs simple and easy-to-scale with its large and fast Rust API

Byte 32 Jun 16, 2021
A JavaScript Runtime built with Mozilla's SpiderMonkey Engine and Rust

Spiderfire Spiderfire is a javascript runtime built with Mozilla's SpiderMonkey engine and Rust. Spiderfire aims to disrupt the server-side javascript

Redfire 122 Dec 15, 2022
Guarding 是一个用于 Java、JavaScript、Rust、Golang 等语言的架构守护工具。借助于易于理解的 DSL,来编写守护规则。Guarding is a guardians for code, architecture, layered.

Guarding Guarding is a guardians for code, architecture, layered. Using git hooks and DSL for design guard rules. Usage install cargo install guarding

Inherd OS Team (硬核开源小组) 47 Dec 5, 2022
Javascript wrapper bindings for diamond types

Diamond JS wrapper library This is a javascript / WASM wrapper around diamond types. This code is currently experimental WIP. Do not trust this for an

Seph Gentle 14 Jun 16, 2022
A programming environment that aims to help people learn how to program in JavaScript, while giving them a tour on how old computers and their limitations used to be.

This repository is for the new under renovation rewrite of the LIKO-12 project. The legacy version with the original stars and contributions is still

null 1k Jan 5, 2023
Diamond is a minimalistic, powerful, and modern Javascript runtime that uses Deno_Core.

Diamond Diamond is a minimalistic, powerful, and modern Javascript runtime that uses Deno_Core. Installation Diamond is currently in beta(not even Alp

Catermelon 4 Aug 30, 2021
Modern JavaScript runtime for Sony PSP, based on rust-psp and QuickJS.

PSP.js Modern JavaScript runtime for Sony PSP, based on rust-psp and QuickJS. ⚠️ Currently in PoC state, unusable for developing JavaScript apps yet.

Yifeng Wang 15 Nov 28, 2022
Node.js bindings to the ripgrep library, for fast file searching in JavaScript without child processes!

ripgrepjs ripgrepjs: Node.js bindings to the ripgrep library, for direct integration with JS programs without spawning an extra subprocess! This proje

Annika 1 May 10, 2022
A simple programming language made for scripting inspired on rust and javascript.

FnXY Programming Language Quick move: CONTRIBUTING | LICENSE What? FnXY is a simple programming language made for scripting inspired on rust and javas

null 2 Nov 27, 2021
A Lean Secure Runtime for JavaScript

Tera tera is a lean secure capability-based runtime for JavaScript. It is primarily designed for multi-tenant serverless environment but has uses in o

Gigamono 7 Oct 7, 2022
swc is a super-fast compiler written in rust; producing widely-supported javascript from modern standards and typescript.

Make the web (development) faster. SWC (stands for Speedy Web Compiler) is a super-fast TypeScript / JavaScript compiler written in Rust. It's a libra

swc 25.4k Dec 31, 2022
Livny is a modern JavaScript and TypeScript runtime built on top of Rust

Livny is a modern JavaScript and TypeScript runtime built on top of Rust, Golang and the GraalVM Polyglot infrastructure that can run all of Deno and Node.jS applications. It is fine-tuned for user satisfaction, performance and security.

LivnyJS 1 Mar 2, 2022
Low level tooling for WebAssembly in JavaScript using wasm-tools

js-wasm-tools js-wasm-tools compiles some of the API of wasm-tools to JavaScript and WebAssembly via wasm-bindgen. This offers low level tooling for W

Dominic Elm 59 Dec 19, 2022
Rust bindings for Supabase JavaScript library via WebAssembly.

supabase-js-rs Rust bindings for Supabase JavaScript library via WebAssembly. Usage Add supabase-js-rs to Cargo.toml supabase-js-rs = { version = "0.1

Valery Stepanov 8 Jan 13, 2023
Implementation of malloc, realloc, calloc, and free in Rust.

malloc-rs Implementation of malloc, realloc, calloc, and free in Rust. Note: No thread safe Architecture 512 bytes or less is allocated by Segregated

suzu 7 Nov 23, 2022
🚀 Fast and simple Node.js version manager, built in Rust

Fast Node Manager (fnm) ?? Fast and simple Node.js version manager, built in Rust Features ?? Cross-platform support (macOS, Windows, Linux) ✨ Single

Gal Schlezinger 9.8k Jan 2, 2023
📦✨ your favorite rust -> wasm workflow tool!

?? ✨ wasm-pack Your favorite Rust → Wasm workflow tool! Docs | Contributing | Chat Built with ?? ?? by The Rust and WebAssembly Working Group About Th

Rust and WebAssembly 4.8k Jan 5, 2023
This tool converts Lua code to TS automatically, including the conversion of common standards to their TS equivalents.

lua-to-ts This tool converts Lua code to TS automatically, including the conversion of common standards to their TS equivalents. Code that fails to be

Dion 11 Nov 21, 2022
zzhack-cli is a Command Tool to help you quickly generate a WASM WebApp with simple configuration and zero code

English | 中文文档 zzhack-cli is a Command Tool that can help you quickly generate a WASM WebApp with simple configuration and zero code. It's worth menti

null 17 Feb 9, 2023