/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.
  • nsis - Nim programming language setup tool.

System API

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

Web Application

  • 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.
  • 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.

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.

Randomization

  • 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.
  • 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.
  • imageman - Image manipulation library.
  • pixie - A full-featured 2D graphics library for Nim.

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.
  • 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.
  • nodesnim - Simple game engine based on SDL2 and OpenGL.

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.
  • Neel - A library for making Electron-like HTML/JS GUI apps.
  • 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.
  • nsciter - High-level and low-level Nim wrapper for https://sciter.com.

Hardware

  • nimvisa - Wrapper for NI-VISA instrument control library.
  • ftd2xx - Wrapper for FTDI ftd2xx library (USB to JTAG/SPI/I2C/Bitbang etc.).

Plot

  • ggplotnim - A port of ggplot2 for Nim.
  • nim-plotly - The plotting library for Nim.
  • graph - A basic plotting libiary in Nim.
  • npainter - Semi GPU-Accelerated painting software written in 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

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".

Protocols

  • nimlsp - The Language Server Protocol implementation for Nim.
  • nim-ndns - A pure Nim Domain Name System (DNS) client.
  • nim-dnsprotocol - Domain Name System (DNS) protocol for Nim programming language.
  • telebot.nim - Async client for Telegram Bot API in pure Nim.
  • dimscord - A Discord Bot & REST Library for Nim.

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.
  • nimja - Typed and compiled template engine inspired by jinja2, twig and onionhammer/nim-templates 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.
  • jshttp2 - Async HTTPS 2.0 web server.

Websocket

  • websocket.nim - Websockets for Nim.
  • ws - Simple WebSocket library for Nim.
  • news - Nim easy web socket.
  • jswebsockets - WebSockets optimized for JavaScript targets.

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.
  • scorper - A micro and elegant web framework written 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.
  • lester - Create quick documents out of Markdown, into HTML.

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.
  • clapfn - Argument parsing similar to Python's argparse.
  • cliche - AutoMagic CLI argument parsing is so Cliché.

Standard Libraries

Nim provides unique features for seamless and transparent interoperability with other technologies, some users found useful to make other standard libraries usable from Nim.

  • cpython - Python standard library for Nim.
  • Node.js - Node.js standard library 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