/awesome-nim

A curated list of awesome Nim frameworks, libraries, software and resources.

Primary LanguageNimCreative Commons Zero v1.0 UniversalCC0-1.0

Awesome Nim Awesome

A curated list of awesome Nim frameworks, libraries, software and resources.

Nim is a statically typed compiled systems programming language. Good for everything from shell scripting to web front & backend, to ML, HPC, and embedded.

Contents

Async IO

  • nim-chronos - An efficient library for asynchronous programming.
  • cps - Continuation-Passing Style for Nim.

Threading

  • weave - A state-of-the-art multithreading runtime: message-passing based, fast, scalable, ultra-low overhead.

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 - Nimby is a very simple and unofficial package manager for nim language.

System API

  • winim - Nim's Windows API and COM Library.

Web API

  • telebot.nim - Async client for Telegram Bot API in pure Nim.
  • dimscord - A Discord Bot & REST Library for Nim.
  • nitter - Alternative Twitter front-end.

Cryptographic

  • nimcrypto - Nim cryptographic library.
  • nimAES - Advanced Encryption Standard, Rinjdael Algorithm written in Nim.
  • nim-crc32 - CRC32 for Nim, 2 proc, just pass the thing you want to do CRC.

Parsers

  • parsetoml - A Nim library to parse TOML files.
  • NimYAML - YAML implementation for Nim.

Serialization

  • nim-toml-serialization - Flexible TOML serialization not relying on run-time type information.
  • nim-serialization - A modern and extensible serialization framework for Nim.
  • frosty - Marshal native Nim objects via streams, sockets.
  • nim-protobuf-serialization - The nim-protobuf-serialization.
  • protobuf-nim - Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools.

Database

Driver

  • nimongo - Pure Nim lang MongoDB driver.
  • asyncpg - Asynchronous PostgreSQL driver for Nim language.
  • anonimongo - Another Nim pure Mongo DB driver.
  • redis - Official redis wrapper for Nim.
  • amysql - Async MySQL Connector write in pure Nim.

ORM

  • ormin - Prepared SQL statement generator , A lightweight ORM.
  • nim-allographer - A query_builder/ORM library inspired by Laravel/PHP and Orator/Python for Nim.
  • 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.

Date Time

  • nim-datetime2human - Calculate date & time with precision from seconds to millenniums. Human friendly date time as string. ISO-8601.
  • timezones - Nim timezone library compatible with the standard library.

Benchmarking

  • golden - A benchmark for compile-time and/or runtime Nim.
  • timeit - Measuring execution times written by Nim.
  • criterion - Statistic-driven micro-benchmark framework.

Random

  • nim-random - Random number generation library for Nim.
  • sysrandom.nim - A Nim library to generate random numbers and random ranges of bytes using the system's PRNG.

Data Processing

  • NimData - DataFrame API written in Nim, enabling fast out-of-core data processing.

Image

  • nimPNG - PNG (Portable Network Graphics) decoder and encoder written in Nim.
  • nimpdf - PDF document writer, written in nim lang.
  • NimSvg - The Nim-based DSL allowing to generate SVG files and GIF animations.
  • inumon - A high-level image I/O and manipulation library for Nim.
  • flippy - Flippy is a simple 2d image and drawing library.
  • imageman - Image manipulation library.

Audio

  • paramidi - A Nim library for making MIDI music.
  • omni - A DSL for low-level audio programming.

Math

Symbolic

  • symbolicnim - A symbolic library written purely in Nim.

FFT

  • impulse - Impulse will be a collection of primitives for signal processing (FFT, Convolutions).

Vector

  • vectorize - SIMD vectorization backend.
  • vmath - Math vector library for graphical things.

Matrix

  • neo - A matrix 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.

Design

  • nim-random-font-color - Random curated Fonts, pastel Colors and Seamless CSS3 Patterns for your UI/UX design, design for non-designers, poors man design.
  • chroma - Everything you want to do with colors, in nim.
  • typography - Fonts, Typesetting and Rasterization.
  • trick - Library for GBA/NDS image conversion, and more!

Embedded

  • ardunimo - Nim wrapper for Arduino + LinkIt ONE SDK by Mediatek.
  • ardunimesp - Nim wrapper for Arduino ESP8266 framework + A tool for flash, compile and make the 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).

Game Development

  • frag - 3D Game Engine.
  • nico - Nim Game Framework based on Pico-8.
  • nimgame2 - A simple 2D game engine for Nim language.
  • godot-nim - Nim bindings for Godot Engine.
  • rod - Cross-platform game engine.
  • natu - Toolkit for writing Game Boy Advance games in Nim.
  • nimgl - NimGL is a Nim library that offers bindings for popular libraries used in computer graphics.
  • SDL2 - Wrapper for SDL 2.
  • rapid - A game engine written in Nim, optimized for rapid game development and prototyping.
  • GLAD - Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.
  • nim-glm - Port of the popular glm C++ library to Nim.
  • enu - A Logo-like DSL for Godot, implemented in Nim.

Logging

Window

  • nimdow - A window manager written in Nim.
  • Nimwin - A Very Simple X11 Window Manager.

UI

  • ui - Wrapper for IUP - Beginnings of what might become Nim's official UI library.
  • fidget - Figma based UI library for nim, with HTML and OpenGL backends.

GUI

  • nimAntTweakBar - Wrapper for AntTweakBar.
  • nimx - Desktop, Mobile & Web GUI framework in Nim.
  • NiGui - The cross-platform, desktop GUI toolkit.
  • wNim - Nim's Windows GUI Framework.
  • nimqml - Qt Qml bindings for the Nim programming language.
  • webgui - Web Technologies based Crossplatform GUI Framework with Dark theme.
  • gintro - High level GObject-Introspection based GTK3/GTK4 bindings for Nim language.
  • nsciter - High-level and low-level Nim wrapper for https://sciter.com.

Plot

  • ggplotnim - A port of ggplot2 for Nim.
  • nim-plotly - The plotting library for nim-lang.
  • graph - A basic plotting lib in nim.
  • npainter - Semi GPU-Accelerated painting software written in Nim.
  • pixie - Full-featured 2d graphics library for Nim.

Terminal

  • illwill - Simple cross-platform terminal library inspired by (n)curses.
  • NimCx - Color and Utilities for the Linux Terminal.
  • nicy - A nice and icy zsh and bash prompt in Nim.

Editor

  • moe - Command line based editor.
  • paravim - A Vim-based editor for Nim.
  • nim-noise - Nim implementation of linenoise command line editor.
  • editor - A simple text editor written in Nim.
  • Aporia - Text editor to get started with Nim easily (not maintained anymore).
  • Editor Integration - Official list of editor plugins for Nim.
  • Nim Playground - Code and run Nim online.

Implementations

  • Nim - Nim (formerly known as "Nimrod") is a compiled, garbage-collected systems programming language which has an excellent productivity/performance ratio. Nim's design focuses on efficiency, expressiveness, elegance (in the order of priority).
  • Nlvm - LLVM backend for Nim.

Macros

  • cascade - Method & assignment cascades for Nim, inspired by Smalltalk & Dart.
  • macroutils - A package that makes creating macros easier.
  • nimacros - Documentation for Nim Macros.
  • pipe - Pipe operator for Nim, as seen in functional languages.
  • unpack - Sequence/object unpacking/destructuring.
  • with - The with macro for Nim.
  • zero-functional - A library providing (almost) zero-cost chaining for functional abstractions in Nim.

Package Repositories

  • Nim packages - List of packages for Nimble.
  • Nim package directory - This service allows you to explore Nim packages known to Nimble. It tests package installation and generates documentation using "nim doc".

REPL

  • INim - Interactive Nim Shell.
  • jupyternim - A Jupyter kernel for nim.

Scripting

  • Nimcr - Running Nim code with Shebangs.
  • nimr - Run nim programs like scripts.

Services

  • Luntic - Lightweight REST in-memory discovery service.

IO

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.

Tests

  • balls - A unittest macro to save the world, or at least your Sunday.

Text Processing

  • regex - Pure Nim regex engine with linear time match.
  • npeg - PEGs for Nim, another take.
  • patty - A pattern matching library for Nim.
  • gara - Macro-based pattern matching library.
  • glob - Pure library for matching file paths against Unix style glob patterns.
  • nim-datauri - Data URI Base64 UTF-8.

Translation

  • nim-tinyslation - Text string translation from free online crowdsourced API.

Template Engines

  • smalte - It is a dead simple and lightweight template engine. Specially designed for configure application before start in Docker.
  • nim-html-dsl - Nim HTML DSL.
  • nim-templates - A simple string templating library for Nim.

Web

UDP

  • netty - Reliable UDP connection library for games in Nim.

RPC

  • nim-json-rpc - Nim library for implementing JSON-RPC clients and servers.

MQTT

  • nmqtt - Native Nim MQTT client library.

HTTP server

  • httpx - Cross platform web server for Nim.
  • httpbeast - A highly performant, multi-threaded HTTP 1.1 server written in Nim.
  • GuildenStern - Genuinely multithreading integrated HTTP/1.1 + WebSocket v13 Server for POSIX-compliant OSes.
  • netkit - Out-of-the-box, stable and secure network facilities and utilities written by pure Nim.

Websocket

  • websocket.nim - Websockets for nim.
  • ws - Simple WebSocket library for nim.
  • news - Nim easy web socket.

Web Frameworks

  • Jester - The sinatra-like web framework for Nim. Jester provides a DSL for quickly creating web applications in Nim.
  • prologue - Full-Stack Web Framework written in Nim.
  • rosencrantz - DSL to write web servers, inspired by Spray and its successor Akka HTTP.
  • whip - Simple fast http server for nim based on httpbeast and nest for high performance routing.
  • basolato - A fullstack web framework for Nim based on Jester.
  • Karax - Framework for developing single page applications in Nim.
  • nim_websitecreator - Nim fullstack website framework - deploy a website within minutes.

Parsing HTML

  • Nimquery - Library for querying HTML using CSS selectors, like JavaScript's document.querySelector.

Auth

Markdown

  • HastyScribe - Self-contained markdown compiler generating self-contained HTML documents.
  • nim-markdown - A Beautiful Markdown Parser in the Nim World.

Development Tools

Binding Generators

  • Nimpy - Gen Python wrappers, call python from nim.
  • nimterop - Nimterop is a Nim package that aims to make C/C++ interop seamless.
  • c2nim - c2nim is a tool to translate Ansi C code to Nim.
  • jnim - Nim - Java bridge.

Command-Line Interface Automation

  • cligen - Infer & generate command-line interace/option/argument parsers.
  • docopt.nim - Command-line args parser.
  • nim-argparse - Argument parsing for Nim.

Resources

Books

  • Nim in Action - Nim's first book.
  • Nim Days - A project to document my journey with nim with mini applications, libraries documented from A to Z and also to provide new Nim users with some extra in depth information.
  • Nimbus Handbook - A comprehensive introduction to the Nim programming language.
  • nim-style-guide - Status style guid for the Nim language.

Blogs

Community

Websites

  • Nim Basics - Tutorial for beginners and people just starting with Nim.
  • How I start - Great guide going from 0 to a bf interpreter and then a bf to Nim compiler.
  • Learn Nim in Y minutes - Whirlwind tour.
  • Nim by Example - Series of pages and examples for learning the Nim programming language.
  • Nim for Python programmers - Guide to Nim for people with experience in Python.
  • Rosettacode:Nim - 100s of solutions for various tasks using Nim (Implementations available in other languages as well).
  • dev - Nim blogs in dev.io.

Videos