awesome-nim
A curated list of awesome Nim frameworks, libraries, software and resources.
https://github.com/ringabout/awesome-nim
Last synced: 4 days ago
JSON representation
Algorithms
Bigints
- bigints - Bigints for Nim.
- stint - Stack-based arbitrary-precision integers. Fast and portable with natural syntax for resource-restricted devices.
- theo - An optimized bigint and number theory library for Nim.
Blockchain
- eth - Common utilities for Ethereum.
- nimbus-eth1 - An Ethereum 1.0 and 2.0 client for resource-restricted devices.
- nimbus-eth2 - Efficient implementation of the Ethereum 2.0 blockchain.
- evmc - Ethereum VM binary compatible interface.
- ethash - A pure-Nim implementation of Ethash, the Ethereum proof of work.
- contract-abi - Implements encoding of parameters according to the Ethereum Contract ABI specification.
- web3 - The humble beginnings of a Nim library similar to web3.[js|py]. -->
- abc - Experimental asynchronous blockchain. -->
- nitro - Highly experimental implementation of the Nitro statechannels protocol in Nim. -->
- contract-abi - Implements encoding of parameters according to the Ethereum Contract ABI specification.
- nitro - Highly experimental implementation of the Nitro statechannels protocol in Nim. -->
Compression
- zippy - Pure Nim implementation of deflate, zlib, gzip and zip.
- supersnappy - Dependency-free and performant Nim Snappy implementation.
- snappy - Nim implementation of Snappy compression algorithm.
- zip - Wrapper for the zip library.
Cryptography
- nimcrypto - Nim cryptographic library.
- nimaes - Advanced Encryption Standard, Rinjdael Algorithm written in Nim.
- constantine - Constant time pairing-based of elliptic curve based cryptography and digital signatures.
- bslcurve - Nim implementation of BLS signature scheme (Boneh-Lynn-Shacham) over Barreto-Lynn-Scott (BLS) curve BLS12-381.
- bncurve - Nim implementation of Barreto-Naehrig pairing-friendly elliptic curve.
- xxtea - XXTEA encryption algorithm library.
- crc32 - CRC32 for Nim. Just pass the thing you want to do CRC.
- rollinghash - High performance Nim implementation of a Cyclic Polynomial Hash, aka BuzHash, and the Rabin-Karp algorithm.
- murmurhash - Pure Nim implementation of MurmerHash
- des - DES/3DES, DUKPT and MAC in Nim.
- shimsham - A collection of hash functions, including JH, SHA-2, SHA-3, SipHash, Tiger, and Whirlpool.
- NiMPC - A secure multi-party computation (MPC) library for the Nim programming language.
- hashlib - Hash library that contains almost all the hash functions for Nim.
- xxhash.nim - A wrapper for the xxhash hashing library in Nim.
-
bcryptrocks
- Nim wrapper of Solar Designer's
crypt_blowfishlibrary
Deep Learning
- Arraymancer - A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU, OpenCL and embedded devices.
- NimTorch - PyTorch - Python + Nim. A Nim front-end to PyTorch's native backend, combining Nim's speed, productivity and portability with PyTorch's latest implementations.
- laser - Carefully-tuned primitives for running tensor and image-processing code on CPU, GPUs and accelerators.
- flambeau - Nim bindings to libtorch. -->
Math
- symbolicnim - A symbolic library written purely in Nim.
- impulse - Impulse will be a collection of primitives for signal processing (FFT, Convolutions).
- vectorize - SIMD vectorization backend.
- vmath - Math vector library for graphical things.
- neo - A matrix library.
- manu - Nim MAtrix NUmeric package - a port of JAMA, adapted to Nim.
- nlopt - A wrapper for the nonlinear optimization library Nlopt.
Data
Database
- nimongo - Pure Nim lang MongoDB driver.
- asyncpg - Asynchronous PostgreSQL driver for Nim.
- anonimongo - Another Nim pure Mongo DB driver.
- redis - Official redis wrapper for Nim.
- amysql - Async MySQL Connector write in pure Nim.
- mycouch - Multisync CouchDB driver for Nim.
- SQLiteral - A high level SQLite API for Nim.
- asyncmysql - Asynchronous MySQL connector written in pure Nim.
- sqlcipher - SQLCipher wrapper.
- litestore - A lightweight, self-contained, RESTful, searchable, multi-format NoSQL document store.
- rocksdb - Nim wrapper for RocksDB, a persistent key-value store for flash and RAM Storage.
- ormin - Prepared SQL statement generator , A lightweight ORM.
- allographer - A query_builder/ORM library inspired by Laravel/PHP and Orator/Python for Nim.
- gatabase - Connection-Pooling Compile-Time ORM for Nim.
- norm - Norm is an object-oriented, framework-agnostic ORM for Nim that supports SQLite and PostgreSQL.
- tiny_sqlite - Very lightweight and safe SQLite library.
- limdb - Very high performance, persistent and safe key-value store based on LMDB with Nim table-like interface.
- kuzu - Wrapper for Kuzu - an embedded graph database built for query speed and scalability.
- db_connector - Unified db connector in Nim.
- surrealdb.nim - SurrealDB driver for Nim.
- RocheDB - Ring-oriented NoSQL document and vector store for locality-aware retrieval. [Apache-2.0]
- KoutenDB - Locality-aware NoSQL document/vector database built around rings and orbit-inspired retrieval.
Data Processing
- NimData - DataFrame API written in Nim, enabling fast out-of-core data processing.
- Datamancer - A dataframe library with a dplyr like API.
- nimdataframe - Dataframe for Nim.
- nimhdf5 - Wrapper and some simple high-level bindings for the HDF5 library for Nim.
- mpfit - A wrapper for the cMPFIT library for Nim.
Data Structures
- BitVector - A high-performance Nim implementation of BitVectors.
- rbtree - A Red/Black tree implementation in Nim.
- quadtree - A Quadtree library for Nim.
- kdtree - A pure Nim k-d tree implementation for efficient spatial querying of point data.
- RTree - Generic R-tree implementation for Nim.
- sorta - SortedTables in Nim, based on B-trees.
- minmaxheap - A Nim implementation of a Minimum-Maximum heap.
- BipBuffer - A Nim implementation of Simon Cooke's Bib Buffer
- bloom - Bloom filter implementation in Nim.
- binaryheap - Simple binary heap implementation in Nim.
- faststack - Dynamically resizable data structure for fast iteration over large arrays of similar elements.
- StashTable - Concurrent hash tables for Nim.
Parsing
- parsetoml - A Nim library to parse TOML files.
- NimYAML - YAML implementation for Nim.
- Binarylang - Extensible Nim DSL for creating binary parsers/encoders in a symmetric fashion.
- iniplus - INI parser with support for arrays and tables.
- beautifulparser - Simple library for parsing HTML documents inspired by beautifulsoup4.
- Marvdown - A stupid simple Markdown parser.
- iniplus - Extended INI parser with support for arrays and tables.
Serialization
- nesm - NESM is a tool that generates serialization and deserialization code for a given object.
- serialization - A modern and extensible serialization framework for Nim.
- json-serialization - Flexible JSON serialization not relying on run-time type information.
- protobuf-serialization - The nim-protobuf-serialization.
- ssz-serialization - Nim implementation of Simple Serialize (SSZ) serialization and merkleization.
-
toml-serialization
- Flexible TOML serialization
notrelying on run-time type information. - frosty - Marshal native Nim objects via streams, sockets.
- protobuf-nim - Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools.
- flatty - Tools and serializer for plain flat binary files.
- bingo - Binary serialization framework for Nim.
- tnetstring - Parsing and serializing for the TNetstring format.
Standards
- isocodes - ISO codes for Nim (ISO 3166-1, ISO 3166-2, ISO 3166-3, ISO 15924, ISO 15924, ISO 639-2, ISO 639-5)
Development Tools
Benchmarking
- golden - A benchmark for compile-time and/or runtime Nim.
- criterion - Statistic-driven micro-benchmark framework.
- stopwatch - A fork of rbmz's stopwatch that adds extra features.
- nimbench - A micro benchmark module for Nim.
- benchy - Simple benchmarking to time your code.
- timeit - Measuring execution times written by Nim.
Binding Generators
- c2nim - c2nim is a tool to translate Ansi C code to Nim.
- nimgen - nimgen is a helper for c2nim to simplify and automate the wrapping of C libraries. Superseded by nimterop.
- nimterop - A Nim package that leverages tree-sitter to make C/C++ interop seamless. Superseded by Futhark.
- Futhark - Automatic wrapping of C headers in Nim with libclang.
- nimpy - Generate Python wrappers and call Python from Nim.
- jnim - Nim - Java bridge.
- rnim - A bridge between R and Nim. Currently this is a barely working prototype. -->
Build Systems / Package Management
- ChooseNim - Installing and switching between Nim versions (à la rustup, pyenv).
- Nake - Describe your Nim builds as tasks.
- Nawabs - A build system that throws away version numbering in favor of git hashes.
- Nimble - Nimble can be used as a build system.
- nimph - Nim package hierarchy manager from the future.
- nimby - A very simple and unofficial package manager for Nim.
- nifty - A decentralized pseudo package manager and script runner.
- nsis - Nim programming language setup tool.
- nim-windows-container - A Windows Container with a complete Nim build environment.
- ChooseNim - Installing and switching between Nim versions (à la rustup, pyenv).
- GrabNim - Install and switch between multiple Nim compiler versions. (Alternative to ChooseNim).
- Atlas - The Atlas Package cloner. It manages an isolated workspace that contains projects and dependencies.
- nim-agent-template - Scaffolding generator and template featuring AI agent skills, MCP tooling, and multi-toolchain build profiles.
Command-Line Interface Automation
- cligen - Infer & generate command-line interace/option/argument parsers.
- docopt.nim - Command-line args parser.
- argparse - Argument parsing for Nim.
- cliche - AutoMagic CLI argument parsing is so cliché.
- loki - A small library for writing line-oriented command interpreters in Nim.
- confutils - Simplified handling of command line options and config files
- Cmdos - A simple way to process cli arguments and help messages.
-
cozycliparser
- Lean, feature-rich, DSL-free CLI parser based on
std/parseopt. Docs. - Cliquet - A CLI args and config file parser merging both into a single object, with automatic help generation.
- easyargs - Dead simple data-oriented argument parsing for Nim.
Editor Integration
- Editor Support - Official list of editor plugins for Nim.
- nimlsp - The Language Server Protocol implementation for Nim.
- nim.nvim - Nim plugin for NeoVim.
- vscode-nim - Language support for the Nim programming language for VS Code.
Fuzzing
- drchaos - A powerful and easy-to-use fuzzing framework in Nim for C/C++/Obj-C targets.
- libfuzzer - LibFuzzer's interface bindings.
Logging
- chronicles - A crafty implementation of structured logging for Nim.
- morelogging - Logging library for Nim.
- threadlogging - A thread safe logging library using Nim's own logging module.
- watchtower - Lightweight logging library with colorized output, log rotation, and context fields.
- kslog - Minimalistic Kernel-Syslogd For Linux in Nim.
REPL
- jupyternim - A Jupyter kernel for Nim.
-
Reploid
- A Nim REPL running on top of a
nim cor animscriptVM,import [anything].
Static Analysis
- DrNim - Combines the Nim frontend with the Z3 proof engine, in order to allow verify/validate software.
- nimalyzer - Static code analyzer for Nim, inspired by AdaControl.
Testing
- faker - A Nim package that generates fake data for you.
- balls - A unittest macro to save the world, or at least your Sunday.
- einheit - A Nim unit testing library inspired by Python's unit tests.
- asynctest - Complements the standard unittest module in Nim to allow testing of asynchronous code.
- unittest2 - Fork of the "unittest" Nim module focusing on parallel test execution, test-level scoping and strict exception handling.
- asynctest - Complements the standard unittest module in Nim to allow testing of asynchronous code.
Game Development
Game Engines
- NimForUE - Nim plugin for UE5 with native performance, hot reloading and full interop that sits between C++ and Blueprints.
- nimgame2 - A simple 2D game engine for Nim.
- norx - A complete wrapper of the ORX 2.5D cross platform game engine library.
- godot-nim - Nim bindings for Godot Engine.
- rod - Cross-platform 2D and 3D game engine.
- frag - Cross-platform 2D/3D game engine.
- semicongine - Cross-platform, (almost) dependency-free game engine.
- saohime - An extensible 2D game engine for Nim, inspired by Bevy Engine.
- alasgar - Pure nim 3D game engine based on OpenGL.
Game Frameworks
- nico - Nim Game Framework based on Pico-8.
- natu - Toolkit for writing Game Boy Advance games in Nim.
- naylib - safe Raylib wrapper.
- c4 - Modular and extensible 2D and 3D game framework for Nim.
- paranim - A game library based around carefully chosen abstractions.
Game Libraries
- nimgl - NimGL is a Nim library that offers bindings for popular libraries used in computer graphics.
- glm - Port of the popular glm C++ library to Nim.
- GLAD - Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.
- jolt-nim - Native Nim bindings for Jolt Physics 5.6.0 with raw and ownership-safe high-level APIs [MIT].
Rules Engines
- turn_based_game - A game rules engine for simulating or playing turn-based games.
- pararules - A RETE-based rules engine made for games.
Hardware
Backups
- nimvisa - Wrapper for NI-VISA instrument control library.
- ftd2xx - Wrapper for FTDI ftd2xx library (USB to JTAG/SPI/I2C/Bitbang etc.).
Embedded
- ratel - Next-generation, zero-cost abstraction microconroller programming in Nim.
- ardunimo - Nim wrapper for Arduino + LinkIt ONE SDK by Mediatek.
- ardunimesp - Nim wrapper for Arduino ESP8266 framework + A tool for flashing, compiling and making a Nim project into an Arduino project.
- msp430f5510 - Run Nim on MSP430f5510 micro-controller (6KB of RAM).
- Nesper - Program the ESP32 using Nim. Library on top of esp-idf.
- stm32f3 - Run Nim on STM32F3 micro-controller (16KB of RAM).
- boneIO - GPIO implementation for the BeagleBone Black for Nim.
- avr_io - Nim register bindings and utilities for AVR microcontrollers.
- avrman - A tool for managing Nim and C projects targetting AVR microcontrollers.
Language Features
Async IO
- std/async - Async/await implementation in Nim's stdlib (aka asyncdispatch).
- chronos - An efficient library for asynchronous programming.
- cps - Continuation-Passing Style for Nim.
Contracts
- contracts - Used to make contracts - elegant promises that pieces of code will fulfill certain conditions.
- contra - Lightweight and fast self-documenting design by contract programming.
Editors
- Nim Playground - Code and run Nim online.
- moe - A vim-like editor made with Nim, also supports C, Rust, Javascript, etc.
- DoongJohn's Nim playground - An alternative implementation of the Nim playground.
- Nev - A keyboard focused GUI and terminal text editor.
Error Handling
- result - Friendly, exception-free value-or-error returns, similar to Option[T].