New modules.
WrenCI / linux (push) Waiting to run
WrenCI / mac (push) Waiting to run
WrenCI / windows (push) Waiting to run

This commit is contained in:
2026-01-24 19:35:43 +01:00
parent 1a08b3adf0
commit 236d69c2d7
118 changed files with 315687 additions and 6 deletions
+204 -1
View File
@@ -3,16 +3,68 @@
#include "modules.h"
#include "base64.wren.inc"
#include "crypto.wren.inc"
#include "datetime.wren.inc"
#include "dns.wren.inc"
#include "env.wren.inc"
#include "http.wren.inc"
#include "io.wren.inc"
#include "jinja.wren.inc"
#include "json.wren.inc"
#include "math.wren.inc"
#include "net.wren.inc"
#include "os.wren.inc"
#include "regex.wren.inc"
#include "repl.wren.inc"
#include "scheduler.wren.inc"
#include "signal.wren.inc"
#include "sqlite.wren.inc"
#include "subprocess.wren.inc"
#include "timer.wren.inc"
#include "tls.wren.inc"
#include "websocket.wren.inc"
extern void base64Encode(WrenVM* vm);
extern void base64Decode(WrenVM* vm);
extern void cryptoRandomBytes(WrenVM* vm);
extern void cryptoMd5(WrenVM* vm);
extern void cryptoSha1(WrenVM* vm);
extern void cryptoSha256(WrenVM* vm);
extern void datetimeNow(WrenVM* vm);
extern void datetimeFromTimestamp(WrenVM* vm);
extern void datetimeFormat(WrenVM* vm);
extern void datetimeComponent(WrenVM* vm);
extern void dnsLookup(WrenVM* vm);
extern void directoryList(WrenVM* vm);
extern void directoryCreate(WrenVM* vm);
extern void directoryDelete(WrenVM* vm);
extern void envGet(WrenVM* vm);
extern void envSet(WrenVM* vm);
extern void envDelete(WrenVM* vm);
extern void envAll(WrenVM* vm);
extern void jsonParse(WrenVM* vm);
extern void mathSin(WrenVM* vm);
extern void mathCos(WrenVM* vm);
extern void mathTan(WrenVM* vm);
extern void mathAsin(WrenVM* vm);
extern void mathAcos(WrenVM* vm);
extern void mathAtan(WrenVM* vm);
extern void mathAtan2(WrenVM* vm);
extern void mathSinh(WrenVM* vm);
extern void mathCosh(WrenVM* vm);
extern void mathTanh(WrenVM* vm);
extern void mathLog(WrenVM* vm);
extern void mathLog10(WrenVM* vm);
extern void mathLog2(WrenVM* vm);
extern void mathExp(WrenVM* vm);
extern void mathPow(WrenVM* vm);
extern void mathSqrt(WrenVM* vm);
extern void mathCbrt(WrenVM* vm);
extern void mathCeil(WrenVM* vm);
extern void mathFloor(WrenVM* vm);
extern void mathRound(WrenVM* vm);
extern void mathAbs(WrenVM* vm);
extern void fileAllocate(WrenVM* vm);
extern void fileFinalize(void* data);
extern void fileDelete(WrenVM* vm);
@@ -68,6 +120,35 @@ extern void serverFinalize(void* data);
extern void serverBind(WrenVM* vm);
extern void serverAccept(WrenVM* vm);
extern void serverClose(WrenVM* vm);
extern void signalTrap(WrenVM* vm);
extern void signalIgnore(WrenVM* vm);
extern void signalReset(WrenVM* vm);
extern void sqliteAllocate(WrenVM* vm);
extern void sqliteFinalize(void* data);
extern void sqliteExecute(WrenVM* vm);
extern void sqliteExecuteParams(WrenVM* vm);
extern void sqliteQuery(WrenVM* vm);
extern void sqliteQueryParams(WrenVM* vm);
extern void sqliteClose(WrenVM* vm);
extern void sqliteLastInsertId(WrenVM* vm);
extern void sqliteChanges(WrenVM* vm);
extern void subprocessRun(WrenVM* vm);
extern void regexAllocate(WrenVM* vm);
extern void regexFinalize(void* data);
extern void regexTest(WrenVM* vm);
extern void regexMatch(WrenVM* vm);
extern void regexMatchAll(WrenVM* vm);
extern void regexReplace(WrenVM* vm);
extern void regexReplaceAll(WrenVM* vm);
extern void regexSplit(WrenVM* vm);
extern void regexPattern(WrenVM* vm);
extern void regexFlags(WrenVM* vm);
extern void tlsSocketAllocate(WrenVM* vm);
extern void tlsSocketFinalize(void* data);
extern void tlsSocketConnect(WrenVM* vm);
extern void tlsSocketWrite(WrenVM* vm);
extern void tlsSocketRead(WrenVM* vm);
extern void tlsSocketClose(WrenVM* vm);
// The maximum number of foreign methods a single class defines. Ideally, we
// would use variable-length arrays for each class in the table below, but
@@ -77,7 +158,7 @@ extern void serverClose(WrenVM* vm);
// If you add a new method to the longest class below, make sure to bump this.
// Note that it also includes an extra slot for the sentinel value indicating
// the end of the list.
#define MAX_METHODS_PER_CLASS 14
#define MAX_METHODS_PER_CLASS 24
// The maximum number of foreign classes a single built-in module defines.
//
@@ -137,6 +218,45 @@ typedef struct
// The array of built-in modules.
static ModuleRegistry modules[] =
{
MODULE(base64)
CLASS(Base64)
STATIC_METHOD("encode(_)", base64Encode)
STATIC_METHOD("decode(_)", base64Decode)
END_CLASS
END_MODULE
MODULE(crypto)
CLASS(Crypto)
STATIC_METHOD("randomBytes_(_,_)", cryptoRandomBytes)
END_CLASS
CLASS(Hash)
STATIC_METHOD("md5_(_)", cryptoMd5)
STATIC_METHOD("sha1_(_)", cryptoSha1)
STATIC_METHOD("sha256_(_)", cryptoSha256)
END_CLASS
END_MODULE
MODULE(datetime)
CLASS(DateTime)
STATIC_METHOD("now_()", datetimeNow)
STATIC_METHOD("fromTimestamp_(_)", datetimeFromTimestamp)
STATIC_METHOD("format_(_,_)", datetimeFormat)
STATIC_METHOD("component_(_,_)", datetimeComponent)
END_CLASS
END_MODULE
MODULE(dns)
CLASS(Dns)
STATIC_METHOD("lookup_(_,_,_)", dnsLookup)
END_CLASS
END_MODULE
MODULE(env)
CLASS(Environment)
STATIC_METHOD("get(_)", envGet)
STATIC_METHOD("set(_,_)", envSet)
STATIC_METHOD("delete(_)", envDelete)
STATIC_METHOD("all", envAll)
END_CLASS
END_MODULE
MODULE(http)
END_MODULE
MODULE(io)
CLASS(Directory)
STATIC_METHOD("create_(_,_)", directoryCreate)
@@ -186,6 +306,38 @@ static ModuleRegistry modules[] =
STATIC_METHOD("write(_)", stderrWrite)
END_CLASS
END_MODULE
MODULE(jinja)
END_MODULE
MODULE(json)
CLASS(Json)
STATIC_METHOD("parse(_)", jsonParse)
END_CLASS
END_MODULE
MODULE(math)
CLASS(Math)
STATIC_METHOD("sin(_)", mathSin)
STATIC_METHOD("cos(_)", mathCos)
STATIC_METHOD("tan(_)", mathTan)
STATIC_METHOD("asin(_)", mathAsin)
STATIC_METHOD("acos(_)", mathAcos)
STATIC_METHOD("atan(_)", mathAtan)
STATIC_METHOD("atan2(_,_)", mathAtan2)
STATIC_METHOD("sinh(_)", mathSinh)
STATIC_METHOD("cosh(_)", mathCosh)
STATIC_METHOD("tanh(_)", mathTanh)
STATIC_METHOD("log(_)", mathLog)
STATIC_METHOD("log10(_)", mathLog10)
STATIC_METHOD("log2(_)", mathLog2)
STATIC_METHOD("exp(_)", mathExp)
STATIC_METHOD("pow(_,_)", mathPow)
STATIC_METHOD("sqrt(_)", mathSqrt)
STATIC_METHOD("cbrt(_)", mathCbrt)
STATIC_METHOD("ceil(_)", mathCeil)
STATIC_METHOD("floor(_)", mathFloor)
STATIC_METHOD("round(_)", mathRound)
STATIC_METHOD("abs(_)", mathAbs)
END_CLASS
END_MODULE
MODULE(net)
CLASS(Socket)
ALLOCATE(socketAllocate)
@@ -218,6 +370,20 @@ static ModuleRegistry modules[] =
STATIC_METHOD("version", processVersion)
END_CLASS
END_MODULE
MODULE(regex)
CLASS(Regex)
ALLOCATE(regexAllocate)
FINALIZE(regexFinalize)
METHOD("test(_)", regexTest)
METHOD("match(_)", regexMatch)
METHOD("matchAll(_)", regexMatchAll)
METHOD("replace(_,_)", regexReplace)
METHOD("replaceAll(_,_)", regexReplaceAll)
METHOD("split(_)", regexSplit)
METHOD("pattern", regexPattern)
METHOD("flags", regexFlags)
END_CLASS
END_MODULE
MODULE(repl)
END_MODULE
MODULE(scheduler)
@@ -225,11 +391,48 @@ static ModuleRegistry modules[] =
STATIC_METHOD("captureMethods_()", schedulerCaptureMethods)
END_CLASS
END_MODULE
MODULE(signal)
CLASS(Signal)
STATIC_METHOD("trap_(_,_)", signalTrap)
STATIC_METHOD("ignore_(_)", signalIgnore)
STATIC_METHOD("reset_(_)", signalReset)
END_CLASS
END_MODULE
MODULE(sqlite)
CLASS(Database)
ALLOCATE(sqliteAllocate)
FINALIZE(sqliteFinalize)
METHOD("execute(_)", sqliteExecute)
METHOD("execute(_,_)", sqliteExecuteParams)
METHOD("query(_)", sqliteQuery)
METHOD("query(_,_)", sqliteQueryParams)
METHOD("close()", sqliteClose)
METHOD("lastInsertId", sqliteLastInsertId)
METHOD("changes", sqliteChanges)
END_CLASS
END_MODULE
MODULE(subprocess)
CLASS(Subprocess)
STATIC_METHOD("run_(_,_)", subprocessRun)
END_CLASS
END_MODULE
MODULE(timer)
CLASS(Timer)
STATIC_METHOD("startTimer_(_,_)", timerStartTimer)
END_CLASS
END_MODULE
MODULE(tls)
CLASS(TlsSocket)
ALLOCATE(tlsSocketAllocate)
FINALIZE(tlsSocketFinalize)
METHOD("connect_(_,_,_,_)", tlsSocketConnect)
METHOD("write_(_,_)", tlsSocketWrite)
METHOD("read_(_)", tlsSocketRead)
METHOD("close_()", tlsSocketClose)
END_CLASS
END_MODULE
MODULE(websocket)
END_MODULE
SENTINEL_MODULE
};