mcpField
C
coding-nim

coding-nim

github.com/alphaonedevDevelopment46 installs
Repository

About coding-nim

coding-nim is a skill for Nim 2.x programming, aimed at systems programming and projects requiring low-level control. It covers macros, compile-time execution, ARC/ORC memory management, and FFI.

Key features

  1. 01Use macros and templates for metaprogramming
  2. 02Run code at compile time
  3. 03Configure ARC or ORC memory management
  4. 04Call external libraries through FFI
  5. 05Manage dependencies with Nimble

Use cases

  1. 01Develop embedded or performance-critical programs
  2. 02Integrate C/C++ libraries through FFI
  3. 03Generate code at compile time with macros

Install

Copy the command and run it in a terminal.

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

After installing, type/coding-nimin Claude Code to confirm it loaded.

Details

From the project README

coding-nim

Purpose

This skill equips the AI to handle Nim 2.x programming tasks, focusing on advanced features like macros, templates, compile-time execution, memory management (ARC/ORC), FFI for interoperability, Nimble for package handling, and systems programming. Use it to generate, debug, and optimize Nim code efficiently.

When to Use

Apply this skill for systems-level programming needing low-level control, such as embedded systems, performance-critical apps, or when integrating with C/C++ via FFI. Use it for projects requiring compile-time metaprogramming (e.g., via macros) or automatic memory management with ARC/ORC to avoid manual garbage collection.

Key Capabilities

  • Macros for code generation: Define reusable code transformations at compile-time.
  • Templates for type-safe string-based metaprogramming.
  • Compile-time execution: Run code during compilation using static blocks.
  • Memory management: Switch between ARC (automatic reference counting) and ORC (optional reference counting) via compiler flags.
  • FFI: Call external libraries (e.g., C functions) without wrappers.
  • Nimble: Manage dependencies and build projects like a package manager.
  • Systems programming: Direct hardware access, concurrency, and cross-platform compilation.

Usage Patterns

To accomplish tasks, structure Nim code with modules and use the compiler for builds. For macros, define them in a separate proc and invoke at compile-time. When writing FFI code, use the importc pragma for C functions. For memory management, specify --gc:arc or --gc:orc flags during compilation. Always test code with nim check before full builds to catch errors early. Integrate templates for generic functions to reduce boilerplate.

Common Commands/API

Use the Nim compiler (nim) for core operations. Compile a file: nim c --verbosity:0 -r main.nim (flags: -r for run, --verbosity:0 for minimal output). For Nimble, install packages: nimble install somepkg. Define a macro:

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

Call it as echo doubleIt(5). For FFI, import C: proc printf(format: cstring; args: varargs[pointer]) {.importc: "printf", header: "<stdio.h>".}. Config format: Use nim.cfg for settings, e.g., gcc.exe = "gcc" to specify compiler. Environment variables: Set $NIMBLE_DIR for package cache.

Integration Notes

Integrate Nim with other languages via FFI; for C++, use importcpp. To embed in a project, compile Nim code to a shared library: nim c --app:lib -d:release mylib.nim. For CI/CD, use GitHub Actions with: run: nim c --opt:speed file.nim. If auth is needed (e.g., for Nimble registry), set env vars like $NIMBLE_TOKEN for private repos. Link against external libs: Add --passL:-lssl for OpenSSL. Ensure path configurations match, e.g., add path = "/path/to/headers" in nim.cfg.

Error Handling

In Nim, use try-except blocks for runtime errors:

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

For compile-time errors, enable detailed output with nim c --verbosity:2 file.nim. Check for memory issues by switching to ORC: nim c --gc:orc file.nim. Parse compiler output for specifics; common flags include --warnings:on to catch undeclared vars. Log errors with echo or a logging library like chronicles.

Concrete Usage Examples

  1. Define and use a macro for code generation: To create a loop macro, write:
macro forEach(items: seq, body: stmt): stmt =  
  result = quote do: for item in `items`: `body`

Use it as: forEach(@[1, 2, 3], echo item). This generates efficient loops at compile-time.

  1. Use FFI to call a C function: Import and call a C printf:
proc cPrintf(format: cstring) {.importc: "printf", header: "<stdio.h>".}  
cPrintf("%s\n", "Hello from Nim")

Compile with nim c --passC:-I/usr/include file.nim to link C headers, enabling seamless integration.

Graph Relationships

  • Related to cluster: coding
  • Connected via tags: nim (direct link to language-specific skills), systems (links to low-level programming tools), coding (broad connections to other coding skills like coding-python or coding-c)

Comments

Markdown supported