*** IN PROGRESS *** [Judah] 065 [array] add dynamic, but stable array implementation (values should not move in memory once appended to the array; should mirror procedures on 'Static_Array') [Jesse] 011 [math] add more Vec math procedures 034 [math] Rect '#type,distinct Vec(4, T)' type + rectcut 002 [math] use simd for Mat4 operations 041 [math] small test suite *** UP NEXT (NO PARTICULAR ORDER) *** 003 [floats] 16-bit fixed point floats, 128-bit floats 005 [thirdparty/sokol] create bindings module (should use [math] types) 006 [thirdparty/sdl3] create bindings module (should use [math] types) 007 [bytes] create byte utilities module (should include Buffer type) 008 [strings] create string utilities module (include Buffer type) - blocked by 007 009 [encoding] jai-friendly binary serialization support - blocked by 007 012 [map] create a simple arena-backed hash map implementation 'Map(K, V)', should be able to hash a key of any type (must include: get, set, remove, for_expansion) - possibly blocked by 032 013 [bindings] create build/binding utilitites module (since we do this a lot) 014 [platform] add support for read file, write file, etc. 015 [meta] create metaprogramming utilitites module (AST rewriting, code generation/introspection, etc.) 016 [x] default to arena-based allocators everywhere (a la brevis/serenum) 017 [x] re-implement dynamic arrays (should mirror procedures on 'Static_Array') 018 [x] enum backed array type (can just be a 'Static_Array' specialization) 019 [rand] create random number generation module (probably port Demetri's 'pcg32_pie') 020 [net] create networking module (just a layer over sockets) 021 [net/http] simple http server/client interface - blocked by 020 022 [encoding] bebop format support? (https://docs.bebop.sh) 023 [build/wasm] create wasm build support module - blocked until 'Basic' is fully replaced 025 [window] create windowing module 027 [compress] create compression algorithm module 028 [compress] add lz4 support - blocked by 027 029 [compress] add zstd support - blocked by 027 030 [meta] add metaprogram (plugin?) to rewrite code from one jai version to another 031 [x] standardize error handling (maybe odin-style enums?) 032 [memory] more allocators! 033 [sort] create sort module with quick sort, radix sort support (in place and copy versions) 035 [memory] add debug allocator to track allocation locations, double frees, etc. (should wrap another allocator) 036 [thread] create *simple* threading module 037 [thread] add 'Mutex', 'Semaphore', 'Wait_Group' types - blocked by 036 038 [encoding] add html/xml support, via code - blocked by 008 039 [encoding] add rivit support, via code (https://judahcaruso.com/rivit.htm) - blocked by 038 040 [encoding] add markdown (commonmark?) support, via code - blocked by 038 042 [hash] create hashing module with md5 support - blocked by 012 043 [hash] add sha256 support - blocked by 012 044 [hash] add aes256 support - blocked by 012 045 [hash] add hmac support - blocked by 012 046 [fmt] create fmt module (include print with struct-based value formatting) - blocked by 008 *ask for specifics* 047 [image] create image module with png, bmp, tga, qoi support - possibly blocked by 007 048 [encoding] add varint support 049 [encoding] add spec-compliant uuid support (rfc4122) - possibly blocked by 048 050 [path/file] create os-focused path resolution and utilities module 051 [path/net] create net-focused path resolution and utilities module (should handle query parameters) 052 [thirdparty/spall] create bindings module 053 [log] create logging module (allow toggling between file and console output, log levels, etc.) - blocked by 046 054 [sound] create sound module with wav, ogg support - possibly blocked by 007 (see: stb_vorbis for reference) 055 [sound] add mp3 support - blocked by 007, possibly blocked by 027 056 [shader] platform-independant shader language (can be compiled at runtime or offline) - possibly blocked by 007 057 [platform] add support for running console commands - blocked by 014 058 [thirdparty/webgpu] create bindings module, see: wgpu/dawn (either works) 059 [platform] add support for walking directories (should capture read/write/modified time, allow recursive) 060 [x] add SOA type 061 [build/cmake] create cmake build support module 062 [bits] create bit utilities module (see: odin math/bits module) 063 [x] creating import rewriting metaprogram to automatically import .C or .H files 064 [thirdpaty/luau] create bindings module (see: https://luau.org) 066 [x] add generational ids module(?); maybe this integrates with [map] or [array]? 067 [reload, bug] fix issue with #runs being executed multiple times 068 [reload, bug] fix issue where calling 'print' from the client hits the crash allocator at random times 069 [platform] move 'os_*' procs from [reload] into this module. remove the 'os_' prefix 070 [x, bug] figure out why [meta] `for_expansion` procs aren't usable when import is namespaced 071 [math] basic shape collision detection (circle, rect, line) 072 [timestep] create drop-in fixed timestep module *** DONE *** 010 [x] make base jai files standalone (ie. [array], [memory], etc... big maybe) 042 [x] use absolute imports internally (ie. #import "jc/math"), update symlink/install process in README 000 [math] add easing procedures 004 [thirdparty/luajit] create bindings 001 [platform] create module for OS/platform-specific things 024 [x] create file to document conventions/style guide 034 [x] can we add location info to Allocator_Proc?