package tiny_libs
Install
dune-project
Dependency
Authors
Maintainers
Sources
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.
BasicsColorSet_Sets over ordered types.KeyboardTimeCmdSubProgramBase64CivilClockJulianRecur
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.
HuffmanInflateDeflateZlibGzipCrc32Adler32ZstdFseXxhashBrotliBrotli_dictionaryLzwPackbitsBitsVlc
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):
ProjectClipCullTriangleInterpolateZbufferPainterShadingTextureRenderVec3Mat4CameraLightingRayMaterial
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):
LutHistogramHslConvolveGaussianSobelMedianAdd_noiseScaleMaskCompositeBrushGradientBlendLayersPixels
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):
BodyShapeForceIntegrateBroadphaseCollideContactResolveSolverJoint2dSpringsParticlesEnergyKeplerPlanets
In 3D (tiny_libs.physics_3d):
QuatMat3Body3dForce3dIntegrate3dBroadphase3dCollide3dSweep3dContact3dResolve3dSolver3dJoint3dEnergy3dHitbox3d
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):
WavMidiAbcDoremiModMod_playerPaulaMpeg_audioMpeg_audio_headerLayer2Layer3Layer3_tablesImdctPolyphaseVorbisOgg
A synthesizer's live blocks (tiny_libs.audio_instruments) and effects (tiny_libs.audio_effects):
VcoLfoDriftVoicingPolyphonyMoog_ladderDiode_ladderSvfModalFm_algorithmDx_envelopeSamplerSequencerEffectDriveEqModulationModulated_delayPhaserDelayReverbDynamicsLeslieRack
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:
PathfindSteeringFlockFsmBehaviorUtilitySenseBotMinimaxDeepeningZobristMctsMatrixNeuronNetBackpropGradTrainQlearn
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:
UrlUrlencodedHttpWebsocketIrcSmtpPop3WireTransportMailMimeMboxMail_threadChecksumSim_netInputsLockstepRollbackSnapshotPredictionInterpolation
TLS 1.3 (tiny_libs.networking_tls):
The sockets, native only (tiny_libs.networking_unix):
TcpUdpWorkerHttp_clientHttp_requestHttp_serverTls_clientTls_tunnelServerRelayRelay_clientUniverse_serverIrc_serverMail_serverConnect
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.