Soup logo

Soup

Lua 5.5.1 的安全增强发行版 —— 国密 · 契约 · FFI · 沙箱 · 静态类型 · GUI

Lua 5.5.1国密 SM2/3/4契约FFI沙箱静态类型GUIwasm
下载 Soup模块开发模板了解组件
lua 一般使用 luarocks 作为包管理器 · QQ 交流群

组件

Soup 由多个可执行工具与运行时组件组成,右下角角标颜色区分。

soupx

soupx

解释器

动态链接版,默认推荐。直接运行脚本 / .sar 归档,绿色角标。

soup

soup

解释器·静态

单文件自包含,无需外部 dll,青色角标。

soupc

soupc

编译器

静态类型编译 .sky;.tl/.ssf/.tk 经 orangetl 转译;可加壳打包。蓝色角标。

soupc_static

soupc_static

编译器·静态

静态自包含编译器,无外部依赖。

soupack

soupack

打包器

打包 .sar / 自解压 SFX 可执行文件,一键分发。橙色角标。

soupkg

soupkg

包管理器

包管理(Luafun安装/查询),灰蓝色角标。现为 BamZap 的兼容别名(soupkg = bamzap)。

soupdbg

soupdbg

调试器

源码级调试,支持 .sar 解压调试、断点/单步/栈查看。红色角标。

soupwasm

soupwasm

WebAssembly

wasm 模块加载/实例化/调用(cubes 后端)。

soupg

soupg

WebUI 宿主

以系统 WebView(WebView2 / WKWebView / webkit2gtk)承载 webui 页面,作为桌面 GUI 宿主运行;含静态版 soupgx。soupwebui 即其网页界面形态。

sup

sup

工具链 dispatcher

统一调度器:一条命令调用 soupx/soupc/soupack/soup/soupg 等整套工具链(Rust 实现)。

souparmor

souparmor

加密装甲

开发时加密工具:将脚本/资源加壳为受保护的 .sarm,紫色盾形角标。

soupcerted

soupcerted

授权运行器

解密并运行 .sarm 装甲包,按授权约束调起解释器;与 souparmor 配套。

soupdec

soupdec

反编译器

字节码反编译器:将 Soup/PUC-Lua 5.5 字节码还原为可读的 Lua 源码(Rust 实现)。

soupmake

soupmake

构建系统

项目构建系统:自包含 SFX 可执行,驱动 Soupfile 完成编译/打包/分发。

bamzap

bamzap伴生孵化

包管理·分发

Soup 伴生孵化项目:内容寻址对象池 + 后量子签名(soupq)+ HTTPS 分发 + 声明式部署(HetuFile)。半独立于 Soup,单 .sar 分发,soupmake 构建。

soupq

soupq

后量子签名

SPHINCS+ 风格后量子无状态哈希签名(WOTS+/XMSS/Hypertree),底层 SM3(libsmx)。公钥 192B / 签名最大 9904B。

sml

sml

标记语言

{ ❄ } Soup Markup Language:JSON/YAML 替代品。引号可选 · 片段继承 · $env 内联 · 多语言库(Lua/Rust/C/JS)。

功能

国密套件

内嵌 SM2/SM3/SM4-GCM,加解密、签名、密钥协商开箱即用(smx 模块)

契约 & Result

约束声明与校验,Ok/Err 错误传播,可组合、可静态检查

FFI

LuaJIT 风格 load/cdef/cast 调用任意原生库(cffi 模块)

WebAssembly

加载并调用 wasm 模块,多后端(soupwasm / cubes)

安全沙箱

隔离执行不可信代码,限制资源与操作(sandbox 模块)

静态类型

soupc 编译 .sky 静态类型源码,运行期零开销类型检查

原生 GUI

egui 桌面窗口:按钮/表单/布局/中文字体/缩放/Material 主题(segui 模块)

多线程

lanes 并发与 linda 通道(可选后端)

网络

LuaSocket 风格 TCP/UDP + QUIC(socket 模块 / socket.quic)

事件循环

libuv 事件循环:timer/TCP/UDP/fs/进程(luv 模块)

下载

当前版本:0.1.0alp&l551(基于 Lua 5.5.1,首个 alpha 版)

统一通过 Gitee Release 发布(仓库:https://gitee.com/snoware/soup为运行时、sdk.zip 为开发包。

组件
平台
通道
SRE

SRE · 运行时

WEBVIEW

WebView 运行时

说明

macOS 自带 WKWebView;Linux 需安装 webkit2gtk(如 apt install libwebkit2gtk-4.1-dev);Windows 已内置 WebView2。soupg 依赖系统 WebView,无需单独下载运行时。

内置模块

全部内置模块一览(点击进入各模块 API)。

package

模块系统:require/搜索路径/loadlib(含原生 C 库加载)

coroutine

协程:create/resume/yield/status/wrap

debug

调试接口:getinfo/sethook/getlocal/upvalue 操作

io

文件与流式 I/O:open/lines/read/write

math

数学库:随机数/三角函数/取整/取整类

os

操作系统接口:时间/时钟/进程执行/环境变量

string

字符串处理:模式匹配/格式化/字节操作

table

表操作:insert/remove/sort/concat/move

utf8

UTF-8 编码处理:字符迭代/编码/长度

smx

国密套件:SM2/SM3/SM4-GCM/ECDH(后端 smx.dll)

cffi

FFI:load/cdef/cast/new/string/sizeof(后端 cffi.dll)

wasm

WebAssembly:加载/实例化/调用 wasm 模块(后端 soupwasm.dll)

contract

契约与 Result 元数据:约束声明与校验

result

Result 类型:Ok/Err 与错误传播

sandbox

受限执行沙箱:隔离运行不可信代码

stdlib

标准库扩展:额外实用函数;含子模块 std.zstd(zstd 压缩)、std.result(复用 result 模块)(常与 package 一起预加载)

socket

网络套接字:TCP/UDP/连接/收发(后端 LuaSocket),含 QUIC 子模块 socket.quic

streams

simpleui

webui

luv

libuv 绑定:事件循环/timer/TCP/UDP/fs/进程(后端 luv.dll)

quic

QUIC 协议(RFC 9000):基于 quinn,可经 require "quic" 或 socket.quic 访问

sdbg

跨平台反调试/自我保护:检测调试器、禁止附加、单实例锁、受保护调用(Windows + POSIX)

dll

外部 DLL/共享库的 Lua 模块加载器:把任意外部 dll 按约定入口注册成 Lua 模块(复用 package.loadlib)

mail

SMTP 邮件客户端 + 本地重发队列(resend):简便收发信,多收件人,失败自动重试并指数退避(独立 dll 库)

posix

POSIX 系统接口(builtins/luaposix):进程(fork/wait/exec)、信号、文件(dirent/fcntl/stat)、套接字(sys.socket)、unistd、termios、pwd/grp 等完整 POSIX 调用(仅 POSIX 系统可用)

文档

致谢

Soup 开发

S.A. @SOrg::SNOWARE

核心语言

Lua 5.5.1 — R. Ierusalimschy, L. H. de Figueiredo, W. Celes (PUC-Rio)

静态类型

Teal (tl) — labs.eleven.io;orangetl — purplesyringa (Anna K.)

FFI

LuaJIT ffi — Mike Pall;libffi — Anthony Green 等

压缩

zstd — Meta(Facebook)

原生 GUI

egui / eframe / wgpu — Emil Ernerfeldt

多线程 lanes

主要开发者:Benoit Germain(Lua Lanes 项目)。

国密后端

libsmx — 黄鑫泰(字节跳动),SM2/SM3/SM4-GCM 国密套件 Rust 实现

WebAssembly

wasm-micro-runtime (WAMR) — 英特尔与字节码联盟

事件循环

luvit + luvi — luvit 团队(内嵌 libuv / luvi C 运行时)

自研组件

smx(契约)· soupack · c2/cubes — S.A. @SOrg::SNOWARE