Just
*** 注意 ***
2023年11月17日
该项目目前不再积极维护。请查看我正在开发的新的低级JavaScript运行时lo。很快,这将使我能够"复活""just"项目并将其基于lo。请在接下来的几周内关注Twitter或加入我们的Discord讨论新的工作。🙏 🚀
构建和运行
目前在现代Linux(已测试debian/ubuntu和alpine)的x86_64平台上可用
# 下载并运行构建脚本
sh -c "$(curl -sSL https://raw.githubusercontent.com/just-js/just/current/install.sh)"
# 将just二进制文件安装到/usr/local/bin
make -C just install
# 导出just主目录
export JUST_HOME=$(pwd)/just
export JUST_TARGET=$JUST_HOME
# 如果不想安装,将JUST_HOME添加到PATH
export PATH=$PATH:$JUST_HOME
# 运行shell
just
创建新应用
# 在hello目录中初始化新应用
just init hello
cd hello
# 构建hello应用
just build hello.js --clean --static
./hello
命令行选项
运行Just shell/repl
just
通过stdin管道输入脚本
cat hello.js | just --
执行作为参数传递的JavaScript代码
just eval "just.print(just.memoryUsage().rss)"
运行脚本
just hello.js
初始化新项目并构建
just init hello
cd hello
just build
清理已构建的项目
just clean
文档
即将推出...
理念/目标
- 小型、安全、稳健且高性能的Linux JavaScript运行时
- 代码库小,易于理解和修改
- 在系统调用、v8和c/c++标准库之上的简单层
- 最少使用类/函数模板和面向对象 - JavaScript中的"c"
- 偏向返回代码而非异常
- 用于在JavaScript中构建Linux系统软件的平台
- 尽可能接近原生性能
- 默认安全
- 尽可能避免抽象。抽象可以在用户空间构建
- commonjs模块,不支持ES模块
- 默认非异步 - 可以进行阻塞调用而不使用事件循环
- JS中的事件循环。完全控制epoll API
- 小型标准库 - 尽可能多地留给用户空间。专注于构建高级抽象所需的原语
- 作为学习Linux系统编程以及深入了解JavaScript和v8内部机制的有用教学/学习平台
- 源文件数量少
- 最少的依赖 - 仅需g++和make
- 保持代码行数尽可能少 < 5k
- 尽可能少地在v8堆上分配内存