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
- Threading
- Build Systems/Package Management
- System API
- Web API
- Cryptographic
- Parsers
- Serialization
- Database
- Date Time
- Benchmarking
- Random
- Data Processing
- Image
- Audio
- Math
- Deep Learning
- Design
- Embedded
- Game Development
- Logging
- Window
- UI
- GUI
- Plot
- Terminal
- Editor
- Implementations
- Macros
- Package Repositories
- REPL
- Scripting
- Services
- IO
- Compression
- Tests
- Text Processing
- Web
- Markdown
- Development Tools
- Resources
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
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
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
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
- nim-chronicles - A crafty implementation of structured logging for Nim.
- nim-morelogging - Logging library for Nim.
Window
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
Services
- Luntic - Lightweight REST in-memory discovery service.
IO
- ioselectors - The ioselectors plus for Nim.
- wepoll - Windows epoll wrapper for Nim.
- nim-faststreams - Nearly zero-overhead input/output streams for Nim.
- lockfreequeues - Lock-free queue implementations for 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.
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
- nim-httpauth - HTTP Authentication library for Nim.
- oauth - OAuth library for Nim.
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
- Nim Blog - Official Nim blog.
- Goran Krampe - Wrapping C, arduino, performance, links.
- HookRace - Blog with multiple articles on Nim.
- Rants from the Ballmer Peak - Posts on Nim and other languages.
- Yuriy Glukhov's blog - Making and shipping a game in Nim.
- Araq's Musings - Blog on Nim from the creator himself.
- Nim memory - This is a small tutorial explaining how Nim stores data in memory.
- Nim Arc - Make a friendly explanation of ARC and its implications for the programmer.
Community
- The Nim forum
- The Nim IRC channel
- The Nim Gitter channel
- The Nim Discord channel
- The Nim mailing list
- The Nim SubReddit
- The Nim Telegram
- The Nim Telegram on Spanish
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
- Nim official Channel - Official videos introduce the powerful and interesting part in Nim language.
- Nim for beginners - This is a video series meant to teach people programming in Nim to people who have never programmed before, or are new to Nim.
- Make a website with Nim - This is a video series meant to teach people make a website with Nim
using
jester
. - Learning Nim - Tutorial video series on learning Nim showcasing various features of the language and its libraries.
- araq twitch - The live broadcast regarding Nim language.
- alehander42 twitch - The live broadcast regarding Nim language.
- clyybber twitch - The live broadcast regarding Nim language.
- d0m96 twitch - The live broadcast regarding Nim language.
- disruptek twitch - The live broadcast regarding Nim language.
- yardanico twitch - The live broadcast regarding Nim language.
- zachary_carter twitch - The live broadcast regarding Nim language.