Skip to content

gecko0307/dlib

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

dlib logo

dlib is a high-level general purpose library for D language intended to game engine developers. It provides basic building blocks for writing graphics-intensive applications: containers, data streams, linear algebra and image decoders.

dlib has no external dependencies aside D's standard library. dlib is created and maintained by Timur Gafarov.

GitHub Actions CI Status DUB Package DUB Downloads License Codecov Gitter

If you like dlib, please support its development on Patreon or Liberapay. You can also make one-time donation via PayPal or NOWPayments. I appreciate any support. Thanks in advance!

Important: if you want to use dlib on macOS then, please, first read the manifesto.

Important message to users of dlib due to the 2022 Ukraine crisis

I, Timur Gafarov, creator and maintainer of dlib, live in Russia. dlib has contributors from both Ukraine and Russia, as well as other countries of the world. When working on Open Source software, there are no borders between people. I strongly believe that politics should not prevent people from sharing knowledge with each other, creating new things and solving intellectual problems.

Yet the current political situation can lead to catastrophic consequences, up to the disconnection of all Russian developers from the world community for undefined period, which will seriously affect the projects in which they are involved. I hope these fears don't come true, but in case of the worst scenario, I will not be able to participate in the development of dlib, Dagon and other projects and manage their packages in Dub registry.

Therefore, I strongly discourage using dlib as a critical dependency in important software products until the situation improves and there is confidence in the future for Russian developers.

What's inside

Currently dlib consists of the following packages:

  • dlib.core - basic functionality used by other modules (memory management, streams, threads, etc.)
  • dlib.container - generic data structures (GC-free dynamic and associative arrays and more)
  • dlib.filesystem - abstract FS interface and its implementations for Windows and POSIX filesystems
  • dlib.math - linear algebra and numerical analysis (vectors, matrices, quaternions, linear system solvers, interpolation functions, etc.)
  • dlib.geometry - computational geometry (ray casting, primitives, intersection, etc.)
  • dlib.image - image processing (8-bit, 16-bit and 32-bit floating point channels, common filters and convolution kernels, resizing, FFT, HDRI, animation, graphics formats I/O: JPEG, PNG/APNG, BMP, TGA, HDR)
  • dlib.audio - sound processing (8 and 16 bits per sample, synthesizers, WAV export and import)
  • dlib.network - networking and web functionality
  • dlib.memory - memory allocators
  • dlib.text - text processing, GC-free strings, Unicode decoding and encoding
  • dlib.serialization - data serialization (XML and JSON parsers)
  • dlib.coding - various data compression and coding algorithms
  • dlib.concurrency - a thread pool.

Supported Compilers

dlib is automatically tested for compatibility with latest releases of DMD and LDC. Older releases formally are not supported, but in practice usually are, to some extent. There's no guaranteed support for GDC and other D compilers.

Documentation

There are ddox documentation generated from source code (dub build --build=ddox) and GitHub wiki. Be aware that documentation is currently incomplete. I'm running a Patreon campaign to reach $100 funding per month - help me get there to finish the documentation.

For quick support and overall discussions, use Gitter chat room.

License

Copyright (c) 2011-2022 Timur Gafarov, Martin Cejp, Andrey Penechko, Vadim Lopatin, Nick Papanastasiou, Oleg Baharev, Roman Chistokhodov, Eugene Wissner, Roman Vlasov, Basile Burg, Valeriy Fedotov, Ferhat Kurtulmuş. Distributed under the Boost Software License, Version 1.0 (see accompanying file COPYING or at https://www.boost.org/LICENSE_1_0.txt).

Sponsors

Jan Jurzitza (WebFreak), Daniel Laburthe, Rafał Ziemniewski, Kumar Sookram, Aleksandr Kovalev, Robert Georges, Rais Safiullin (SARFEX), Benas Cernevicius, Koichi Takio, Konstantin Menshikov.

Users

  • Dagon - 3D game engine for D
  • Electronvolt - work-in-progress first person puzzle game
  • DlangUI - native UI toolkit for D
  • rengfx - game engine based on raylib
  • Voxelman - voxel-based game engine
  • Laser Patriarch - Ludum Dare 36 participant, a rougelike with random maps
  • Anchovy - multimedia library for games and graphics apps
  • RIP - image processing and analysis library by LightHouse Software
  • GeneticAlgorithm - genetic algorithms library
  • Orb - a game/engine with procedural content
  • Leptbag - physics simulator by Gamma-Lab. Written in C++, but supports D plugins
  • aoynthesizer - sound synthesizer based on Lisp-like scripting language
  • D-VXLMapPreview - isometric preview generator for Ace of Spades and Iceball maps
  • dlib-webp - WebP image format decoder based on libwebp
  • SMSFontConverter - a program for generating Sega Master System fonts.

If you use dlib, please tell me by email (gecko0307@gmail.com), and I'll add your link to the list.