一个JavaScript运行环境,极度轻量化,简单又小巧
- 100% C库实现,包括
fetch乃至atob实现全部native,在体积与性能间取得平衡! - 超小体积,libc动态编译strip完大小甚至不到 1M,
ljsc甚至可以更小! - 精挑细选的依赖,mbedtls、ffi、libexpat...全都是静态编译依旧小巧的库
- 必选组件(如eventloop/http/pipe)从0到1手写,这意味着你只需要一个
gcc即可体验LightJS!
- 库全部使用C实现,二进制可执行文件中除了交互模式坚决不使用JS代码胶合
- 极少的外部库依赖,甚至EventLoop和http服务器/客户端都是自己实现的
- mbedtls(可选,可裁剪)
- mimalloc(高性能必备,可选)
- zlib(可选,大部分系统自带)
- libexpat(可选,很多系统自带,非常轻量)
- libffi(可选,很多系统自带)
- 简单的API,少而优雅
拒绝反人类的Response(deno),在LJS中可以链式处理请求!
resp.status(200).write('data').header('A', 'b').end() - 超高性能、超好用的U8Pipe,内置异步读行、读指定大小的数据、混合且支持用户拦截的pipeTo等功能,再也不需要手动截流啦
- 超级简单的ffi,再也不用担心胶水代码比库代码还多的困难啦
- 很多独创的功能,如
Worker.interrupt()强制终止当前执行的JS代码,对死循环立竿见影Sandbox.eval()不会污染全局作用域,再也不需要危险的with{}了!- 原生linux shm、使用
new SharedMemory()实现进程间共享内存! - ...
以下依赖皆可选!使用apt-get安装(for Debian/Ubuntu及衍生系统)
libmbedtls-devlibffi-devlibexpat1-devzlib1g-dev
cmake .
makeljs即是入口文件
LightJS已初步可用,更多bug正在逐渐抢修。欢迎你的PR!