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.
- Async IO
- Threading
- Build Systems/Package Management
- System API
- Web Application
- Cryptographic
- Parsers
- Serialization
- Database
- Date Time
- Benchmarking
- Randomization
- Data Processing
- Image
- Audio
- Math
- Deep Learning
- Design
- Embedded
- Game Development
- Logging
- Window
- UI
- GUI
- Hardware
- Plot
- Terminal
- Editor
- Implementations
- Macros
- Package Repositories
- Protocols
- REPL
- Scripting
- Services
- IO
- Compression
- Tests
- Text Processing
- Web
- Markdown
- Development Tools
- Standard Libraries
- Resources
- nim-chronos - An efficient library for asynchronous programming.
- cps - Continuation-Passing Style for Nim.
- weave - A state-of-the-art multithreading runtime: message-passing based, fast, scalable, ultra-low overhead.
- 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.
- winim - Nim's Windows API and COM Library.
- nitter - Alternative Twitter front-end.
- 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.
- 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.
- 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.
- 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.
- 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.
- golden - A benchmark for compile-time and/or runtime Nim.
- timeit - Measuring execution times written by Nim.
- criterion - Statistic-driven micro-benchmark framework.
- 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.
- NimData - DataFrame API written in Nim, enabling fast out-of-core data processing.
- 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.
- symbolicnim - A symbolic library written purely in Nim.
- impulse - Impulse will be a collection of primitives for signal processing (FFT, Convolutions).
- neo - A matrix library.
- 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.
- 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!
- 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).
- 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.
- nim-chronicles - A crafty implementation of structured logging for Nim.
- nim-morelogging - Logging library for Nim.
- 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.
- 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.
- nimvisa - Wrapper for NI-VISA instrument control library.
- ftd2xx - Wrapper for FTDI ftd2xx library (USB to JTAG/SPI/I2C/Bitbang etc.).
- 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.
- 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.
- 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.
- Editor Integration - Official list of editor plugins for Nim.
- Nim Playground - Code and run Nim online.
- DoongJohn's Nim playground - An alternative implementation of the Nim playground.
- 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.
- 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.
- 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".
- 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.
- INim - Interactive Nim Shell.
- jupyternim - A Jupyter kernel for Nim.
- Luntic - Lightweight REST in-memory discovery service.
- 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.
- 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.
- balls - A unittest macro to save the world, or at least your Sunday.
- 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.
- nim-tinyslation - Text string translation from free online crowdsourced API.
- 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.
- netty - Reliable UDP connection library for games in Nim.
- nim-json-rpc - Nim library for implementing JSON-RPC clients and servers.
- nmqtt - Native Nim MQTT client library.
- 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.nim - Websockets for Nim.
- ws - Simple WebSocket library for Nim.
- news - Nim easy web socket.
- jswebsockets - WebSockets optimized for JavaScript targets.
- 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.
- Nimquery - Library for querying HTML using CSS selectors, like JavaScript's
document.querySelector
.
- nim-httpauth - HTTP Authentication library for Nim.
- oauth - OAuth library for Nim.
- 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.
- 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.
- 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é.
Nim provides unique features for seamless and transparent interoperability with other technologies, some users found useful to make other standard libraries usable from Nim.
- 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.
- 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.
- The Nim forum
- The Nim IRC channel
- The Nim Gitter channel
- The Nim Discord channel
- The Nim mailing list (forum archive)
- The Nim SubReddit
- The Nim Telegram
- The Nim Telegram in Spanish
- 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
.
- 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.