All Projects → gojisvm → Gojis

gojisvm / Gojis

Licence: mit
An ECMAScript 2018 (ES9) implementation in Go

Programming Languages

javascript
184084 projects - #8 most used programming language
go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Gojis

Tables To Go
convert your database tables to structs easily
Stars: ✭ 62 (-6.06%)
Mutual labels:  golang-application
Openvoiceos
OpenVoiceOS is a minimalistic linux OS bringing the open source voice assistant Mycroft A.I. to embbeded, low-spec headless and/or small (touch)screen devices.
Stars: ✭ 64 (-3.03%)
Mutual labels:  open-source
Neutron
Neutron is a CLI developed to help developers create new react projects with Redux + Redux Saga and offers well-structured code standardization.
Stars: ✭ 65 (-1.52%)
Mutual labels:  open-source
Startbootstrap Grayscale
A multipurpose one page Bootstrap theme created by Start Bootstrap
Stars: ✭ 1,120 (+1596.97%)
Mutual labels:  open-source
Hacktoberfest2019
A repository to contribute to Hacktoberfest 2019
Stars: ✭ 64 (-3.03%)
Mutual labels:  open-source
Pivorak Web App
Rails App for PivorakMeetup
Stars: ✭ 64 (-3.03%)
Mutual labels:  open-source
Secuela Variable
Secuela Sans & Condensed - Variable Font OFL
Stars: ✭ 62 (-6.06%)
Mutual labels:  open-source
Beta
An open source reimplementation of Benny Brodda's BETA in Python
Stars: ✭ 65 (-1.52%)
Mutual labels:  open-source
Nat
nat - the 'ls' replacement you never knew you needed
Stars: ✭ 1,129 (+1610.61%)
Mutual labels:  open-source
Awesome Readme
A guide to writing an Awesome README. Read the full article in Towards Data Science.
Stars: ✭ 65 (-1.52%)
Mutual labels:  open-source
Webuild
📝 Robot-handpicked list of open events and open source for designers, developers and makers in Singapore
Stars: ✭ 62 (-6.06%)
Mutual labels:  open-source
Sapl
Sistema de Apoio ao Processo Legislativo
Stars: ✭ 63 (-4.55%)
Mutual labels:  open-source
Glab
An open-source GitLab command line tool bringing GitLab's cool features to your command line
Stars: ✭ 1,126 (+1606.06%)
Mutual labels:  golang-application
Pkgmirror
Packages Mirroring
Stars: ✭ 62 (-6.06%)
Mutual labels:  golang-application
Ctag Straempler
An open source eurorack sample streaming and sound synthesis module.
Stars: ✭ 65 (-1.52%)
Mutual labels:  open-source
Module 5 Open Research Software And Open Source
Module 5: Open Research Software and Open Source
Stars: ✭ 62 (-6.06%)
Mutual labels:  open-source
Likelo
Twitter auto like bot, Under Development👷, Pre Alpha
Stars: ✭ 64 (-3.03%)
Mutual labels:  golang-application
Shadowsocksfree
Try Yourself.
Stars: ✭ 65 (-1.52%)
Mutual labels:  open-source
One Line Wonders
OneLineWondersCode | 1000+ Commits | 278/300 One Liners | 200+ Forks | Actively maintained open-source collection of "one-line" programs performing various tasks in different languages
Stars: ✭ 65 (-1.52%)
Mutual labels:  open-source
Books
Free Desktop book-keeping software for small-businesses and freelancers.
Stars: ✭ 1,132 (+1615.15%)
Mutual labels:  open-source

Gojis

Pure Go ECMAScript interpreter.





Gojis is an implementation of ECMAScript 2018 (ES 9). It basically is a JavaScript VM, just like Goja or Otto. The documentation can be found here.

Why

Goja and Otto are both stuck at implementing most features of ES 5.1. This implementation aims to support ES 9, and, after that maybe even ES 10 and later.

What is this Gojis VM good for?

The Gojis VM can be run as a standalone, or you can embed it into your Go application by using the API. Go get it with

go get -u github.com/gojisvm/gojis

Use the Go API

// FIXME: the API is in draft mode, this is subject to change at any time

vm := gojis.NewVM()

vm.SetFunction("greet", func(gojis.Args) gojis.Object {
    vm.Eval(`console.log("Hello World!");`)
    return nil
})

vm.Eval(`greet();`)
/*
    prints:
    Hello World!
*/

Use the CLI

$ gojis test.js
Hello, World!
$ gojis ./src
Hello, World! from test1
Hello, World! from test2
Hello, World! from test3
Hello, World! from test4

Use the Docker image

$ docker run -d -v ./src:/src gojisvm/gojis:latest
Hello, World! from test1
Hello, World! from test2
Hello, World! from test3
Hello, World! from test4

For more documentation, please have a look at the API documentation.

What are the goals?

The primary goal of this project is to have fun coding, as I love to code, but thinking about system designs and architectures is difficult. The ECMAScript language specification (which can be found in /docs), takes care of most of these things already, so a contributor can really focus on implementation and optimization.

Another goal I am trying to achieve is, to provide the Go community with a JavaScript VM that supports at least ES 6 features. Goja and Otto are both stuck at implementing ES 5.1, but this implementation does exactly that.

Current status

There is a milestone to keep track of the implementation progress of ES 9.

License

FOSSA Status

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].