Jsish
Paradigm | Multi-paradigm: JavaScript, scripting (glue language), imperative (procedural, prototype-based, object-oriented), functional |
---|---|
Developer | Peter MacDonald |
First appeared | 2015 |
Stable release | |
Typing discipline | dynamic, strong, duck |
Implementation language | C99, or C++ |
OS | Cross-platform |
License | MIT License, libraries are various [1] |
Filename extensions | .jsi |
Website | jsish.org/fossil/jsi (archived){{URL|example.com|optional display text}} |
Influenced by | |
Tcl, SQLite, Fossil, WebSocket |
Search Jsish on Amazon.
JavaScript Interpreter SHell (Jsish or Jsi for short) is a scripting language designed for use in embedded systems.
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[edit]
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[edit]
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:
- The configuration script for Jsi is itself written in Jsi. To achieve this, a minimal standalone
jsish
is first built to bootstrap configuration. - An amalgamated source file is provided to support trivial integration into existing applications.
- The
jsish
binary can be built and statically linked against musl to produce a standalone with no external dependencies.
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[edit]
Jsi implements version 5.1.[6] of the ECMAScript standard, with the following deviations:
- No automatic semicolon insertion.
- Empty array/object elements are not supported.
- It is an error to use
return
inside of atry
/catch
body. - The
Error
object is unimplemented: the argument tocatch()
is just a string. - The
Date
object is unimplemented: usestrftime
/strptime
. - The value of
typeof []
is "array" instead of "object". - UTF is currently not supported.
There is one major extension: function definitions can use types and defaults.
See also[edit]
Other articles of the topic Computer programming : Software release life cycle, Software developer, Programmer
Some use of "" in your query was not closed by a matching "".Some use of "" in your query was not closed by a matching "".
References[edit]
- ↑ "Tags". Retrieved 14 November 2018.
- ↑ "1 check-in tagged with v2.6". Retrieved 14 November 2018.
- ↑ "Jim Tcl". Retrieved 2017-12-01.
- ↑ "Quadwheel". Retrieved 2017-12-01.
- ↑ "LibWebsockets". Retrieved 2017-12-01.
- ↑ "ECMAScript 5.1". Retrieved 2017-12-01.
External links[edit]
- Lua error in Module:Official_website at line 90: attempt to index field 'wikibase' (a nil value).
- jsish on GitHub
This article "Jsish" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Jsish. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.