GoogleChromeLabs / Jsvu

Licence: apache-2.0
JavaScript (engine) Version Updater

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Jsvu

Go Duktape
Duktape JavaScript engine bindings for Go
Stars: ✭ 747 (-37.33%)
Mutual labels:  javascript-engine
Bashful
Use a yaml file to stitch together commands and bash snippits and run them with a bit of style. Why? Because your bash script should be quiet and shy-like (...and not such a loud mouth).
Stars: ✭ 1,018 (-14.6%)
Mutual labels:  installer
Types Installer
Installs @types for your dependencies
Stars: ✭ 64 (-94.63%)
Mutual labels:  installer
Swizzin
A simple, modular seedbox solution
Stars: ✭ 888 (-25.5%)
Mutual labels:  installer
Hack Linux Installer
Install and upgrade the Hack typeface on the Linux platform
Stars: ✭ 14 (-98.83%)
Mutual labels:  installer
Apkupdater
APKUpdater is an open source tool that simplifies the process of finding updates for your installed apps.
Stars: ✭ 1,028 (-13.76%)
Mutual labels:  installer
Calamares
Distribution-independent installer framework
Stars: ✭ 654 (-45.13%)
Mutual labels:  installer
Archlinux Installer
Arch Linux Installer,Install your Arch Linux more quickly
Stars: ✭ 72 (-93.96%)
Mutual labels:  installer
Nvquicksite
nvQuickSite is a desktop installation app for DNN, the world's most popular ASP.NET-based CMS. This app allows you to easily install DNN onto any environment that meets the minimum system requirements for DNN to be installed.
Stars: ✭ 36 (-96.98%)
Mutual labels:  installer
Github
a module for building, searching, installing, managing, and mining Stata packages from GitHub
Stars: ✭ 56 (-95.3%)
Mutual labels:  installer
Baristacore
BaristaCore is a framework for providing a serverless platform using ChakraCore and .Net Core
Stars: ✭ 24 (-97.99%)
Mutual labels:  javascript-engine
Tiny Composer Installer
Small, auditable Composer installer, well suited for automated environments.
Stars: ✭ 9 (-99.24%)
Mutual labels:  installer
Qdd
Download JavaScript Dependencies, really fast
Stars: ✭ 47 (-96.06%)
Mutual labels:  installer
Displaylink Debian
DisplayLink driver installer for Debian and Ubuntu based Linux distributions.
Stars: ✭ 768 (-35.57%)
Mutual labels:  installer
Biddle
Self-hosted application distribution
Stars: ✭ 66 (-94.46%)
Mutual labels:  installer
Busybox
BusyBox for Android
Stars: ✭ 716 (-39.93%)
Mutual labels:  installer
Ghcup Hs
THIS REPO IS A MIRROR, BUG REPORTS GO HERE:
Stars: ✭ 44 (-96.31%)
Mutual labels:  installer
K8s Offline
Offline installation package for kubernetes.
Stars: ✭ 72 (-93.96%)
Mutual labels:  installer
Wordpress Plugin Installer
A PHP class for installing and activating WordPress plugins.
Stars: ✭ 69 (-94.21%)
Mutual labels:  installer
Gcp Pcf Quickstart
Install Pivotal Cloud Foundry on Google Cloud Platform With One Command
Stars: ✭ 54 (-95.47%)
Mutual labels:  installer

jsvu Build status jsvu on npm

jsvu is the JavaScript (engine) Version Updater.

jsvu makes it easy to install recent versions of various JavaScript engines without having to compile them from source.

Installation

Note: jsvu requires Node.js v14+. (jsvu follows the latest active LTS version of Node.)

Install the jsvu CLI:

npm install jsvu -g

Modify your dotfiles (e.g. ~/.bashrc) to add ~/.jsvu to your PATH:

export PATH="${HOME}/.jsvu:${PATH}"

Then, run jsvu:

jsvu

On first run, jsvu prompts you for your operating system and architecture, and the list of JavaScript engines you wish to manage through jsvu. It then downloads and installs the latest version of each of the engines you selected.

To update the installed JavaScript engines later on, just run jsvu again.

Supported engines per OS

JavaScript engine Binary name mac64 win32 win64 linux32 linux64
Chakra chakra or ch
GraalJS graaljs
Hermes hermes & hermes-repl
JavaScriptCore javascriptcore or jsc *
QuickJS quickjs
SpiderMonkey spidermonkey or sm
V8 v8
V8 debug v8-debug
XS xs (32) (32)

* JavaScriptCore requires external dependencies to run on Windows:

  • On 32-bit Windows, install iTunes.
  • On 64-bit Windows, download the latest WinCairoRequirements and add its bin64 directory to your PATH.

Integration with eshost-cli

eshost-cli makes it easy to run and compare code in all JavaScript engines that jsvu installs.

First, install eshost-cli:

npm install -g eshost-cli

Then, either automatically configure jsvu-installed hosts:

eshost --configure-jsvu

…or tell eshost-cli where jsvu installs each JavaScript engine following the instructions below.

Linux/Mac

eshost --add 'Chakra' ch ~/.jsvu/chakra
eshost --add 'GraalJS' graaljs ~/.jsvu/graaljs
eshost --add 'JavaScriptCore' jsc ~/.jsvu/javascriptcore
eshost --add 'QuickJS' qjs ~/.jsvu/quickjs
eshost --add 'SpiderMonkey' jsshell ~/.jsvu/spidermonkey
eshost --add 'V8 --harmony' d8 ~/.jsvu/v8 --args '--harmony'
eshost --add 'V8' d8 ~/.jsvu/v8
eshost --add 'XS' xs ~/.jsvu/xs

Windows

eshost --add "Chakra" ch "%USERPROFILE%\.jsvu\chakra.cmd"
eshost --add "GraalJS" graaljs "%USERPROFILE%\.jsvu\graaljs.cmd"
eshost --add "JavaScriptCore" jsc "%USERPROFILE%\.jsvu\javascriptcore.cmd"
eshost --add "SpiderMonkey" jsshell "%USERPROFILE%\.jsvu\spidermonkey.cmd"
eshost --add "V8 --harmony" d8 "%USERPROFILE%\.jsvu\v8.cmd" --args "--harmony"
eshost --add "V8" d8 "%USERPROFILE%\.jsvu\v8.cmd"
eshost --add "XS" xs "%USERPROFILE%\.jsvu\xs.cmd"

That’s it! You can now run code snippets in all those engines with a single command:

eshost -e 'new RegExp("\n").toString()' # https://crbug.com/v8/1982

eshost -e '(function maxCallStackSize() { try { return 1 + maxCallStackSize(); } catch (_) { return 1; }}())'

eshost -e 'Date.parse("1 Octopus 2018")'

Integration with non-interactive environments

On your personal devices, the only command you’ll ever need is jsvu as described above. There are no command-line flags to remember. 👋🏻

However, there are use cases for running jsvu within non-interactive environments (e.g. as part of continuous integration), where it’s desirable to bypass the initial jsvu prompt asking to confirm your operating system, architecture, and the list of JavaScript engines to install. Here’s how to do that:

jsvu --os=linux64 --engines=all
# Equivalent to:
jsvu --os=linux64 --engines=chakra,graaljs,hermes,javascriptcore,quickjs,spidermonkey,v8,xs

If the operating system and architecture are not known in advance, the --os=default flag attempts to guess the correct value from the running environment. This might not be right for example if running a 32-bit Node.js process on a 64-bit machine.

Note that --engines=all does not install the v8-debug binaries.

Installing specific versions

jsvu also supports installing specific versions alongside the main engine binaries (which it keeps up to date). Here’s an example:

jsvu [email protected]

Binaries installed using this method are named ${BINARY}-${VERSION}, so that the above example installs a binary named v8-7.2.502. This way, there’s never any conflict with the main v8 binary, which jsvu can keep up to date.

This feature works for all the supported engines:

jsvu [email protected]
jsvu [email protected]
jsvu [email protected]
jsvu [email protected]
jsvu [email protected]
jsvu [email protected]
jsvu [email protected]
jsvu [email protected]
jsvu [email protected]

If you pass in an invalid version number, or if the JavaScript engine creators don’t provide a precompiled binary for that specific version, jsvu shows an error.

As a shorthand, for v8 and v8-debug builds, jsvu can even figure out the last known good revision within a milestone. To install the latest available V8 v7.2.x for example, run:

jsvu [email protected]
# jsvu figures out that this means v7.2.502, and then installs that version.

Security considerations

jsvu avoids the need for sudo privileges by installing everything in ~/.jsvu rather than, say, /usr/bin.

jsvu downloads files over HTTPS, and only uses URLs that are controlled by the creators of the JavaScript engine or, in the case of JavaScriptCore on Linux, the port maintainers.

Author

Mathias Bynens (@mathias)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].