Context: Odin’s Most Misunderstood Feature
4 days ago
- #Odin
- #ContextSystem
- #Programming
- Odin's context system is designed for intercepting third-party code to modify functionality, such as allocation or logging.
- The context is implicitly passed by pointer in each scope, allowing for interception without modifying the original code.
- Common misunderstandings include thinking context is for minimizing typing or dynamic scoping, but its primary purpose is interception.
- Context provides default values for allocators, logging, random number generation, and user data pointers, which can be overridden.
- The system is inspired by Jonathan Blow's language but focuses on third-party code interception rather than dynamic scoping.
- Context's ABI layout is fixed to ensure stability across LIB/DLL boundaries, preventing custom fields from disrupting interception.
- Implementation choices include passing context as an implicit pointer argument and using copy-on-write semantics to prevent back-propagation.