Skip to content

Releases: sin1111yi/ralqlator

v0.5.1 — MCP Server[fix]

Choose a tag to compare

@sin1111yi sin1111yi released this 01 Jun 06:27

v0.5.1 — MCP Server[fix]

✨ New: MCP Server (ralqlator-mcp)

ralqlator 现在自带一个 Model Context Protocol (MCP) 服务器,将其所有的计算能力以工具的形式开放给 AI 助手。

# 启动 MCP 服务器(stdio 传输)
ralqlator-mcp

服务器通过标准输入/输出读写 JSON-RPC 2.0 格式的请求和响应,每行一条。

可用工具

工具 描述
calculate 数学表达式求值,支持精确有理数运算和所有内置函数。可选 format 参数(decimal / hex / oct / bin)
calculate_bitwise 位运算表达式求值(仅整数)。可选 format 参数
list_functions 列出所有 50+ 个内置数学函数及其说明
list_constants 列出内置常量(C_PI, C_E)和用户自定义常量
list_user_definitions 列出所有用户自定义函数、序列和常量
create_user_definition 创建用户自定义函数、序列或常量
delete_user_definition 按名称删除用户自定义定义
list_operators 列出所有支持的运算符及其描述和优先级

调用示例

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"calculate","arguments":{"expression":"sin(C_PI/2)"}}}
{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"1"}]}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"calculate","arguments":{"expression":"255","format":"hex"}}}
{"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"0xFF"}]}}

用户定义管理:

{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"create_user_definition","arguments":{"name":"double","type":"function","expression_or_value":"x*2","params":["x"]}}}
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"calculate","arguments":{"expression":"double(21)"}}}
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"delete_user_definition","arguments":{"name":"double"}}}

🔧 技术细节

  • 纯 JSON-RPC 2.0 实现:无 MCP SDK 依赖,仅使用已有的 serde + 新增 serde_json
  • 复用现有 API:MCP 服务器直接调用 calculator::calculate_with_functions()calculator::calculate_bitwise(),与 CLI 使用同一套计算引擎
  • 用户自定义数据:自动从 ~/.ralqlator 加载用户自定义函数和常量
  • 标准错误码:JSON-RPC 约定的错误码(parse error -32700、invalid params -32602、method not found -32601 等)

📦 新增文件

文件 说明
src/mcp.rs MCP 协议层——类型定义、5个工具处理器(~600行)
src/bin/ralqlator_mcp.rs 二进制入口——stdio JSON 读取/写入循环
docs/mcp-architecture.md 架构设计文档

⚙️ 构建

cargo build --release --bin ralqlator-mcp

二进制文件在 target/release/ralqlator_mcp(注意文件名中为下划线)。

🧪 测试

  • 5 个库单元测试全部通过
  • MCP 功能测试 12/12 全部通过(覆盖计算、位运算、格式输出、用户定义 CRUD、运算符列表、错误处理等场景)

💬 其他改动

  • = 运算符的返回值从 yes/no 改为 true/false(与 == 保持一致)

v0.4.0

Choose a tag to compare

@sin1111yi sin1111yi released this 30 Mar 13:32

Ralqlator v0.4.0 Release Notes

Release Date: 2026-03-30
Git Tag: v0.4.0
Commit: d9741f5


🎉 核心亮点

v0.4.0 引入了 用户定义持久化存储 功能 - 您自定义的函数、数列和常量现在会自动保存并在会话间加载!


✨ 新功能

用户定义持久化存储

所有用户定义的元素会自动持久化到 ~/.ralqlator(隐藏 TOML 文件):

  • 自动保存 当您:

    • 创建定义(通过 create 命令或 -c 参数)
    • 删除定义(通过 destroy 命令或 -d 参数)
    • 退出 REPL(quit 命令)
  • 自动加载 当您:

    • 启动 REPL
    • 从命令行运行计算

新增 CLI 参数

参数 说明 示例
-c, --create <DEF> 创建函数/数列/常量 ralqlator -c "func f(x) = x * 2"
-d, --destroy <NAME> 删除用户定义 ralqlator -d f
-L, --list 列出所有用户定义 ralqlator -L

新增 REPL 命令

命令 说明 示例
destroy <name> 删除用户定义 > destroy f

存储文件格式 (TOML)

[functions.square]
params = ["x"]
expr = "x * x"

[functions.triangle]
params = ["n"]
expr = "n * (n + 1) / 2"

[constants]
G = 9.81
SPEED_OF_LIGHT = 299792458.0

📦 新增模块

storage.rs

新的 TOML 持久化模块:

  • save_user_data() - 保存定义到 ~/.ralqlator
  • load_user_data() - 从 ~/.ralqlator 加载
  • delete_user_definition() - 删除并自动保存
  • get_storage_path() - 获取存储文件路径

🧪 测试

新测试文件:09_storage_tests.rs

19 个全面的测试用例 覆盖:

  • 创建操作(函数、数列、常量)
  • 列表操作(空、单个、多个)
  • 删除操作(函数、常量、不存在、大小写敏感)
  • 自动保存功能
  • 自动加载功能
  • 完整工作流集成
  • 跨会话持久化
  • 存储文件格式验证
  • 边界情况

测试统计

类别 数量
总测试数 450+
测试文件 10
新增测试 (v0.4.0) 19
测试覆盖 所有核心功能

📋 使用示例

命令行

# 创建函数
ralqlator -c "func double(x) = x * 2"

# 创建数列
ralqlator -c "seq triangle(n) = n * (n + 1) / 2"

# 创建常量
ralqlator -c "const G 9.81"

# 列出所有定义
ralqlator -L

# 立即使用
ralqlator "double(21)"        # 输出:42
ralqlator "triangle(10)"      # 输出:55
ralqlator "G * 10"            # 输出:98.1

# 删除定义
ralqlator -d double

# 验证删除
ralqlator -L

REPL

$ ralqlator
Type 'q' or 'quit' to exit...

> create func f(x) = x + 100
Function 'f' defined

> f(5)
105

> destroy f
Deleted 'f' and saved

> quit
# 自动保存所有定义

🔧 技术变更

依赖项

版本 用途
serde 1.0 序列化框架
toml 0.8 TOML 格式支持

修改文件

文件 变更
Cargo.toml 添加 serde, toml 依赖
Cargo.lock 更新依赖
src/storage.rs 新增 - 持久化模块
src/main.rs CLI 参数处理
src/cli.rs 新增 CLI 参数
src/repl.rs 自动保存/加载,destroy 命令
src/lib.rs 导出 storage 模块
tests/09_storage_tests.rs 新增 - 存储测试

📚 文档更新

  • README.md: 添加持久化文档、示例、CLI 参数
  • README_zh.md: 中文文档更新
  • agent.md: 开发者文档,包含新模块信息
  • PKGBUILD: 更新为 v0.4.0,添加 aarch64 支持

🚀 迁移指南

从 v0.3.x 升级到 v0.4.0

无破坏性变更! 您现有的用户定义将继续工作。

可选:将旧定义迁移到新的持久化系统:

  1. 使用旧会话启动 REPL
  2. 重新创建重要的函数/常量
  3. 它们会自动保存到 ~/.ralqlator

🐛 Bug 修复

本次发布无 Bug 修复。


⚠️ 破坏性变更

无。完全保持向后兼容。


🔗 链接


Copyright (C) 2026 Ralqlator Contributors
License: GPLv3