An open API service indexing awesome lists of open source software.

awesome-nim

A curated list of awesome Nim frameworks, libraries, software and resources.
https://github.com/ringabout/awesome-nim

Last synced: 5 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. -->
      • 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_blowfish` library
    • 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. -->
      • laser - Carefully-tuned primitives for running tensor and image-processing code on CPU, GPUs and accelerators.
    • 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.
      • neo - A matrix library.
  • 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 `not` relying 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.
    • 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](https://indiscipline.github.io/cozycliparser/).
      • Cliquet - A CLI args and config file parser merging both into a single object, with automatic help generation.
      • clapfn - Argument parsing similar to Python's argparse.
    • 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 c` or a `nimscript` VM, `import [anything]`.
      • INim - Interactive Nim Shell.
    • 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.
      • 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.
      • c4 - Modular and extensible 2D and 3D game framework for Nim.
    • 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.
      • enu - 3D live coding with a Logo-like DSL for Godot, implemented in Nim.
    • 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.