mcpField
C
coding-nim

coding-nim

github.com/alphaonedev开发46 次安装
代码仓库

关于 coding-nim

coding-nim 是用于 Nim 2.x 编程任务的技能,面向系统编程及需要低层控制的项目。它涵盖宏、编译期执行、ARC/ORC 内存管理和 FFI。

主要功能

  1. 01使用宏和模板进行元编程
  2. 02支持编译期代码执行
  3. 03配置 ARC 或 ORC 内存管理
  4. 04通过 FFI 调用外部库
  5. 05使用 Nimble 管理依赖

适用场景

  1. 01开发嵌入式或性能关键程序
  2. 02通过 FFI 集成 C/C++ 库
  3. 03使用宏实现编译期代码生成

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill coding-nim

安装后在 Claude Code 中输入/coding-nim确认已加载。

详细介绍

coding-nim

用途

此技能使 AI 能够处理 Nim 2.x 编程任务,重点关注宏、模板、编译时执行、内存管理(ARC/ORC)、互操作用的 FFI、用于包管理的 Nimble,以及系统编程等高级功能。可使用此技能高效生成、调试和优化 Nim 代码。

适用场景

需要底层控制的系统级编程场景,例如嵌入式系统、性能关键型应用,或通过 FFI 与 C/C++ 集成时,可使用此技能。也适用于需要编译时元编程(例如使用宏),或使用 ARC/ORC 自动管理内存以避免手动垃圾回收的项目。

主要功能

  • 代码生成宏:在编译时定义可复用的代码转换。
  • 用于类型安全、基于字符串的元编程的模板。
  • 编译时执行:使用 static 块在编译期间运行代码。
  • 内存管理:通过编译器标志在 ARC(自动引用计数)和 ORC(可选引用计数)之间切换。
  • FFI:无需包装器即可调用外部库(例如 C 函数)。
  • Nimble:像包管理器一样管理依赖项和构建项目。
  • 系统编程:直接访问硬件、并发和跨平台编译。

使用模式

要完成任务,请使用模块组织 Nim 代码,并使用编译器进行构建。对于宏,请在单独的 proc 中定义,并在编译时调用。编写 FFI 代码时,使用 importc pragma 导入 C 函数。进行内存管理时,在编译期间指定 --gc:arc 或 --gc:orc 标志。完整构建前,始终使用 nim check 测试代码,以尽早发现错误。使用模板实现泛型函数,减少样板代码。

常用命令/API

使用 Nim 编译器(nim)执行核心操作。编译文件:nim c --verbosity:0 -r main.nim(标志:-r 用于运行,--verbosity:0 用于减少输出)。使用 Nimble 安装包:nimble install somepkg。定义宏:

macro doubleIt(x: expr): stmt =  
  result = quote do: `x` * 2

调用方式:echo doubleIt(5)。对于 FFI,导入 C:proc printf(format: cstring; args: varargs[pointer]) {.importc: "printf", header: "<stdio.h>".}。配置格式:使用 nim.cfg 设置选项,例如,使用 gcc.exe = "gcc" 指定编译器。环境变量:设置 $NIMBLE_DIR 作为包缓存目录。

集成说明

通过 FFI 将 Nim 与其他语言集成;对于 C++,使用 importcpp。要将 Nim 嵌入项目中,请将 Nim 代码编译为共享库:nim c --app:lib -d:release mylib.nim。对于 CI/CD,使用 GitHub Actions,并配置:run: nim c --opt:speed file.nim。如果需要身份验证(例如用于 Nimble 注册表),请为私有仓库设置 $NIMBLE_TOKEN 等环境变量。链接外部库:添加 --passL:-lssl 以使用 OpenSSL。确保路径配置正确,例如,在 nim.cfg 中添加 path = "/path/to/headers"。

错误处理

在 Nim 中,使用 try-except 块处理运行时错误:

try:  
  raise newException(ValueError, "Invalid input")  
except ValueError:  
  echo "Handled error: ", getCurrentExceptionMsg()

对于编译时错误,使用 nim c --verbosity:2 file.nim 启用详细输出。通过切换到 ORC 检查内存问题:nim c --gc:orc file.nim。根据编译器输出排查具体问题;常用标志包括用于捕获未声明变量的 --warnings:on。使用 echo 或 chronicles 等日志库记录错误。

具体用法示例

  1. 定义并使用宏生成代码:要创建循环宏,请编写:
macro forEach(items: seq, body: stmt): stmt =  
  result = quote do: for item in `items`: `body`

调用方式:forEach(@[1, 2, 3], echo item)。此宏会在编译时生成高效循环。

  1. 使用 FFI 调用 C 函数:导入并调用 C 的 printf:
proc cPrintf(format: cstring) {.importc: "printf", header: "<stdio.h>".}  
cPrintf("%s\n", "Hello from Nim")

使用 nim c --passC:-I/usr/include file.nim 编译,以链接 C 头文件,实现无缝集成。

图关系

  • 关联集群:coding
  • 通过标签连接:nim(直接链接到特定语言的技能)、systems(链接到低级编程工具)、coding(广泛关联其他编码技能,例如 coding-python 或 coding-c)

评论

支持 Markdown