個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Wolfram Language / Mathematica reimplementation in Rust (Wolfram oxidized)
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗An interpreter for the Wolfram Language powered by Rust.
You can find the official documentation at woxi.ad-si.com/docs.
The initial focus is to implement a subset of the Wolfram Language so that it can be used for CLI scripting and notebooks. For example:
#!/usr/bin/env woxi
(* Print the square of 5 random integers between 1 and 9 *)
RandomInteger[{1, 9}, 5] // Map[#^2&] // Map[Print]
It has full support for Jupyter Notebooks including graphical output:
[!TIP] Try it out yourself in our JupyterLite instance!
Check out the CLI tests directory to see all currently supported commands and their expected output. All tests must pass with Woxi and WolframScript.
Also check out the functions.csv file for a list of all Wolfram Language functions and their implementation status.
Woxi runs faster than WolframScript as there is no overhead of starting a kernel and verifying its license.
You can easily install it with Rust's cargo:
cargo install woxi
Every GitHub release ships archives
of the woxi CLI and the Woxi Studio notebook editor for
Linux, macOS, and Windows (x86-64 and arm64),
alongside a SHA256SUMS.txt to verify them against.
The macOS build of Woxi Studio comes as a Woxi Studio.app bundle.
It is not notarized, so macOS quarantines it after the download —
remove the flag once after unzipping:
xattr -dr com.apple.quarantine "Woxi Studio.app"
Woxi is also available on npm as woxi-wasm
as a WebAssembly build with JavaScript bindings (see npm/):
npm install woxi-wasm
import { evaluate } from "woxi-wasm"
evaluate("Plus[1, 2]") //=> "3"
Woxi is also available on PyPI as a Python package with pre-built wheels:
pip install woxi
import woxi
woxi.interpret("Plus[1, 2]") # => '3'
See woxi-py/readme.md for the full Python API.
If you want to build Woxi from source, you need to have Rust installed. You can get it from rust-lang.org.
Clone the repository, build the project, and install it:
git clone https://github.com/ad-si/Woxi
cd Woxi
make install
On macOS, make install additionally builds the Woxi Studio notebook editor
and installs it as a .app bundle at /Applications/Woxi Studio.app,
registered with Launch Services so that .nb, .wl, and .wls files appear
under Finder's "Open With…" menu.
You can use the interpreter directly from the command line:
woxi eval "1 + 2"
# 3
woxi eval 'StringJoin["Hello", " ", "World!"]'
# Hello World!
Or you can run a script:
woxi run tests/scripts/hello_world.wls
Or start an interactive REPL, where definitions and % / Out[] history
persist across inputs:
woxi repl
# In[1]:= x = 5
# Out[1]= 5
# In[2]:= x^2
# Out[2]= 25
You can also use Woxi in Jupyter notebooks. Install the kernel with:
woxi install-kernel
The kernelspec is embedded in the woxi binary,
so this works from any directory and with any installation method.
It is registered with jupyter kernelspec install when the jupyter command
is available, and written to Jupyter's kernels directory directly otherwise.
Use --system to install it for all users instead of only the current one.
Then start the Jupyter server:
cd examples && jupyter lab
Or simply use our JupyterLite instance. It runs fully self-contained in your browser and no data is send to the cloud.
Woxi ships a Language Server Protocol server for the Wolfram Language:
woxi lsp
It speaks LSP over stdin/stdout, which is how editors start it, and provides
Configure your editor to run woxi lsp for .wl, .wls, .m and .nb
files. For Neovim's built-in client that is:
vim.lsp.config.woxi = {
cmd = { "woxi", "lsp" },
filetypes = { "wolfram" },
root_markers = { ".git" },
}
vim.lsp.enable("woxi")
| Woxi | WolframScript |
|---|---|
woxi eval "1 + 2" | wolframscript -code "1 + 2" |
woxi run script.wls | wolframscript script.wls |
woxi run notebook.nb | not supported (can't run .nb files directly) |
woxi repl | wolframscript (no arguments) |
woxi lsp | not supported (no language server) |
Contributions are very welcome! Please feel free to submit a Pull Request.
To run the test suite:
make test