Awesome Nim
Projects in https://github.com/ringabout/awesome-nim
If you want to add new projects, make sure they are in nimble.directory first.
It you want to join me, connect me in discord.
A curated list of awesome Nim frameworks, libraries and software.
Contents
Table of 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
- Tests
- Text Processing
- Web
- Markdown
- Development Tools
- Resources
- Contributing
Async IO
- nim-chronos - An efficient library for asynchronous programming. [MIT]
- cps - Continuation-Passing Style for Nim. [MIT]
Threading
- weave - A state-of-the-art multithreading runtime: message-passing based, fast, scalable, ultra-low overhead. [MIT/Apache-2.0]
Build Systems/Package Management
- ChooseNim - Installing and switching between Nim versions (à la rustup, pyenv). [MIT]
- Nake - Describe your Nim builds as tasks. [MIT]
- Nawabs - A build system that throws away version numbering in favor of git hashes. [MIT]
- Nimble - Nimble can be used as a build system. [BSD]
- nimph - Nim package hierarchy manager from the future. [MIT]
- nimby - Nimby is a very simple and unofficial package manager for nim language.
System API
- winim - Nim's Windows API and COM Library. [MIT]
Web API
- telebot.nim - Async client for Telegram Bot API in pure Nim. [MIT]
- dimscord - A Discord Bot & REST Library for Nim. [MIT]
- nitter - Alternative Twitter front-end. [AGPL]
Cryptographic
- nimcrypto - Nim cryptographic library. [MIT]
- 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. [MIT]
Parsers
Serializtion
- nim-toml-serialization - Flexible TOML serialization [not] relying on run-time type information. [MIT/Apache-2.0]
- nim-serialization - A modern and extensible serialization framework for Nim. [MIT/Apache-2.0]
- frosty - Marshal native Nim objects via streams, sockets. [MIT]
- nim-protobuf-serialization - nim-protobuf-serialization. [MIT/Apache-2.0]
- protobuf-nim - Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools. [MIT]
Database
Driver
- nimongo - Pure Nim lang MongoDB driver. [MIT]
- asyncpg - Asynchronous PostgreSQL driver for Nim language. [MIT]
- anonimongo - Another Nim pure Mongo DB driver. [MIT]
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. [MIT]
- nim-gatabase - Connection-Pooling Compile-Time ORM for Nim. [MIT]
- 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. [LGPL]
- timezones - Nim timezone library compatible with the standard library. [MIT]
Benchmarking
- golden - A benchmark for compile-time and/or runtime Nim. [MIT]
- timeit - Measuring execution times written by Nim. [MIT]
- criterion - Statistic-driven micro-benchmark framework.
Random
- nim-random - Random number generation library for Nim. [MIT]
- sysrandom.nim - A Nim library to generate random numbers and random ranges of bytes using the system's PRNG. [BSD-3]
Data Processing
- NimData - DataFrame API written in Nim, enabling fast out-of-core data processing. [MIT]
Image
- nimPNG - PNG (Portable Network Graphics) decoder and encoder written in Nim. [MIT]
- nimpdf - PDF document writer, written in nim lang. [MIT]
- NimSvg - Nim-based DSL allowing to generate SVG files and GIF animations.
- inumon - A high-level image I/O and manipulation library for Nim. [MPL]
Audio
- paramidi - A Nim library for making MIDI music. [Unlicense]
Math
Symbolic
- symbolicnim - A symbolic library written purely in Nim. [MIT]
FFT
- impulse - Impulse will be a collection of primitives for signal processing (FFT, Convolutions, ...). [MIT/Apache-2.0]
Vector
- vectorize - SIMD vectorization backend. [MIT/Apache-2.0]
- vmath - Math vector library for graphical things.
Matrix
- neo - A matrix library. [Apache-2.0]
Deep Learning
- Arraymancer - A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU, OpenCL and embedded devices. [Apache-2.0]
- 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. [MIT]
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. [LGPL]
- chroma - Everything you want to do with colors, in nim. [MIT]
- typography - Fonts, Typesetting and Rasterization. [MIT]
- trick - Library for GBA/NDS image conversion, and more! [Zlib]
Embedded
- msp430f5510 - Run Nim on MSP430f5510 micro-controller (6KB of RAM).
- stm32f3 - Run Nim on STM32F3 micro-controller (16KB of RAM).
- 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.
Game Development
- frag - 3D Game Engine. [MIT]
- nico - Nim Game Framework based on Pico-8. [MIT]
- nimgame2 - A simple 2D game engine for Nim language. [MIT]
- godot-nim - Nim bindings for Godot Engine. [MIT]
- rod - Cross-platform game engine. [MIT]
- natu - Toolkit for writing Game Boy Advance games in Nim. [Zlib]
- nimgl - NimGL is a Nim library that offers bindings for popular libraries used in computer graphics. [MIT]
- SDL2 - Wrapper for SDL 2. [MIT]
- rapid - A game engine written in Nim, optimized for rapid game development and prototyping. [MIT]
- GLAD - Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs. [MIT]
- nim-glm - Port of the popular glm C++ library to Nim. [MIT]
- enu - A Logo-like DSL for Godot, implemented in Nim. [MIT]
Logging
- nim-chronicles - A crafty implementation of structured logging for Nim. [MIT/Apache 2.0]
Windows
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 - cross-platform, desktop GUI toolkit. [MIT]
- wNim - Nim's Windows GUI Framework. [MIT]
- nimqml - Qt Qml bindings for the Nim programming language. [LGPL]
- webgui - Web Technologies based Crossplatform GUI Framework with Dark theme. [MIT]
- gintro - High level GObject-Introspection based GTK3/GTK4 bindings for Nim language. [MIT]
- nsciter - High-level and low-level Nim wrapper for https://sciter.com. [MIT]
Plot
- ggplotnim - A port of ggplot2 for Nim. [MIT]
- nim-plotly - plotting library for nim-lang. [MIT]
- graph - A basic plotting lib in nim.
- npainter -Semi GPU-Accelerated painting software written in Nim. [Apache-2.0]
Terminal
- NimCx - Color and Utilities for the Linux Terminal. [MIT]
- nicy - A nice and icy zsh and bash prompt in Nim. [MIT]
Editor
- moe - Command line based editor. [GPL]
- paravim - A Vim-based editor for Nim. [Unlicense]
- nim-noise - Nim implementation of linenoise command line editor. [MIT]
- editor - A simple text editor written in Nim. [MIT]
- 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). [MIT] website
- Nlvm - LLVM backend for Nim. [MIT]
Macros
- with - with macro for Nim.
- macroutils - A package that makes creating macros easier.
- cascade - Method & assignment cascades for Nim, inspired by Smalltalk & Dart. [MIT]
- pipe - Pipe operator for Nim, as seen in functional languages. [MIT]
- unpack - Sequence/object unpacking/destructuring. [MIT]
- nimacros - Documentation for Nim Macros.
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. [MIT]
- jupyternim - A Jupyter kernel for nim. [MIT]
Scripting
Services
- Luntic - Lightweight REST in-memory discovery service. [Apache-2.0]
IO
- ioselectors - ioselectors plus for Nim. [Apache-2.0]
- wepoll - Windows epoll wrapper for Nim. [MIT]
- nim-faststreams - Nearly zero-overhead input/output streams for Nim. [MIT/Apache-2.0]
- lockfreequeues - Lock-free queue implementations for Nim. [MIT]
Tests
- testes - A small unittest framework with decent support. [MIT]
Text Processing
- regex - Pure Nim regex engine with linear time match. [MIT]
- npeg - PEGs for Nim, another take. [MIT]
- patty - A pattern matching library for Nim. [Apache-2.0]
- gara - Macro-based pattern matching library. [MIT]
- glob - Pure library for matching file paths against Unix style glob patterns. [MIT]
- nim-datauri - Data URI Base64 UTF-8. [LGPL]
Translation
- nim-tinyslation - Text string translation from free online crowdsourced API. [LGPL]
Template Engines
- smalte - It is a dead simple and lightweight template engine. Specially designed for configure application before start in Docker. [MIT]
- nim-html-dsl - Nim HTML DSL. [MIT]
- nim-templates - A simple string templating library for Nim. [BSD-3]
Web
UDP
- netty - Reliable UDP connection library for games in Nim.
RPC
- nim-json-rpc - Nim library for implementing JSON-RPC clients and servers. [MIT/Apache-2.0]
MQTT
- nmqtt - Native Nim MQTT client library. [MIT]
HTTP server
- httpx - Cross platform web server for Nim. [Apache-2.0]
- httpbeast - A highly performant, multi-threaded HTTP 1.1 server written in Nim. [MIT]
- GuildenStern - Genuinely multithreading integrated HTTP/1.1 + WebSocket v13 Server for POSIX-compliant OSes. [MIT]
- netkit - Out-of-the-box, stable and secure network facilities and utilities written by pure Nim. [MIT]
Websocket
- websocket.nim - Websockets for nim. [MIT]
- ws - Simple WebSocket library for nim. [MIT]
- news - Nim easy web socket. [MIT]
Web Frameworks
- Jester - The sinatra-like web framework for Nim. Jester provides a DSL for quickly creating web applications in Nim. [MIT]
- prologue - Full-Stack Web Framework written in Nim. [Apache-2.0]
- 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.
- oauth - OAuth library for Nim. [Apache-2.0]
- nim_websitecreator - Nim fullstack website framework - deploy a website within minutes. [PPL]
Parsing HTML
-
Nimquery - Library for
querying HTML using CSS selectors, like Javascript's
document.querySelector
. [MIT]
Markdown
- HastyScribe - Self-contained markdown compiler generating self-contained HTML documents.
- nim-markdown - A Beautiful Markdown Parser in the Nim World. [MIT]
Development Tools
Binding Generators
- Nimpy - Gen Python wrappers, call python from nim. [MIT]
- nimterop - Nimterop is a Nim package that aims to make C/C++ interop seamless. [MIT]
- c2nim - c2nim is a tool to translate Ansi C code to Nim. [MIT]
- jnim - Nim - Java bridge. [MIT]
Command-Line Interface Automation
- cligen - Infer & generate command-line interace/option/argument parsers. [MIT]
- docopt.nim - Command-line args parser. [MIT]
- nim-argparse - Argument parsing for Nim. [MIT]
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.
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.
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
. - 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.
Contributing
Contributions are very welcome!
Please have a look at CONTRIBUTING for guidelines.
Top comments (0)