Bug#1020861: RFP: ucode -- tiny general purpose scripting language featuring a syntax closely resembling ECMAScript
Package: wnpp
Severity: wishlist
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
* Package name : ucode
Version : v0.0.20220824
Upstream Author : Jo-Philipp Wich <jo@mein.io>
* URL : https://github.com/jow-/ucode
* License : ISC
Programming Lang: C
Description : tiny general purpose scripting language featuring a syntax closely resembling ECMAScript
Long description
================
The ucode language is a tiny general purpose scripting language featuring a syntax closely resembling ECMAScript.
It can be used in a stand-alone manner by using the ucode command line interpreter or embedded into host applications by linking libucode and utilizing its C language API.
Additionally, ucode can be invoked in template mode where control flow and expression logic statements are embedded in Jinja-like markup blocks.
Besides aiming for small size, the major design goals of ucode are the ability to trivially read and write JSON data, good embeddability into C applications, template capabilities for output formatting, extensiblity through loadable native extension modules and a straightforward set of built-in functions mimicking those found in the Perl 5 language.
The following design goals were defined for the ucode scripting language:
- - Ability to embed code logic fragments such as control flow statements, function calls or arithmetic expressions into plain text templates, using a block syntax and functionality roughly inspired by Jinja templates
- - Built-in support for JSON data parsing and serialization, without the need for external libraries
- - Distinct array and object types (compared to Lua's single table datatype)
- - Distinct integer and float types and guaranteed 64bit integer range
- - Built-in support for bit operations
- - Built-in support for (POSIX) regular expressions
- - A comprehensive set of built-in standard functions, inspired by the core functions found in the Perl 5 interpreter
- - Staying as close to ECMAScript syntax as possible due to higher developer familiarity and to be able to reuse existing tooling such as editor syntax highlighting
- - Bindings for all relevant Linux and OpenWrt APIs, such as ubus, uci, uloop, netlink etc.
- - Procedural, synchronous programming flow
- - Very small executable size (the interpreter and runtime is currently around 64KB on ARM Cortex A9)
- - Embeddability into C host applications
Summarized, ucode can be described as synchronous ECMAScript without the object oriented standard library.
Additional information
======================
It's original purpose is/was for use in OpenWrt, but having a scripting
language which only uses 64KB sounds useful for many more purposes.
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQT1sUPBYsyGmi4usy/XblvOeH7bbgUCYzM/4QAKCRDXblvOeH7b
bqiJAP4q1XZAWwQljnwGqRuhJIPzh3/gDNgS2g87mhLDfzMQ/gD7BKrvc9g13mtm
tfzU+LjxE86oJ+egpk3ychsWfw+zdA4=
=ZI53
-----END PGP SIGNATURE-----
Reply to: