DEV Community

ringabout
ringabout

Posted on • Edited on

16 10 1 1 1

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.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay