sem - 基于 Git 的语义版本控制工具
sem 是一个语义版本控制工具,构建在 Git 之上。它不显示代码行的变更,而是显示实体级别的变更(函数、方法、类等)。
核心特点
- 语义级别差异对比:显示"函数 blahh 被修改"而非"第 x-y 行变更"
- 零配置:在任何 Git 仓库中直接使用,无需设置
- 支持 26 种编程语言:使用 tree-sitter 解析代码
- 实体重命名检测:自动识别函数/类的重命名
主要命令
-
sem diff:实体级别的差异对比,支持重命名检测、结构化哈希和词级高亮- 支持多种输出格式:plain、JSON、Markdown
- 可比较工作区、暂存区、提交、任意两个文件
-
sem impact:跨文件依赖图分析,显示实体变更的影响范围- 可查看依赖关系、受影响的测试等
-
sem blame:实体级别的代码归属,显示谁最后修改了每个函数/类 -
sem log:追踪单个实体在 Git 历史中的演变过程 -
sem entities:列出文件或目录下的所有实体 -
sem context:为 LLM 生成符合 token 预算的上下文(包含实体及其依赖)
原文链接:https://github.com/Ataraxy-Labs/sem
Rust workspace 自动发布包的困境
问题背景
开发者在尝试自动发布 Rust workspace 中的多个包时遇到了两难问题:
遇到的具体问题
方案一:cargo publish --workspace
- 如果任何包已经发布过,命令会直接中止
- 无法跳过已发布的包继续发布其他包
方案二:cargo workspaces publish --from-git
- 使用第三方工具 cargo-workspaces(https://github.com/pksunkara/cargo-workspaces)
- 存在严重缺陷:当发布失败时(非"包已存在"的原因),无法正确返回错误码
- 这在 CI/CD 流程中依赖退出码判断时会造成问题
开发者困惑
作者认为这是一个非常基础的需求,对于没有现成解决方案感到惊讶,怀疑是否自己的使用方式有问题。
原文链接:https://www.reddit.com/r/rust/comments/1tg2hlc/is_there_a_solution_to_automatically_publish/
Concord v2.0.0 发布 - Rust 编写的 Discord 终端 UI 客户端
Concord 是一个使用 Rust 和 Ratatui 框架开发的 Discord 终端用户界面客户端。最新的 v2.0.0 版本带来了重要更新。
主要新功能
- 语音支持:现在可以加入语音频道并播放接收到的语音音频
其他核心功能
- 导航功能:支持服务器(Guild)、频道、帖子、论坛和私信(DM)的导航
- 消息操作:可以发送、编辑、删除、回复、置顶消息以及添加表情反应
- 媒体预览:在支持的终端中提供内联图片预览
- 桌面通知:支持桌面通知功能
- 快捷操作:提供 Vim 风格的键盘导航
项目信息
- GitHub 仓库:https://github.com/chojs23/concord
- 更多功能详情可查看项目的 README 文档
原文链接:https://github.com/chojs23/concord
Gecko - GameCube/Wii 模拟器
Gecko 是一个用 Rust 编写的跨平台 GameCube/Wii 模拟器和调试器。
项目状态
- 仍在开发中
- 许多游戏可以运行,但大多数存在不同程度的视觉故障或完全无法运行
- 提供 GameCube 和 Wii 游戏的截图数据库以评估兼容性
- 注意:目前仅追踪 NTSC 游戏
主要特性
- 开发目标:专注于自制软件开发和逆向工程,同时提供流畅的游戏体验
- 核心技术:
- PowerPC JIT(使用 Cranelift)
- DSP JIT 和 GX 顶点解码 JIT
- 基于 wgpu 的渲染后端,支持所有主流平台
- 专用着色器编译器、JIT 和着色器缓存
- 音频系统:模块化音频后端,支持混音和导出 .wav 文件
- 调试功能:
- 基于 egui 的高级调试界面
原文链接:https://github.com/ioncodes/gecko
评论区
写评论还没有评论