GithubHelp home page GithubHelp logo

doytsujin / rhino-1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mozilla/rhino

0.0 1.0 0.0 25.35 MB

Rhino is an open-source implementation of JavaScript written entirely in Java

Home Page: https://www.mozilla.org/rhino/

License: Other

Java 33.09% HTML 0.14% JavaScript 65.54% Shell 0.34% Makefile 0.03% Perl 0.86%

rhino-1's Introduction

Rhino: JavaScript in Java

Rhino (234581759)

Rhino is an implementation of JavaScript in Java.

License

Rhino is licensed under the MPL 2.0.

Releases

Rhino 1.7R5January 29, 2015
Rhino 1.7.6April 15, 2015
Rhino 1.7.7June 17, 2015
Rhino 1.7.7.1February 2, 2016
Rhino 1.7.7.2August 24, 2017
Rhino 1.7.8January 22, 2018
Rhino 1.7.9March 15, 2018
Rhino 1.7.10April 9, 2018
Rhino 1.7.11May 30, 2019
Rhino 1.7.12January 13, 2020
Rhino 1.7.13September 2, 2020
Rhino 1.7.14January 6, 2022

Release Notes for recent releases.

Compatibility table which shows which advanced JavaScript features from ES6, and ES2016+ are implemented in Rhino.

GitHub Action Status

Mozilla

Documentation

Information for script builders and embedders:

Archived

JavaDoc for all the APIs:

https://javadoc.io/doc/org.mozilla/rhino

More resources if you get stuck:

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Community

Building

How to Build

Rhino builds with Gradle. Here are some useful tasks:

./gradlew jar

Build and create Rhino jar in the buildGradle/libs directory.

git submodule init
git submodule update
./gradlew test

Build and run all the tests, including the official ECMAScript Test Suite. See Running tests for more detailed info about running tests.

./gradlew testBenchmark

Build and run benchmark tests.

Releasing and publishing new version

  1. Ensure all tests are passing
  2. Remove -SNAPSHOT from version in gradle.properties in project root folder
  3. Create file gradle.properties in $HOME/.gradle folder with following properties. Populate them with maven repo credentials and repo location.
mavenUser=
mavenPassword=
mavenSnapshotRepo=
mavenReleaseRepo=
  1. Run Gradle task to publish artifacts to Maven Central.
./gradlew publish
  1. Increase version and add -SNAPSHOT to it in gradle.properties in project root folder.
  2. Push gradle.properties to GitHub

Running

Rhino can run as a stand-alone interpreter from the command line:

java -jar buildGradle/libs/rhino-1.7.12.jar -debug -version 200
Rhino 1.7.9 2018 03 15
js> print('Hello, World!');
Hello, World!
js>

There is also a "rhino" package for many Linux distributions as well as Homebrew for the Mac.

You can also embed it, as most people do. See below for more docs.

Java 16 and later

If you are using a modular JDK that disallows the reflective access to non-public fields (16 and later), you may need to configure the JVM with the --add-opens option to authorize the packages that your scripts shall use, for example:

--add-opens java.desktop/javax.swing.table=ALL-UNNAMED

Issues

Most issues are managed on GitHub:

https://github.com/mozilla/rhino/issues

Contributing PRs

To submit a new PR, please use the following process:

  • Ensure that your entire build passes "./gradlew check". This will include code formatting and style checks and runs the tests.
  • Please write tests for what you fixed, unless you can show us that existing tests cover the changes. Use existing tests, such as those in "testsrc/org/mozilla/javascript/tests", as a guide.
  • If you fixed ECMAScript spec compatibility, take a look at test262.properties and see if you can un-disable some tests.
  • Push your change to GitHub and open a pull request.
  • Please be patient as Rhino is only maintained by volunteers and we may need some time to get back to you.
  • Thank you for contributing!

Code Formatting

Code formatting was introduced in 2021. The "spotless" plugin will fail your build if you have changed any files that have not yet been reformatted. Please use "spotlessApply" to reformat the necessary files.

If you are the first person to touch a big file that spotless wants to make hundreds of lines of changes to, please try to put the reformatting changes alone into a single Git commit so that we can separate reformatting changes from more substantive changes.

Warning: If you build with Java 16 or later, you need to apply a workaround for a "spotless" issue. Otherwise, the task will be disabled and your PR may fail.

The following must be added to your gradle.properties.

org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED

For more details, see diffplug/spotless#834 (comment)

More Help

The Google group is the best place to go with questions:

https://groups.google.com/forum/#!forum/mozilla-rhino

rhino-1's People

Contributors

ibukanov avatar norrisboyd avatar hns avatar rbri avatar szegedi avatar gbrail avatar tuchida avatar eshepelyuk avatar anba avatar p-bakker avatar rpraml avatar tonygermano avatar sainaen avatar carlosame avatar stijnkliemesch avatar tntim96 avatar syjer avatar youngj avatar msmhrt avatar maxistekfield avatar ebourg avatar sideshowbarker avatar kitsoleksandrmaksymenko avatar travisennis avatar msridhar avatar ianso avatar asashour avatar samiashi avatar raphj avatar nename0 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.