jc/TODO
jesse 526e1c8e8e More Vector and Matrix math and their tests
added common.jai for common math procedures
Some common procedures for smaller fixed vector sizes were made more optimal. SIMD coming later
Added tests to the math/module.jai
2025-05-31 14:46:39 -07:00

86 lines
5.6 KiB
Text

*** IN PROGRESS ***
[Judah]
017 [x] re-implement dynamic arrays (should mirror procedures on 'Static_Array')
[Jesse]
034 [math] Rect '#type,distinct Vec(4, T)' type + rectcut
002 [math] use simd for Mat4 operations
*** 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
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)
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 ***
041 [math] small test suite
011 [math] add more Vec math procedures
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?
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
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')
073 [array] standardize api across types (also add 'find' and 'find_pointer')