package tiny_libs

  1. Overview
  2. Docs
From-scratch libraries for teaching: graphics, audio, compression, crypto, networking and more

Install

dune-project
 Dependency

Authors

Maintainers

Sources

0.3.6.tar.gz
md5=7c636383d146d30ac6f2fa234a6253c8
sha512=c79f3823c5f8f57e5038eb640d487c61168b84aa07c61999d6622ef9fd0c890e2b03b4c6a7cdbbe9352a49e25dda00ac7bb14693cee8e3d7beeed251351a2af0

doc/index.html

tiny_libs

The libraries under the Elm Playground, written from scratch for teaching: one idea per module, each interface with its diagram, its worked example and its references. None of them knows the Playground: a module here speaks pixels, samples, bodies, bytes or rectangles, never shapes.

Each is a library of its own, named tiny_libs.<name> outside this repository, for example in a dune file:

(executable
 (name main)
 (libraries tiny_libs.crypto tiny_libs.graphics_png))

The libraries are unwrapped: their modules are used by their own names, Sha256.digest, Png.decode.

Core

tiny_libs.core: a small part of Elm's core, and a calendar.

tiny_libs.random: the seeded generator, the same numbers natively and in a browser.

Cryptography

tiny_libs.crypto: SHA-1, and what TLS 1.3 needs.

Compression

tiny_libs.compression: what the image, video and audio formats share.

tiny_libs.compression_brotli_words: Brotli's static dictionary, 120 KB, for the programs that ask for it.

Graphics

The core (tiny_libs.graphics_core) and 2D geometry (tiny_libs.graphics_2d_geometry):

The 2D rasterizer (tiny_libs.graphics_2d) and the fonts (tiny_libs.graphics_font):

The 3D rasterizer (tiny_libs.graphics_3d) and the geometry all 3D renderers share (tiny_libs.graphics_3d_geometry):

The ray tracer (tiny_libs.graphics_raytrace), and the GPU's retained meshes (tiny_libs.graphics_gpu):

Image formats, a library each (tiny_libs.graphics_rgba, tiny_libs.graphics_png, tiny_libs.graphics_gif, tiny_libs.graphics_jpeg, tiny_libs.graphics_xpm, tiny_libs.graphics_ilbm, tiny_libs.graphics_svg), and their loading, native only (tiny_libs.graphics_images):

Image processing (tiny_libs.graphics_imaging):

Video formats, a library each (tiny_libs.graphics_movie, tiny_libs.graphics_yuv, tiny_libs.graphics_y4m, tiny_libs.graphics_fli, tiny_libs.graphics_avi, tiny_libs.graphics_mpeg1, tiny_libs.graphics_mpeg_system):

Animation, Core Animation's ideas (tiny_libs.graphics_animation):

Physics

In 2D (tiny_libs.physics_2d):

In 3D (tiny_libs.physics_3d):

Audio

The samples (tiny_libs.audio_signal) and the building blocks of a sound (tiny_libs.audio_synthesis):

The engine (tiny_libs.audio):

The formats, a library each (tiny_libs.audio_wav, tiny_libs.audio_midi, tiny_libs.audio_abc, tiny_libs.audio_mod, tiny_libs.audio_mpeg, tiny_libs.audio_vorbis):

A synthesizer's live blocks (tiny_libs.audio_instruments) and effects (tiny_libs.audio_effects):

Game AI

Moving (tiny_libs.ai_movement), deciding (tiny_libs.ai_decision), bots (tiny_libs.ai_bots), searching (tiny_libs.ai_search), learning (tiny_libs.ai_learning); all five are tiny_libs.ai:

Networking

The protocols as bytes in, bytes out (tiny_libs.networking_protocols), mail (tiny_libs.networking_mail), the netcode of multiplayer games (tiny_libs.networking_netcode); all three are tiny_libs.networking:

TLS 1.3 (tiny_libs.networking_tls):

The sockets, native only (tiny_libs.networking_unix):

GUI

tiny_libs.gui: widgets, the four architectures, layout, text.

Game feel

tiny_libs.juice:

The terminal

tiny_libs.terminal, and running in a real terminal, native only (tiny_libs.terminal_unix):

Code

tiny_libs.highlight_code: what a code view needs to colour a file.