DEV Community

ringabout
ringabout

Posted on • Updated on

Awesome Nim

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

  • 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

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

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

  • nimdow - A window manager written in Nim. [GPL]
  • 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 - 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

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

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

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

Contributing

Contributions are very welcome!

Please have a look at CONTRIBUTING for guidelines.

Top comments (0)