Jsish

Last updated
Jsi
Jsi Logo.png
Paradigm Multi-paradigm: JavaScript, scripting (glue language), imperative (procedural, prototype-based, object-oriented), functional
Developer Peter MacDonald
First appeared2015;8 years ago (2015)
Stable release
2.6 [1] / October 26, 2018;4 years ago (2018-10-26) [2]
Typing discipline dynamic, strong, duck
Implementation language C99, or C++
OS Cross-platform
License MIT License, libraries are various
Filename extensions .jsi
Website jsish.org/fossil/jsi (archived)
github.com/pcmacdon/jsish
Influenced by
Tcl, SQLite, Fossil, WebSocket

JavaScript Interpreter SHell (Jsish or Jsi for short) is a scripting language designed for use in embedded systems.

Contents

It is a language used primarily by applications written in C or C++ using GNU tool-chains. MinGW provides Windows compatibility.

Jsi code compiles as either C99 or C++, with the C++ support being native instead of "extern C".

History

Jsi was created as an embedded application replacement for Tcl and JimTcl. [3] Its main goal is to provide embedded scripting using a mostly standard syntax (JavaScript), as opposed to the idiosyncratic ones used in Tcl, Lua, and Python. A secondary goal is data compatibility with Web browsers using JSON. Speed is not a major goal.

Life for Jsi started as a fork of the quad-wheel interpreter. [4] Eventually, most of the major internal features of Tcl were added. The current implementation is nearly 10 times the size of the original, and very little of the original code remains.

Features

Jsi comes with builtin support for SQLite, WebSocket, [5] and self-hosting ZIP file-systems. The jsish executable is unusual in that it integrates a self-mounting file system containing builtin utilities and applications. These include Debugger and Web-Server; the latter is used to provide web user-interfaces for Debugger and SQLite. Each of these applications can be accessed via jsish command-line arguments.

Jsi is highly independent:

Scripts and extensions are unusually robust due to functions that support duck typed-parameters. The implementation is mature and has a rich and resilient development environment that includes integrated logging, asserts and strict mode.

As of version 2.4, released in December 2017, Jsi is considered to be feature-stable.

ECMAScript

Jsi implements version 5.1. [6] of the ECMAScript standard, with the following deviations:

There is one major extension: function definitions can use types and defaults.

See also

Related Research Articles

<span class="mw-page-title-main">JavaScript</span> High-level programming language

JavaScript, often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, often incorporating third-party libraries. All major web browsers have a dedicated JavaScript engine to execute the code on users' devices.

ScriptBasic is a scripting language variant of BASIC. The source of the interpreter is available as a C program under the LGPL license.

Bytecode is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects.

ECMAScript is a JavaScript standard intended to ensure the interoperability of web pages across different web browsers. It is standardized by Ecma International in the document ECMA-262.

<span class="mw-page-title-main">SQLite</span> Serverless relational database management system (RDBMS)

SQLite is a database engine written in the C programming language. It is not a standalone app; rather, it is a library that software developers embed in their apps. As such, it belongs to the family of embedded databases. It is the most widely deployed database engine, as it is used by several of the top web browsers, operating systems, mobile phones, and other embedded systems.

JScript is Microsoft's legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer 11 and older.

<span class="mw-page-title-main">Windows Script Host</span> Automation Technology for Windows

The Microsoft Windows Script Host (WSH) is an automation technology for Microsoft Windows operating systems that provides scripting abilities comparable to batch files, but with a wider range of supported features. This tool was first provided on Windows 95 after Build 950a on the installation discs as an optional installation configurable and installable by means of the Control Panel, and then a standard component of Windows 98 and subsequent and Windows NT 4.0 Build 1381 and by means of Service Pack 4. The WSH is also a means of automation for Internet Explorer via the installed WSH engines from IE Version 3.0 onwards; at this time VBScript became means of automation for Microsoft Outlook 97. The WSH is also an optional install provided with a VBScript and JScript engine for Windows CE 3.0 and following and some third-party engines including Rexx and other forms of Basic are also available.

Rhino is a JavaScript engine written fully in Java and managed by the Mozilla Foundation as open source software. It is separate from the SpiderMonkey engine, which is also developed by Mozilla, but written in C++ and used in Mozilla Firefox.

Object Pascal is an extension to the programming language Pascal that provides object-oriented programming (OOP) features such as classes and methods.

JScript .NET is a .NET programming language developed by Microsoft.

<span class="mw-page-title-main">JSON</span> Open standard file format and data interchange

JSON is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays. It is a common data format with diverse uses in electronic data interchange, including that of web applications with servers.

TypeScript is a free and open-source high-level programming language developed by Microsoft that adds static typing with optional type annotations to JavaScript. It is designed for the development of large applications and transpiles to JavaScript. Because TypeScript is a superset of JavaScript, all JavaScript programs are syntactically valid TypeScript, but they can fail to type-check for safety reasons.

Lightweight programming languages are designed to have small memory footprint, are easy to implement, and/or have minimalist syntax and features.

<span class="mw-page-title-main">Scripting language</span> Programming language for run-time events

A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled.

Peter MacDonald is a Canadian software engineer, best known as the creator of Softlanding Linux System (SLS), widely regarded as the first complete Linux distribution. Some of his work served as a foundation of Wine. He also created the Tcl web browser BrowseX, and the PDQI suite of Tcl utilities.

Tcl is a high-level, general-purpose, interpreted, dynamic programming language. It was designed with the goal of being very simple but powerful. Tcl casts everything into the mold of a command, even programming constructs like variable assignment and procedure definition. Tcl supports multiple programming paradigms, including object-oriented, imperative and functional programming or procedural styles.

GraalVM is a Java VM and JDK based on HotSpot/OpenJDK, implemented in Java. It supports additional programming languages and execution modes, like ahead-of-time compilation of Java applications for fast startup and low memory footprint. The first production-ready version, GraalVM 19.0, was released in May 2019. The most recent version is GraalVM 22.1.0, made available in April 2022.

References

  1. "Tags" . Retrieved 14 November 2018.
  2. "1 check-in tagged with v2.6" . Retrieved 14 November 2018.
  3. "Jim Tcl" . Retrieved 1 December 2017.
  4. "Quadwheel" . Retrieved 1 December 2017.
  5. "LibWebsockets" . Retrieved 1 December 2017.
  6. "ECMAScript 5.1" . Retrieved 1 December 2017.