[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: