GithubHelp home page GithubHelp logo

jse's Introduction

About JSE

Hypersoft-Systems: U.-S.-A.: JSE (Java-Script-Engine) is a free (as in cost of purchase) and open-source computer software project for executing shell-scripts written in JavaScript as full-fledged-software-programs within a Linux Operating System environment.

JSE is conceptualized and maintained by Hypersoft-Systems: U.-S.-A. (Triston J.Taylor).

Donations in support of this project are welcome and are processed via pay-pal.

In general, JSE IS a full-fledged-application-development-suite. If JSE does not have the functionality you require built-in, you can simply create a plugin written in the C programming language (or compatible) to provide the needed functionality. In fact, JSE itself is built on the use of plugins and scripts to provide all of its core functionalities.

Design Methodology

  • Let JavaScript do Unix things, in The Unix Way
  • JavaScript interpretation as a System Level coding package
  • HTML Browsing as a System Level application package
  • Zero external runtime environment support requirements (package tools, script-libraries, etc.)

Technology

JSE itself, depends upon several technologies to achieve its design goals.

  • WebKitGTK+ 4.0 (for JavaScript interpretation and HTML Rendering)
  • DynCall 0.8 [built-in]
  • GNU ReadLine (for interactive-sessions)
  • GCC (C compiler and linker suite)
  • GNU Make
  • BSD pkgconf (also known as pkg-config)

JSE's build environment adds a few requirements:

  • Bash Shell 4.0+
  • wget [to download the DynCall library package and documentation]
  • Git [if you use software revision control]
  • Tar and Zip support [for unpacking the DynCall archive and creating archives]

Licensing

JSE has a host of licensing options for you to choose from. The project does not wish for legal issues to be the cause of not using JSE, so the license for JSE is very loose. Please review the licensing for all other included technologies, if you are experiencing a legal permissions issue.

Features

JSE provides many features to enhance your ability to write JavaScript based shell-scripts and HTML Applications for the Linux platform. You can use JSE to do any of the following:

  • Write Basic JavaScripts (With JSE's Shell support)
  • Write Advanced JavaScripts (Using shared-system-libraries and JSE Plugins)
  • Create, Design and Debug: HTML Applications (with Advanced or Basic JavaScripting support)
  • Interactive Session (basic-example)

Over the Internet Pre-release (3.1; testing) Installation Script

You can very easily add JSE support to your OS with the following script, provided you meet the system requirements.

wget -O jse.zip https://github.com/hypersoft/jse/archive/3.1.zip &&
unzip jse.zip &&
mv jse-3.1 jse &&
cd jse &&
make && sudo make install && demo/testbed;

Over the Internet Live (unstable) Installation Script

You can very easily add JSE support to your OS with the following script, provided you meet the system requirements.

wget -O jse.zip https://github.com/hypersoft/jse/archive/master.zip &&
unzip jse.zip &&
mv jse-master jse &&
cd jse &&
make && sudo make install && demo/testbed;

HTML Applications

HTML Applications can greatly improve your productivity. HTML Applications backed by JSE have truly unlimited power and flexibility.

This Screenshot demonstrates the Awesomeness of JSE and its Ghtml counter-part. The application shown within Ghtml is a manual JavaScript testing application which is distributed with the source code of JSE, and can be found in the ./test folder.

Ghtml Testbed Screenshot

Powerful applications can easily be written in no-time-at-all using JSE and Ghtml. To execute the application shown in the Screenshot yourself, simply run:

$ demo/testbed

from a terminal session within the project's root directory after compiling and installing the project.

Security

JSE is a formidable coding platform. So formidable that it could INSTANTLY be as dangerous as allowing full command access to a C compiler. To protect host systems, JSE employs a simple-file-system-security-contract:

  • Pipes will not be executed with enhanced execution features or plugins
  • A user must have execute permission on the file being executed to enable enhanced execution features and plugins

Note: A developer may specify that remote content be loaded, from within an executable file. This is an intentional security leak on behalf of the execution of the developer's implementation. Neither Ghtml nor JSE will attempt to prohibit downloading or execution of remote content, and no sand-boxing-implementation of mixed content is provided by this project at this time.


Recommended Reading for Script Writers

jse's People

Contributors

hypersoft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

jse's Issues

Parameter SEGFAULT

A segmentation fault can occur with any native procedure that expects a value that can be converted to string or number, but the value is not converted to string or number, resulting in a null pointer being passed to a procedure or set of statements that may not be able to accept one. This is likely to happen when uncaught exceptions are thrown during value conversions.

JSE doesn't 'already' handle these issues, because these happenings are how we learn how the engine operates in the real world.

javascriptcoregtk-3.0: Extreme Leak Potential

void Finalize(JSObjectRef object);

The finalize callback is called on the most derived class first, 
and the least derived class (the parent class) last.

You must not call any function that may cause a garbage
collection or an allocation of a garbage collected object 
from within a JSObjectFinalizeCallback. This  includes
 all functions that have a JSContextRef parameter.

typedef void (*JSObjectFinalizeCallback) (JSObjectRef object);

This API did not meet the test objectives. Furthermore research for a working prototype providing proof of work performed using this callback interface did not produce any conclusive results. WebKit developer's have been notified of this issue, but since it is highly important, and they failed to meet production parameters in this instance, the best case scenario is to go forward with the Global Allocator object approach, to keep track of allocated data.

This is not a drawback, its actually a benefit. We are separating the interface from the implementation, thusly we can be as robust and stupid as required for a general application profile.

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.