Skip to content

API & Extension Review

Jonathan Hoffstadt edited this page Nov 19, 2024 · 39 revisions

Table of Contents

Status

Status Legend

The status symbols found below will be used throughout this document, but I will further explain them here.

Symbol Description Notes
βœ”οΈ 1.0 API is stable (will not be broken) but can be added to
🟒 Review Needed Candidate for 1.0. Just need more eyes on the API
🟑 Beta Most of the API is stable but there are known changes needed
πŸ”΄ Active Development API is under active development and subject to frequent changes
πŸ“ Documentation Needed This doesn't hold up 1.0
πŸš₯ Tests Needed This doesn't hold up 1.0

Core

The Core of Pilot Light is very small and entirely contained in the src directory. The Core APIs are found in the pl.h header file and are required by any Pilot Light application. The current status of these APIs can be found in the table below:

API Status Description
Base platform agnostic systems
API Registry βœ”οΈ πŸ“ πŸš₯
Data Registry βœ”οΈ πŸ“ πŸš₯
Extension Registry βœ”οΈ πŸ“ πŸš₯
IO βœ”οΈ πŸ“ πŸš₯ keyboard + mouse + event input/output

Extensions

If some functionality can be an extension, then it should be. Most of the real work is put into the extensions which are found in the extensions directory. The Standard extensions are those included directly in the Pilot Light code base. The current status of the APIs provided by these extensions can be found in the table below:

API Status File Description
Log βœ”οΈ πŸ“ πŸš₯ pl_log_ext.h simple logger
Profile βœ”οΈ πŸ“ πŸš₯ pl_profile_ext.h simple profiler
File βœ”οΈ πŸ“ πŸš₯ pl_file_ext.h simple binary file API
Library βœ”οΈ πŸ“ πŸš₯ pl_library_ext.h shared library loading
Window βœ”οΈ πŸ“ πŸš₯ pl_window_ext.h simple windowing
Network βœ”οΈ πŸ“ πŸš₯ pl_network_ext.h UDP/TCP API
Threads βœ”οΈ πŸ“ πŸš₯ pl_threads_ext.h basic thread & synchronization primitives
Atomics βœ”οΈ πŸ“ πŸš₯ pl_atomics_ext.h basic atomic primitives
Virtual Memory βœ”οΈ πŸ“ πŸš₯ pl_virtual_memory_ext.h virtual memory access
String Intern βœ”οΈ πŸ“ πŸš₯ pl_string_intern_ext.h string interning
Image βœ”οΈ πŸ“ πŸš₯ pl_image_ext.h image loading
Stats βœ”οΈ πŸ“ πŸš₯ pl_stats_ext.h statistics
Rect Pack βœ”οΈ πŸ“ πŸš₯ pl_rect_pack_ext.h rectangle packing
Job βœ”οΈ πŸ“ πŸš₯ pl_job_ext.h basic job system
GPU Allocators βœ”οΈ πŸ“ πŸš₯ pl_gpu_allocators_ext.h GPU allocators
Shader βœ”οΈ πŸ“ πŸš₯ pl_shader_ext.h shader compiling
Draw βœ”οΈ πŸ“ πŸš₯ pl_draw_ext.h 2D/3D drawing
UI βœ”οΈ πŸ“ πŸš₯ pl_ui_ext.h debug UI
Profile βœ”οΈ πŸ“ πŸš₯ pl_profile_ext.h profiler
Graphics βœ”οΈ πŸ“ pl_graphics_ext.h graphics API abstraction over Vulkan & Metal 2.0
Draw Backend βœ”οΈ πŸ“ pl_draw_backend_ext.h draw backend using pl_graphics_ext.h
ECS 🟑 πŸ“ pl_ecs_ext.h
Model Loader 🟑 πŸ“ pl_model_loader_ext.h model loaders
Resource Manager πŸ”΄ πŸ“ πŸš₯ pl_resource_ext.h resource manager
Renderer πŸ”΄ πŸ“ pl_renderer_ext.h reference renderer

Libraries

The Libraries are referring to the STB style libraries found in the libs directory. These are completely standalone libraries. The status of this can be seen below:

Library Status File Description
Data Structures βœ”οΈ πŸš₯ pl_ds.h minimal data structures
JSON βœ”οΈ πŸš₯ pl_json.h JSON parser
Log βœ”οΈ πŸš₯ pl_log.h logger
Math βœ”οΈ πŸš₯ pl_math.h math
Memory βœ”οΈ πŸš₯ pl_memory.h memory allocators
Profiler βœ”οΈ πŸš₯ pl_profile.h profiler
STL βœ”οΈ πŸš₯ pl_stl.h STL File parser
String βœ”οΈ πŸš₯ pl_string.h string utilities
Testing βœ”οΈ pl_test.h minimal testing library
Clone this wiki locally