Daslang documentation Logo
0.6.2
  • Daslang 0.6.2 Reference Manual
    • 1. Introduction
      • 1.1. Performance.
      • 1.2. How it looks?
      • 1.3. Generic programming and type system
      • 1.4. Compilation time macros
      • 1.5. Features
    • 2. Design Philosophy
      • 2.1. Origins
      • 2.2. Audience
      • 2.3. Core Design Principles
      • 2.4. Performance Model
      • 2.5. Type System
      • 2.6. Syntax: Gen1 and Gen2
      • 2.7. AI-Driven Syntax Evolution
      • 2.8. Embedding and Beyond
      • 2.9. The Rename: daScript → daslang
      • 2.10. Competitive Landscape
      • 2.11. Summary
    • 3. The language
      • 3.1. Program Structure
        • 3.1.1. File Layout
        • 3.1.2. Module Declaration
        • 3.1.3. Require Declaration
        • 3.1.4. Options Declaration
        • 3.1.5. Top-Level Declarations
        • 3.1.6. Visibility
        • 3.1.7. Entry Points
        • 3.1.8. Expect Declaration
        • 3.1.9. Program vs. Module
        • 3.1.10. Execution Lifecycle
        • 3.1.11. Complete Example
      • 3.2. Lexical Structure
        • 3.2.1. Identifiers
        • 3.2.2. Keywords
        • 3.2.3. Operators
        • 3.2.4. Other Tokens
        • 3.2.5. Literals
        • 3.2.6. Comments
        • 3.2.7. Automatic Semicolons
      • 3.3. Values and Data Types
        • 3.3.1. Integer
        • 3.3.2. Float
        • 3.3.3. Bool
        • 3.3.4. String
        • 3.3.5. Type Conversion and Casting
        • 3.3.6. Table
        • 3.3.7. Array
        • 3.3.8. Struct
        • 3.3.9. Classes
        • 3.3.10. Variant
        • 3.3.11. Tuple
        • 3.3.12. Enumeration
        • 3.3.13. Bitfield
        • 3.3.14. Function
        • 3.3.15. Reference
        • 3.3.16. Pointers
        • 3.3.17. Smart Pointers
        • 3.3.18. Iterators
      • 3.4. Pointers
        • 3.4.1. Pointer types
        • 3.4.2. Creating pointers
        • 3.4.3. Dereferencing
        • 3.4.4. Null safety
        • 3.4.5. Deletion
        • 3.4.6. Pointer arithmetic
        • 3.4.7. Const widening when passing args
        • 3.4.8. Void pointers
        • 3.4.9. intptr
        • 3.4.10. reinterpret
        • 3.4.11. Type info
        • 3.4.12. Summary
      • 3.5. Constants, Enumerations, Global variables
        • 3.5.1. Constant
        • 3.5.2. Global variable
        • 3.5.3. Enumeration
      • 3.6. Statements
        • 3.6.1. Visibility Block
        • 3.6.2. Control Flow Statements
        • 3.6.3. Ranged Loops
        • 3.6.4. break
        • 3.6.5. continue
        • 3.6.6. return
        • 3.6.7. yield
        • 3.6.8. pass
        • 3.6.9. finally
        • 3.6.10. Local Variable Declarations
        • 3.6.11. assume
        • 3.6.12. with
        • 3.6.13. delete
        • 3.6.14. Function Declaration
        • 3.6.15. try/recover
        • 3.6.16. panic
        • 3.6.17. label and goto
        • 3.6.18. Expression Statement
        • 3.6.19. Global Variables
        • 3.6.20. enum
        • 3.6.21. typedef
      • 3.7. Expressions
        • 3.7.1. Assignment
        • 3.7.2. Operators
        • 3.7.3. Array Initializer
        • 3.7.4. Struct, Class, and Handled Type Initializer
        • 3.7.5. Tuple Initializer
        • 3.7.6. Variant Initializer
        • 3.7.7. Table Initializer
        • 3.7.8. default and new
        • 3.7.9. typeinfo
        • 3.7.10. String Interpolation
      • 3.8. Function
        • 3.8.1. Function declaration
        • 3.8.2. OOP-style calls
        • 3.8.3. Tail Recursion
        • 3.8.4. Operator Overloading
        • 3.8.5. Overloadable operators
        • 3.8.6. Unary operators
        • 3.8.7. Compound assignment operators
        • 3.8.8. Index operators
        • 3.8.9. Clone and finalize operators
        • 3.8.10. is, as, and ?as operators
        • 3.8.11. Null-coalesce operator
        • 3.8.12. Struct method operators
        • 3.8.13. Overloading the ‘.’ and ‘?.’ operators
        • 3.8.14. Overloading accessors
      • 3.9. Block
      • 3.10. Lambda
        • 3.10.1. Capture
        • 3.10.2. Iterators
        • 3.10.3. Implementation details
      • 3.11. Generator
        • 3.11.1. implementation details
      • 3.12. Struct
        • 3.12.1. Struct Declaration
        • 3.12.2. Structure Function Members
        • 3.12.3. Inheritance
        • 3.12.4. Alignment
        • 3.12.5. OOP implementation details
      • 3.13. Class
        • 3.13.1. Member Visibility
        • 3.13.2. Initializers
        • 3.13.3. Calling Parent Methods
        • 3.13.4. Runtime Type Checking (is)
        • 3.13.5. Type Casting (as, ?as)
        • 3.13.6. Class Templates
        • 3.13.7. Static methods with [class_method]
        • 3.13.8. Stack-Allocated Classes (using)
        • 3.13.9. Complete Example
        • 3.13.10. Implementation details
      • 3.14. Tuple
        • 3.14.1. Shorthand promotion
      • 3.15. Variant
        • 3.15.1. Alignment and data layout
      • 3.16. Bitfield
      • 3.17. Type Aliases
        • 3.17.1. typedef Declaration
        • 3.17.2. Publicity
        • 3.17.3. Shorthand Type Alias Syntax
        • 3.17.4. Local Type Aliases
        • 3.17.5. Generic Type Aliases (auto)
        • 3.17.6. Type Aliases with typedecl
      • 3.18. Array
      • 3.19. Table
      • 3.20. Iterator
        • 3.20.1. Making types iterable
        • 3.20.2. builtin iterators
        • 3.20.3. builtin iteration functions
        • 3.20.4. low level builtin iteration functions
        • 3.20.5. next implementation details
      • 3.21. Comprehension
      • 3.22. String Builder
        • 3.22.1. Basic Usage
        • 3.22.2. Supported Types
        • 3.22.3. Format Specifiers
        • 3.22.4. Escaping Curly Brackets
        • 3.22.5. Multi-line Strings
        • 3.22.6. Implementation Notes
        • 3.22.7. Relationship to print
      • 3.23. Modules
        • 3.23.1. File-path requires
        • 3.23.2. Native modules
        • 3.23.3. Builtin modules
        • 3.23.4. Shared modules
        • 3.23.5. Module function visibility
      • 3.24. Move, Copy, and Clone
        • 3.24.1. Copy (=)
        • 3.24.2. Move (<-)
        • 3.24.3. Clone (:=)
        • 3.24.4. Type Compatibility
        • 3.24.5. Variable Initialization
        • 3.24.6. Struct Initialization
        • 3.24.7. Lambda Captures
        • 3.24.8. Containers
        • 3.24.9. Classes
        • 3.24.10. Custom Clone
        • 3.24.11. Quick Reference
      • 3.25. Clone
        • 3.25.1. Cloning rules and implementation details
        • 3.25.2. clone_to_move implementation
      • 3.26. Finalizer
        • 3.26.1. Rules and implementation details
      • 3.27. Temporary types
      • 3.28. Unsafe
        • 3.28.1. implicit
        • 3.28.2. other cases
      • 3.29. Generic Programming
        • 3.29.1. typeinfo
        • 3.29.2. auto and auto(named)
        • 3.29.3. type contracts and type operations
        • 3.29.4. options
        • 3.29.5. typedecl
        • 3.29.6. generic tuples and type<> expressions
      • 3.30. Pattern matching
        • 3.30.1. Enumeration Matching
        • 3.30.2. Matching Variants
        • 3.30.3. Declaring Variables in Patterns
        • 3.30.4. Matching Structs
        • 3.30.5. Using Guards
        • 3.30.6. Tuple Matching
        • 3.30.7. Matching Static Arrays
        • 3.30.8. Dynamic Array Matching
        • 3.30.9. Match Expressions
        • 3.30.10. Matching with ||
        • 3.30.11. [match_as_is] Structure Annotation
        • 3.30.12. [match_copy] Structure Annotation
        • 3.30.13. Static Matching
        • 3.30.14. match_type
        • 3.30.15. Multi-Match
      • 3.31. Annotations
        • 3.31.1. Function Annotations
        • 3.31.2. Structure and Class Annotations
        • 3.31.3. Macro Registration Annotations (daslib)
        • 3.31.4. Contract Annotations (daslib)
        • 3.31.5. Annotation Syntax Details
      • 3.32. Options
        • 3.32.1. Language and Syntax
        • 3.32.2. Lint Control
        • 3.32.3. Optimization
        • 3.32.4. Memory
        • 3.32.5. AOT
        • 3.32.6. Safety and Strictness
        • 3.32.7. Multiple Contexts
        • 3.32.8. Debugging and Profiling
        • 3.32.9. RTTI
        • 3.32.10. Logging
        • 3.32.11. Print Control
        • 3.32.12. Miscellaneous
        • 3.32.13. Module-Registered Options
      • 3.33. Macros
        • 3.33.1. Compilation passes
        • 3.33.2. Invoking macros
        • 3.33.3. AstFunctionAnnotation
        • 3.33.4. AstBlockAnnotation
        • 3.33.5. AstStructureAnnotation
        • 3.33.6. AstEnumerationAnnotation
        • 3.33.7. AstVariantMacro
        • 3.33.8. AstReaderMacro
        • 3.33.9. AstCallMacro
        • 3.33.10. AstPassMacro
        • 3.33.11. AstTypeMacro
        • 3.33.12. AstTypeInfoMacro
        • 3.33.13. AstForLoopMacro
        • 3.33.14. AstCaptureMacro
        • 3.33.15. AstCommentReader
        • 3.33.16. AstSimulateMacro
        • 3.33.17. AstVisitor
      • 3.34. Reification
        • 3.34.1. Simple example
        • 3.34.2. Quote macros
        • 3.34.3. Escape sequences
      • 3.35. AST Matching
        • 3.35.1. Simple example
        • 3.35.2. Macros
        • 3.35.3. Tags
        • 3.35.4. Wildcards
        • 3.35.5. Type matching
        • 3.35.6. Constant constructors and folding
        • 3.35.7. Generic function matching
        • 3.35.8. Result type
      • 3.36. Built-in Functions
        • 3.36.1. Invocation
        • 3.36.2. Assertions
        • 3.36.3. Debug
        • 3.36.4. Panic
        • 3.36.5. Memory & Type Utilities
        • 3.36.6. Array Operations
        • 3.36.7. Table Operations
        • 3.36.8. Iterator Operations
        • 3.36.9. Conversion Functions
        • 3.36.10. Clone
        • 3.36.11. Lock Operations
        • 3.36.12. Serialization
        • 3.36.13. Smart Pointer
        • 3.36.14. Memory Mapping
        • 3.36.15. Vector Construction
        • 3.36.16. Move Helpers
        • 3.36.17. Miscellaneous
      • 3.37. Lint Tools
        • 3.37.1. Quick start
        • 3.37.2. Standalone utility
        • 3.37.3. Suppressing specific warnings
        • 3.37.4. Important notes
        • 3.37.5. Paranoid rules
        • 3.37.6. Performance rules
        • 3.37.7. Style rules
        • 3.37.8. Tests
    • 4. The Runtime
      • 4.1. Context
        • 4.1.1. Initialization and shutdown
        • 4.1.2. Macro contexts
        • 4.1.3. Locking
        • 4.1.4. Lookups
        • 4.1.5. Memory allocation and garbage collection
      • 4.2. Locks
        • 4.2.1. Context locks
        • 4.2.2. Array and Table locks
      • 4.3. Very safe context
        • 4.3.1. The problem: aliased references
        • 4.3.2. What very_safe_context does
        • 4.3.3. Iteration and container moves
      • 4.4. Type Mangling
        • 4.4.1. Primitive types
        • 4.4.2. Qualifiers and modifiers
        • 4.4.3. Pointers
        • 4.4.4. Composite prefixes
        • 4.4.5. Container types
        • 4.4.6. Fixed-size arrays (dim)
        • 4.4.7. Callable types
        • 4.4.8. Structures, handled types, and enumerations
        • 4.4.9. Type aliases
        • 4.4.10. Named arguments
        • 4.4.11. Bitfields
        • 4.4.12. Special / internal types
        • 4.4.13. Remove-qualifiers (generics)
        • 4.4.14. Interop function signatures
        • 4.4.15. Querying mangled names at runtime
    • 5. Embedding and Integration
      • 5.1. Quick Start
        • 5.1.1. Virtual machine overview
        • 5.1.2. Minimal host program
        • 5.1.3. Key types
        • 5.1.4. Calling daslang functions with arguments
        • 5.1.5. Next steps
      • 5.2. C++ API Reference
        • 5.2.1. Creating a module
        • 5.2.2. Binding C++ types
        • 5.2.3. Cast infrastructure
        • 5.2.4. Binding C++ functions
        • 5.2.5. Binding C++ enumerations
        • 5.2.6. Function side effects
        • 5.2.7. Callbacks — blocks, functions, lambdas
        • 5.2.8. File access
        • 5.2.9. Project file resolution
      • 5.3. C API Reference
        • 5.3.1. When to use the C API
        • 5.3.2. Initialization and shutdown
        • 5.3.3. Text output
        • 5.3.4. File access
        • 5.3.5. Compilation
        • 5.3.6. Simulation and context
        • 5.3.7. Function evaluation
        • 5.3.8. Argument helpers
        • 5.3.9. Calling lambdas and blocks
        • 5.3.10. Binding C functions
        • 5.3.11. Binding types
        • 5.3.12. String allocation
        • 5.3.13. Context variables
        • 5.3.14. Type introspection
        • 5.3.15. Serialization
        • 5.3.16. AOT checking
        • 5.3.17. Module groups
        • 5.3.18. Side effects
      • 5.4. External Modules
        • 5.4.1. Overview
        • 5.4.2. Module types
        • 5.4.3. The .das_module descriptor
        • 5.4.4. Module resolution order
        • 5.4.5. Building a C++ module
        • 5.4.6. Building a pure daslang module
        • 5.4.7. Using an external module from a host application
        • 5.4.8. Installing external modules
        • 5.4.9. Example: dascript-demo
        • 5.4.10. In-tree modules vs external modules
      • 5.5. Project Files (.das_project)
        • 5.5.1. How it works
        • 5.5.2. Using project files
        • 5.5.3. Writing a project file
        • 5.5.4. Callback reference
        • 5.5.5. Sandboxing example
      • 5.6. Advanced Topics
        • 5.6.1. AOT compilation
        • 5.6.2. Class adapters
        • 5.6.3. Coroutines (generators)
        • 5.6.4. Dynamic script generation
        • 5.6.5. Standalone contexts
        • 5.6.6. Serialization
        • 5.6.7. Sandboxing
        • 5.6.8. File access customization
    • 6. Utils
      • 6.1. daslang-live — Live-Reload Application Host
        • 6.1.1. Designing for live reload
        • 6.1.2. Quick start
        • 6.1.3. Mode detection
        • 6.1.4. Lifecycle
        • 6.1.5. Core API
        • 6.1.6. Reload annotations
        • 6.1.7. State persistence
        • 6.1.8. Helper modules
        • 6.1.9. Transports
        • 6.1.10. CLI reference
        • 6.1.11. Examples
        • 6.1.12. Tips and gotchas
      • 6.2. dastest — Test Framework
        • 6.2.1. Quick start
        • 6.2.2. Running tests
        • 6.2.3. Command-line arguments
        • 6.2.4. Writing tests
        • 6.2.5. Assertions
        • 6.2.6. Sub-tests
        • 6.2.7. Benchmarks
        • 6.2.8. Benchmark output formats
        • 6.2.9. Folder filtering with .das_test
        • 6.2.10. Test file conventions
      • 6.3. dascov — Code Coverage
        • 6.3.1. Quick start
        • 6.3.2. Usage modes
        • 6.3.3. Output formats
        • 6.3.4. Integration with dastest
        • 6.3.5. Programmatic use
      • 6.4. lint — Paranoid, Performance, and Style
        • 6.4.1. Quick start
        • 6.4.2. Flags
        • 6.4.3. Compile policies
        • 6.4.4. Rule list
        • 6.4.5. Suppression
        • 6.4.6. Planned CI gate
      • 6.5. daspkg — Package Manager
        • 6.5.1. Quick start
        • 6.5.2. Why daspkg?
        • 6.5.3. Commands
        • 6.5.4. Package sources
        • 6.5.5. The .das_package manifest
        • 6.5.6. Install flow
        • 6.5.7. Global modules
        • 6.5.8. Project layout
        • 6.5.9. Lock file
        • 6.5.10. Package index
        • 6.5.11. Use-case examples
        • 6.5.12. Version model
        • 6.5.13. Requirements
        • 6.5.14. Architecture
      • 6.6. MCP Server — AI Tool Integration
        • 6.6.1. Quick start
        • 6.6.2. Tools
        • 6.6.3. ast-grep / tree-sitter setup
        • 6.6.4. Architecture
        • 6.6.5. Protocol
        • 6.6.6. Configuring Claude Code permissions
      • 6.7. detect-dupe — Cross-file similar-function detector
        • 6.7.1. What it reports
        • 6.7.2. Quick start
        • 6.7.3. Flags
        • 6.7.4. Pattern filter
        • 6.7.5. Canonical form
        • 6.7.6. Modes
        • 6.7.7. Export / import
        • 6.7.8. MCP integration
        • 6.7.9. Implementation
        • 6.7.10. Notes
        • 6.7.11. Out of scope
      • 6.8. find_dupe — AI judge for detect-dupe clusters
        • 6.8.1. Install
        • 6.8.2. API key
        • 6.8.3. Smoke test
        • 6.8.4. Workflow
        • 6.8.5. Flags
        • 6.8.6. Output schema
        • 6.8.7. MCP integration
        • 6.8.8. Pricing
        • 6.8.9. Implementation
        • 6.8.10. See also
      • 6.9. Profiler — Runtime Profiling
        • 6.9.1. Quick start — performance profiler
        • 6.9.2. Quick start — memory-leak tracker
        • 6.9.3. Enabling the profiler
        • 6.9.4. Command-line flags
        • 6.9.5. Performance mode details
        • 6.9.6. Memory-leak mode details
        • 6.9.7. Writing your own profiler agent
        • 6.9.8. Performance impact
        • 6.9.9. See also
      • 6.10. Memory Leak Detection — Diagnostics Cheat Sheet
        • 6.10.1. At a glance
        • 6.10.2. Picking the right tool
        • 6.10.3. 1. daslang leak profiler (--das-profiler-leaks)
        • 6.10.4. 2. C++ heap report (-track-allocations -heap-report)
        • 6.10.5. 3. gc_node leak detection (automatic)
        • 6.10.6. 4. Smart-pointer tracking (--track-smart-ptr <hexId>)
        • 6.10.7. 5. JobStatus / Channel / LockBox tracker
        • 6.10.8. 6. HandleRegistry (dasHV handle objects)
        • 6.10.9. See also
    • 7. Tutorials
      • 7.1. Language Tutorials
        • 7.1.1. Hello World
        • 7.1.2. Variables and Types
        • 7.1.3. Operators
        • 7.1.4. Control Flow
        • 7.1.5. Functions
        • 7.1.6. Arrays
        • 7.1.7. Strings
        • 7.1.8. Structs
        • 7.1.9. Enumerations and Bitfields
        • 7.1.10. Tables
        • 7.1.11. Tuples and Variants
        • 7.1.12. Function Pointers
        • 7.1.13. Blocks
        • 7.1.14. Lambdas and Closures
        • 7.1.15. Iterators and Generators
        • 7.1.16. Modules and Program Structure
        • 7.1.17. Move, Copy, and Clone
        • 7.1.18. Classes and Inheritance
        • 7.1.19. Generic Programming
        • 7.1.20. Lifetime and Cleanup
        • 7.1.21. Error Handling
        • 7.1.22. Unsafe and Pointers
        • 7.1.23. String Builder and Formatting
        • 7.1.24. Pattern Matching
        • 7.1.25. Annotations and Options
        • 7.1.26. Contracts
        • 7.1.27. Testing with dastest
        • 7.1.28. LINQ — Language-Integrated Query
        • 7.1.29. Functional Programming
        • 7.1.30. JSON
        • 7.1.31. Regular Expressions
        • 7.1.32. Operator Overloading
        • 7.1.33. Algorithm
        • 7.1.34. Entity Component System (DECS)
        • 7.1.35. Job Queue (jobque)
        • 7.1.36. Pointers
        • 7.1.37. Utility Patterns (defer + static_let)
        • 7.1.38. Random Numbers
        • 7.1.39. Dynamic Type Checking
        • 7.1.40. Coroutines
        • 7.1.41. Serialization (archive)
        • 7.1.42. Testing Tools (faker + fuzzer)
        • 7.1.43. Interfaces
        • 7.1.44. Compiling and Running Programs at Runtime
        • 7.1.45. Debug Agents
        • 7.1.46. Cross-Context Services with apply_in_context
        • 7.1.47. Data Walking with DapiDataWalker
        • 7.1.48. Compile-Time Field Iteration with apply
        • 7.1.49. Async / Await
        • 7.1.50. Structure-of-Arrays (SOA)
        • 7.1.51. Delegates
        • 7.1.52. Option<T> and Result<T, E>
        • 7.1.53. Command-Line Argument Parsing (clargs)
        • 7.1.54. Glob Pattern Matching
      • 7.2. Building from the Installed SDK
        • 7.2.1. Building Projects Against the Installed SDK
      • 7.3. C Integration Tutorials
        • 7.3.1. C Integration: Hello World
        • 7.3.2. C Integration: Calling daslang Functions
        • 7.3.3. C Integration: Binding C Types
        • 7.3.4. C Integration: Callbacks and Closures
        • 7.3.5. C Integration: Unaligned ABI & Advanced
        • 7.3.6. C Integration: Sandbox
        • 7.3.7. C Integration: Context Variables
        • 7.3.8. C Integration: Serialization
        • 7.3.9. C Integration: AOT
        • 7.3.10. C Integration: Threading
        • 7.3.11. C Integration: Type Introspection
        • 7.3.12. C Integration: Mock ECS
        • 7.3.13. C Integration: Shared Modules
        • 7.3.14. C Integration: Passing Arrays
      • 7.4. C++ Integration Tutorials
        • 7.4.1. C++ Integration: Hello World
        • 7.4.2. C++ Integration: Calling Functions
        • 7.4.3. C++ Integration: Binding Functions
        • 7.4.4. C++ Integration: Binding Types
        • 7.4.5. C++ Integration: Binding Enumerations
        • 7.4.6. C++ Integration: Low-Level Interop
        • 7.4.7. C++ Integration: Callbacks
        • 7.4.8. C++ Integration: Binding Methods
        • 7.4.9. C++ Integration: Operators and Properties
        • 7.4.10. C++ Integration: Custom Modules
        • 7.4.11. C++ Integration: Context Variables
        • 7.4.12. C++ Integration: Smart Pointers
        • 7.4.13. C++ Integration: AOT Compilation
        • 7.4.14. C++ Integration: Serialization
        • 7.4.15. C++ Integration: Custom Annotations
        • 7.4.16. C++ Integration: Sandbox
        • 7.4.17. C++ Integration: Coroutines
        • 7.4.18. C++ Integration: Dynamic Scripts
        • 7.4.19. C++ Integration: Class Adapters
        • 7.4.20. C++ Integration: Standalone Contexts
        • 7.4.21. C++ Integration: Threading
        • 7.4.22. C++ Integration: Namespace Integration
        • 7.4.23. C++ Integration: Binding shared_ptr via Handle<T>
      • 7.5. Macro Tutorials
        • 7.5.1. Macro Tutorial 1: Call Macros
        • 7.5.2. Macro Tutorial 2: When Expression
        • 7.5.3. Macro Tutorial 3: Function Macros
        • 7.5.4. Macro Tutorial 4: Advanced Function Macros
        • 7.5.5. Macro Tutorial 5: Tag Function Macros
        • 7.5.6. Macro Tutorial 6: Structure Macros
        • 7.5.7. Macro Tutorial 7: Block Macros
        • 7.5.8. Macro Tutorial 8: Variant Macros
        • 7.5.9. Macro Tutorial 9: For-Loop Macros
        • 7.5.10. Macro Tutorial 10: Capture Macros
        • 7.5.11. Macro Tutorial 11: Reader Macros
        • 7.5.12. Macro Tutorial 12: Typeinfo Macros
        • 7.5.13. Macro Tutorial 13: Enumeration Macros
        • 7.5.14. Macro Tutorial 14: Pass Macro
        • 7.5.15. Macro Tutorial 15: Type Macro
        • 7.5.16. Macro Tutorial 16: Template Type Macro
        • 7.5.17. Macro Tutorial 17: Quasi-quotation Reference
      • 7.6. dasHV (HTTP / WebSocket) Tutorials
        • 7.6.1. HV-01 — Simple HTTP Requests
        • 7.6.2. HV-02 — Advanced HTTP Requests
        • 7.6.3. HV-03 — HTTP Server Basics
        • 7.6.4. HV-04 — Advanced HTTP Server Features
        • 7.6.5. HV-05 — Cookies and Form / File Upload
        • 7.6.6. HV-06 — WebSockets
        • 7.6.7. HV-07 — SSE and Streaming
      • 7.7. dasPUGIXML (XML) Tutorials
        • 7.7.1. PUGIXML-01 — Parsing & Navigation
        • 7.7.2. PUGIXML-02 — Building XML
        • 7.7.3. PUGIXML-03 — XPath Queries
        • 7.7.4. PUGIXML-04 — Struct Serialization
      • 7.8. dasStbImage (Image I/O) Tutorials
        • 7.8.1. STBIMAGE-01 — Loading and Inspecting Images
        • 7.8.2. STBIMAGE-02 — Saving and Encoding Images
        • 7.8.3. STBIMAGE-03 — Image Transforms
        • 7.8.4. STBIMAGE-04 — Pixel Access and Format Conversion
        • 7.8.5. STBIMAGE-05 — Drawing and Alpha Blending
      • 7.9. dasSQLITE (SQL) Tutorials
        • 7.9.1. SQL-01 — Hello dasSQLITE
        • 7.9.2. SQL-02 — Declare a Table, Insert
        • 7.9.3. SQL-03 — Auto-Increment Primary Key
        • 7.9.4. SQL-04 — Reading Rows with _sql
        • 7.9.5. SQL-05 — Parameter Binding
        • 7.9.6. SQL-06 — Error Handling
        • 7.9.7. SQL-07 — Anatomy of _sql
        • 7.9.8. SQL-08 — _where Predicates: the Full Surface
        • 7.9.9. SQL-09 — _select Projections
        • 7.9.10. SQL-10 — _order_by and _order_by_descending
        • 7.9.11. SQL-11 — take and skip: Paging
        • 7.9.12. SQL-12 — distinct
        • 7.9.13. SQL-12b — Set operations
        • 7.9.14. SQL-13 — Aggregates: sum/avg/…
        • 7.9.15. SQL-14 — _group_by and _having
        • 7.9.16. SQL-15 — _join (inner equi-join)
        • 7.9.17. SQL-16 — All Join Shapes
        • 7.9.18. SQL-17 — Subqueries
        • 7.9.19. SQL-18 — NULL Handling: Option<T> Everywhere
        • 7.9.20. SQL-19 — UPDATE
        • 7.9.21. SQL-20 — DELETE
        • 7.9.22. SQL-21 — UPSERT
        • 7.9.23. SQL-22 — Transactions
        • 7.9.24. SQL-23 — Foreign keys
        • 7.9.25. SQL-24 — Indexes
        • 7.9.26. SQL-25 — Defaults + computed columns
        • 7.9.27. SQL-26 — Custom type adapters
        • 7.9.28. SQL-27 — BLOB round-trip
        • 7.9.29. SQL-28 — JSON and BLOB columns
        • 7.9.30. SQL-29 — Column metadata
        • 7.9.31. SQL-30 — Listing tables
        • 7.9.32. SQL-31 — Views
        • 7.9.33. SQL-32 — User-defined SQL scalar functions
        • 7.9.34. SQL-33 — PRAGMA tuning
        • 7.9.35. SQL-34 — Backup, VACUUM, integrity check
        • 7.9.36. SQL-35 — Streaming results with _each_sql
        • 7.9.37. SQL-36 — ATTACH DATABASE: cross-DB queries
        • 7.9.38. SQL-37 — Bulk operations: making writes fast
        • 7.9.39. SQL-38 — Concurrency: threads, contention
        • 7.9.40. SQL-39 — schema_from: struct mirrors the DB
        • 7.9.41. SQL-40 — FTS5 full-text search
        • 7.9.42. SQL-41 — Triggers: DB-level callbacks
        • 7.9.43. SQL-42 — multi-version ETL with schema_from
        • 7.9.44. SQL-43 — versioned schema migrations
      • 7.10. dasAudio (Audio) Tutorials
        • 7.10.1. AUDIO-01 — Hello Sound
        • 7.10.2. AUDIO-02 — Playing Audio Files
        • 7.10.3. AUDIO-03 — Sound Control
        • 7.10.4. AUDIO-04 — 3D Spatial Audio
        • 7.10.5. AUDIO-05 — Reverb and Effects
        • 7.10.6. AUDIO-06 — Streaming Audio
        • 7.10.7. AUDIO-07 — WAV File I/O
        • 7.10.8. AUDIO-08 — MIDI Files
      • 7.11. daStrudel (Live-Coding) Tutorials
        • 7.11.1. STRUDEL-01 — Hello Pattern
        • 7.11.2. STRUDEL-02 — Mini-Notation Fundamentals
        • 7.11.3. STRUDEL-03 — Mini-Notation Advanced
        • 7.11.4. STRUDEL-04 — Time Manipulation
        • 7.11.5. STRUDEL-05 — Euclidean Rhythms
        • 7.11.6. STRUDEL-06 — Stacking & Combining
        • 7.11.7. STRUDEL-07 — Per-Voice FX & Combinators
        • 7.11.8. STRUDEL-08 — Effects & Filters
        • 7.11.9. STRUDEL-09 — ADSR & Envelope Shaping
        • 7.11.10. STRUDEL-10 — Scales & Music Theory
        • 7.11.11. STRUDEL-11 — Synthesis
        • 7.11.12. STRUDEL-12 — Samples
        • 7.11.13. STRUDEL-13 — SF2 SoundFont Playback
        • 7.11.14. STRUDEL-14 — MIDI Files
        • 7.11.15. STRUDEL-15 — Live-Reloading Patterns
        • 7.11.16. STRUDEL-16 — HRTF: 3D Positional Override for Pan
      • 7.12. JSON-RPC 2.0 Tutorials
        • 7.12.1. JSONRPC-01 — Building Requests, Parsing Responses
        • 7.12.2. JSONRPC-02 — Implementing a Server with dispatch_line
        • 7.12.3. JSONRPC-03 — §6 Batches: Many Messages in One Wire
      • 7.13. dasPEG (Parser Generator) Tutorials
        • 7.13.1. PEG-01 — Hello Parser
        • 7.13.2. PEG-02 — Arithmetic Calculator
        • 7.13.3. PEG-03 — CSV Parser
        • 7.13.4. PEG-04 — Email Validator
        • 7.13.5. PEG-05 — JSON Parser
        • 7.13.6. PEG-06 — Debugging and Options
        • 7.13.7. PEG-07 — C64 BASIC Interpreter
    • 8. daslang strudel vs strudel.cc — Feature Comparison
      • 8.1. Scope and philosophy
      • 8.2. What we have
      • 8.3. What we don’t have (yet)
      • 8.4. Behavioural differences
        • 8.4.1. ADSR defaults are tempo-aware
        • 8.4.2. Per-voice FX chain
        • 8.4.3. Orbit bus model
        • 8.4.4. Mini-notation parsing
        • 8.4.5. fast at non-integer ratios
        • 8.4.6. Scheduler and voice pool
      • 8.5. Extensions over strudel.cc
        • 8.5.1. HRTF positional override
      • 8.6. Naming map (quick reference)
  • Daslang Standard Library 0.6.2
    • 1. Introduction
      • 1.1. Core runtime
      • 1.2. Strings
      • 1.3. Regular expressions and parsing
      • 1.4. Reflection and AST
      • 1.5. Functional and algorithms
      • 1.6. Data structures
      • 1.7. Serialization and data
      • 1.8. Jobs and concurrency
      • 1.9. Macros and metaprogramming
      • 1.10. Control flow macros
      • 1.11. Pattern matching
      • 1.12. Entity component system
      • 1.13. OOP and interfaces
      • 1.14. Testing and debugging
      • 1.15. Code quality and tooling
      • 1.16. Developer tools
      • 1.17. HTTP and WebSocket
      • 1.18. XML
      • 1.19. Image
      • 1.20. Audio
    • 2. Core
      • 2.1. Built-in runtime
        • 2.1.1. Type aliases
        • 2.1.2. Constants
        • 2.1.3. Handled structures
        • 2.1.4. Function annotations
        • 2.1.5. Call macros
        • 2.1.6. Reader macros
        • 2.1.7. Typeinfo macros
        • 2.1.8. Handled types
        • 2.1.9. Structure macros
        • 2.1.10. Containers
        • 2.1.11. das::string manipulation
        • 2.1.12. Heap reporting
        • 2.1.13. GC0 infrastructure
        • 2.1.14. Smart ptr infrastructure
        • 2.1.15. Macro infrastructure
        • 2.1.16. Profiler
        • 2.1.17. System infrastructure
        • 2.1.18. Memory manipulation
        • 2.1.19. Binary serializer
        • 2.1.20. Path and command line
        • 2.1.21. Time and date
        • 2.1.22. Platform queries
        • 2.1.23. String formatting
        • 2.1.24. Argument consumption
        • 2.1.25. Lock checking
        • 2.1.26. Bit operations
        • 2.1.27. Intervals
        • 2.1.28. RTTI
        • 2.1.29. Initialization and finalization
        • 2.1.30. Algorithms
        • 2.1.31. Memset
        • 2.1.32. Malloc
        • 2.1.33. Compilation and AOT
        • 2.1.34. GC
      • 2.2. Math library
        • 2.2.1. Constants
        • 2.2.2. Handled structures
        • 2.2.3. all numerics (uint*, int*, float*, double)
        • 2.2.4. float* and double
        • 2.2.5. float* only
        • 2.2.6. float3 only
        • 2.2.7. float2, float3, float4
        • 2.2.8. Noise functions
        • 2.2.9. lerp/mad/clamp
        • 2.2.10. Matrix operations
        • 2.2.11. Matrix initializers
        • 2.2.12. Matrix manipulation
        • 2.2.13. Quaternion operations
        • 2.2.14. Packing and unpacking
      • 2.3. Math bit helpers
        • 2.3.1. float in int,uint
        • 2.3.2. int,uint in float
        • 2.3.3. int64,uint64 in double
        • 2.3.4. bit-cast vec4f
      • 2.4. Boost package for math
        • 2.4.1. Structures
        • 2.4.2. Angle conversions
        • 2.4.3. Intersections
        • 2.4.4. Matrices
        • 2.4.5. Plane
        • 2.4.6. Color conversions
        • 2.4.7. Color packing and unpacking
      • 2.5. Random generator library
        • 2.5.1. Constants
        • 2.5.2. Seed and basic generators
        • 2.5.3. Random iterators
        • 2.5.4. Specific distributions
    • 3. Strings
      • 3.1. String manipulation library
        • 3.1.1. Enumerations
        • 3.1.2. Handled structures
        • 3.1.3. Character set
        • 3.1.4. Character groups
        • 3.1.5. Character by index
        • 3.1.6. String properties
        • 3.1.7. String builder
        • 3.1.8. das::string manipulation
        • 3.1.9. String modifications
        • 3.1.10. Search substrings
        • 3.1.11. String comparison
        • 3.1.12. String conversion routines
        • 3.1.13. String as array
        • 3.1.14. Low level memory allocation
      • 3.2. Boost package for string manipulation library
        • 3.2.1. Split and join
        • 3.2.2. Formatting
        • 3.2.3. Queries and comparisons
        • 3.2.4. Search and match
        • 3.2.5. Replace
        • 3.2.6. Prefix and suffix
        • 3.2.7. String similarity
      • 3.3. Soft-failing string-to-numeric conversions returning Result<T; ConversionError>
        • 3.3.1. Enumerations
        • 3.3.2. Soft-failing conversions
      • 3.4. Temporary string utilities
        • 3.4.1. Function annotations
        • 3.4.2. Temporary string builders
        • 3.4.3. Temporary string conversion
      • 3.5. UTF-8 utilities
        • 3.5.1. Constants
        • 3.5.2. Encoding and decoding
        • 3.5.3. Iteration
        • 3.5.4. Length and measurement
        • 3.5.5. Validation
        • 3.5.6. Unicode word/case primitives
      • 3.6. Base64 encoding and decoding
        • 3.6.1. Encoding
        • 3.6.2. Decoding
      • 3.7. Long string embedding macro
        • 3.7.1. Reader macros
    • 4. I/O and Serialization
      • 4.1. File input output library
        • 4.1.1. Glob and pattern matching
      • 4.2. Network socket library
        • 4.2.1. Handled structures
        • 4.2.2. Low level NetworkServer IO
      • 4.3. HTTP and WebSocket library (libhv)
        • 4.3.1. Enumerations
        • 4.3.2. Handled structures
        • 4.3.3. Handled types
        • 4.3.4. WebSocket client
        • 4.3.5. WebSocket server lifecycle
        • 4.3.6. WebSocket channel send
        • 4.3.7. Handle operations
        • 4.3.8. HTTP route registration
        • 4.3.9. HTTP server configuration
        • 4.3.10. HTTP response helpers
        • 4.3.11. HTTP client requests
        • 4.3.12. Message and header access
        • 4.3.13. Request configuration
        • 4.3.14. Cookies
        • 4.3.15. Form data
        • 4.3.16. SSE response writer
      • 4.4. High-level HTTP and WebSocket wrappers
        • 4.4.1. Classes
        • 4.4.2. HTTP request helpers
      • 4.5. URI manipulation library based on UriParser
        • 4.5.1. Handled structures
        • 4.5.2. Initialization and finalization
        • 4.5.3. Escape and unescape
        • 4.5.4. Uri manipulations
        • 4.5.5. File name conversions
        • 4.5.6. GUID
      • 4.6. Boost package for the URI parser
        • 4.6.1. Split and compose
        • 4.6.2. Component accessors
      • 4.7. ANSI terminal color and style helpers
        • 4.7.1. Configuration
        • 4.7.2. Colors
        • 4.7.3. Styles
      • 4.8. General purpose serialization
        • 4.8.1. Structures
        • 4.8.2. Classes
        • 4.8.3. Serialization
        • 4.8.4. Memory archive
      • 4.9. Command-line utilities
        • 4.9.1. Executable path
    • 5. Data Structures
      • 5.1. Boost package for array manipulation
        • 5.1.1. Temporary arrays
        • 5.1.2. Empty check
        • 5.1.3. Sub-array view
      • 5.2. Boost package for the builtin sort
        • 5.2.1. Call macros
      • 5.3. Flat hash table
      • 5.4. Cuckoo hash table
        • 5.4.1. Hash functions
      • 5.5. SOA (Structure of Arrays) transformation
        • 5.5.1. Structures
        • 5.5.2. Function annotations
        • 5.5.3. Structure macros
        • 5.5.4. SOA field access
      • 5.6. Packed boolean array
        • 5.6.1. Structures
        • 5.6.2. Iteration
      • 5.7. Monadic Option<T> — a value-or-nothing tagged pair
        • 5.7.1. Structures
        • 5.7.2. Constructors
        • 5.7.3. Queries
        • 5.7.4. Transforming
        • 5.7.5. Extraction
        • 5.7.6. Side effects
        • 5.7.7. Pairing
        • 5.7.8. Operators
      • 5.8. Monadic Result<T, E> — a value-or-error tagged pair
        • 5.8.1. Structures
        • 5.8.2. Constructors
        • 5.8.3. Queries
        • 5.8.4. Transforming
        • 5.8.5. Extraction
        • 5.8.6. Side effects
        • 5.8.7. Bridges to Option
        • 5.8.8. Operators
    • 6. Algorithms and Functional
      • 6.1. Miscellaneous algorithms
        • 6.1.1. Search
        • 6.1.2. Array manipulation
        • 6.1.3. Table manipulation
      • 6.2. Functional programming library
        • 6.2.1. Transformations
        • 6.2.2. Aggregation
        • 6.2.3. Search and split
        • 6.2.4. Iteration
        • 6.2.5. Generators
        • 6.2.6. Predicates
      • 6.3. LINQ
        • 6.3.1. Sorting data
        • 6.3.2. Set operations
        • 6.3.3. Concatenation operations
        • 6.3.4. Generation operations
        • 6.3.5. Aggregation operations
        • 6.3.6. Filtering data
        • 6.3.7. Partitioning data
        • 6.3.8. Joining
        • 6.3.9. Grouping
        • 6.3.10. Querying data
        • 6.3.11. Element operations
        • 6.3.12. Transform operations
        • 6.3.13. Conversion operations
        • 6.3.14. Comparators and keys
      • 6.4. Boost module for LINQ
        • 6.4.1. Call macros
      • 6.5. LINQ fold macros (_fold / _old_fold)
        • 6.5.1. Call macros
      • 6.6. Pattern matching
        • 6.6.1. Call macros
        • 6.6.2. Structure macros
    • 7. Data Formats
      • 7.1. JSON manipulation library
        • 7.1.1. Type aliases
        • 7.1.2. Structures
        • 7.1.3. Value conversion
        • 7.1.4. Read and write
        • 7.1.5. JSON properties
        • 7.1.6. Broken JSON
      • 7.2. Boost package for JSON
        • 7.2.1. Field annotations
      • 7.3. JSON-RPC 2.0 envelope + parser, transport-agnostic
        • 7.3.1. Constants
        • 7.3.2. Structures
        • 7.3.3. Envelope builders
        • 7.3.4. Server-side parsers
        • 7.3.5. Outgoing request builders
        • 7.3.6. Response parsers
        • 7.3.7. Framing helper
        • 7.3.8. High-level dispatch
      • 7.4. XML parser (pugixml)
        • 7.4.1. Constants
        • 7.4.2. Enumerations
        • 7.4.3. Handled structures
        • 7.4.4. Document operations
        • 7.4.5. Node lookup
        • 7.4.6. Node navigation
        • 7.4.7. Node mutation
        • 7.4.8. Attribute access
        • 7.4.9. Copy and move
        • 7.4.10. Value reading
        • 7.4.11. Value writing
        • 7.4.12. XPath compilation and evaluation
        • 7.4.13. XPath selection
        • 7.4.14. XPath node set operations
        • 7.4.15. Construction and RAII
        • 7.4.16. Handle validity and comparison
      • 7.5. High-level XML helpers (pugixml boost)
        • 7.5.1. Block-based iteration
        • 7.5.2. Iterator-based iteration
        • 7.5.3. RAII document handling
        • 7.5.4. Quick accessors
        • 7.5.5. Builder helpers
        • 7.5.6. Builder EDSL
        • 7.5.7. String conversion
        • 7.5.8. XPath helpers
        • 7.5.9. Serialization
        • 7.5.10. Type conversion operators
      • 7.6. Regular expression library
        • 7.6.1. Type aliases
        • 7.6.2. Enumerations
        • 7.6.3. Structures
        • 7.6.4. Compilation and validation
        • 7.6.5. Access
        • 7.6.6. Match & replace
        • 7.6.7. Generation
      • 7.7. Boost package for REGEX
        • 7.7.1. Reader macros
      • 7.8. PEG parser generator
        • 7.8.1. Grammar basics
        • 7.8.2. Built-in terminals
        • 7.8.3. Operators and combinators
        • 7.8.4. Options
        • 7.8.5. Return types
        • 7.8.6. Error handling
        • 7.8.7. Left recursion
        • 7.8.8. Performance
      • 7.9. Documentation generator
        • 7.9.1. Structures
        • 7.9.2. Document writers
        • 7.9.3. Descriptions
        • 7.9.4. Label makers
        • 7.9.5. RST section makers
        • 7.9.6. Group operations
        • 7.9.7. Naming helpers
    • 8. Entity Component System
      • 8.1. DECS, Daslang entity component system
        • 8.1.1. Type aliases
        • 8.1.2. Constants
        • 8.1.3. Structures
        • 8.1.4. Comparison and access
        • 8.1.5. Access (get/set/clone)
        • 8.1.6. Entity status
        • 8.1.7. Debug and serialization
        • 8.1.8. Stages
        • 8.1.9. Deferred actions
        • 8.1.10. GC and reset
        • 8.1.11. Iteration
        • 8.1.12. Request
      • 8.2. Boost package for DECS
        • 8.2.1. Function annotations
        • 8.2.2. Call macros
        • 8.2.3. Structure macros
      • 8.3. DECS debug state reporting
    • 9. Concurrency
      • 9.1. Jobs and threads
        • 9.1.1. Handled structures
        • 9.1.2. Channel, JobStatus, Lockbox, Stream
        • 9.1.3. Queries
        • 9.1.4. Internal invocations
        • 9.1.5. Construction
        • 9.1.6. Atomic
      • 9.2. Boost package for jobs and threads
        • 9.2.1. Function annotations
        • 9.2.2. Invocations
        • 9.2.3. Iteration
        • 9.2.4. Passing data
        • 9.2.5. Receiving data
        • 9.2.6. Synchronization
        • 9.2.7. Parallel execution
        • 9.2.8. LockBox operations
        • 9.2.9. Internal capture details
      • 9.3. Cross-context evaluation helpers
        • 9.3.1. Function annotations
      • 9.4. Coroutines and additional generator support
        • 9.4.1. Type aliases
        • 9.4.2. Function annotations
        • 9.4.3. Call macros
        • 9.4.4. Top level coroutine evaluation
      • 9.5. Async/await coroutine macros
        • 9.5.1. Function annotations
        • 9.5.2. Awaiting
        • 9.5.3. Running async tasks
    • 10. AST and Macros
      • 10.1. Runtime type information library
        • 10.1.1. Type aliases
        • 10.1.2. Constants
        • 10.1.3. Enumerations
        • 10.1.4. Handled structures
        • 10.1.5. Typeinfo macros
        • 10.1.6. Handled types
        • 10.1.7. Initialization and finalization
        • 10.1.8. Type access
        • 10.1.9. Rtti context access
        • 10.1.10. Program access
        • 10.1.11. Module access
        • 10.1.12. Annotation access
        • 10.1.13. Compilation and simulation
        • 10.1.14. File access
        • 10.1.15. Structure access
        • 10.1.16. Data walking and printing
        • 10.1.17. Function and mangled name hash
        • 10.1.18. Context and mutex locking
        • 10.1.19. Runtime data access
        • 10.1.20. Tuple and variant access
        • 10.1.21. Lint suppression
        • 10.1.22. Iteration
      • 10.2. AST manipulation library
        • 10.2.1. Type aliases
        • 10.2.2. Enumerations
        • 10.2.3. Handled structures
        • 10.2.4. Call macros
        • 10.2.5. Typeinfo macros
        • 10.2.6. Handled types
        • 10.2.7. Classes
        • 10.2.8. Call generation
        • 10.2.9. Visitor pattern
        • 10.2.10. Expression generation
        • 10.2.11. Adapter generation
        • 10.2.12. Adapter application
        • 10.2.13. Adding objects to objects
        • 10.2.14. Program and module access
        • 10.2.15. Textual descriptions of the objects
        • 10.2.16. Searching
        • 10.2.17. Iterating
        • 10.2.18. Cloning
        • 10.2.19. Mangled name
        • 10.2.20. Size and offset
        • 10.2.21. Evaluations
        • 10.2.22. Error reporting
        • 10.2.23. Location and context
        • 10.2.24. Use queries
        • 10.2.25. Log
        • 10.2.26. Removal
        • 10.2.27. Properties
        • 10.2.28. Infer
        • 10.2.29. Module queries
        • 10.2.30. Debug info helpers
        • 10.2.31. AOT support
        • 10.2.32. String builder writer
        • 10.2.33. GC
      • 10.3. Boost package for the AST
        • 10.3.1. Type aliases
        • 10.3.2. Function annotations
        • 10.3.3. Variant macros
        • 10.3.4. Structure macros
        • 10.3.5. Classes
        • 10.3.6. Containers
        • 10.3.7. Textual descriptions of the objects
        • 10.3.8. Queries
        • 10.3.9. Annotations
        • 10.3.10. Expression generation
        • 10.3.11. Type generation
        • 10.3.12. Type casts
        • 10.3.13. Setup
      • 10.4. decltype macro and template function annotation
        • 10.4.1. Function annotations
        • 10.4.2. Call macros
      • 10.5. Template application helpers
        • 10.5.1. Structures
        • 10.5.2. Call macros
        • 10.5.3. Template rules
        • 10.5.4. Template application
        • 10.5.5. Expression helpers
        • 10.5.6. Expression generation
        • 10.5.7. Block helpers
        • 10.5.8. Global variable helpers
        • 10.5.9. Hygienic names
        • 10.5.10. Quoting macros
        • 10.5.11. Type pointer helpers
        • 10.5.12. Structure helpers
        • 10.5.13. Class generation
      • 10.6. AST quasiquoting infrastructure
        • 10.6.1. Structures
        • 10.6.2. Clone operations
        • 10.6.3. Conversion
      • 10.7. Boost package for macro manipulations
        • 10.7.1. Structures
        • 10.7.2. Function annotations
        • 10.7.3. Implementation details
        • 10.7.4. Block analysis
        • 10.7.5. Uncategorized
      • 10.8. Type macro and template structure support
        • 10.8.1. Structures
        • 10.8.2. Function annotations
        • 10.8.3. Structure macros
        • 10.8.4. Enum helpers
        • 10.8.5. Template structure instantiation
        • 10.8.6. Type inference helpers
        • 10.8.7. String constant access
        • 10.8.8. Work tracking
        • 10.8.9. Type macro arguments
      • 10.9. DECS, AST block to loop
        • 10.9.1. Block to loop conversion
      • 10.10. Position-based AST queries
        • 10.10.1. Structures
        • 10.10.2. Classes
        • 10.10.3. Cursor queries
        • 10.10.4. Result inspection
      • 10.11. AST type usage collection
        • 10.11.1. Structures
        • 10.11.2. Collecting type information
      • 10.12. AST pattern matching
        • 10.12.1. Enumerations
        • 10.12.2. Structures
        • 10.12.3. Call macros
        • 10.12.4. Match execution
        • 10.12.5. Result builders
        • 10.12.6. Value extraction
        • 10.12.7. Name and type extraction
        • 10.12.8. Argument filtering
        • 10.12.9. Block scanning
        • 10.12.10. Constant construction
        • 10.12.11. AST reconstruction
        • 10.12.12. AST normalization
      • 10.13. Constant expression checker and substitution
        • 10.13.1. Function annotations
        • 10.13.2. Macro helpers
    • 11. Annotations and Contracts
      • 11.1. Miscellaneous contract annotations
        • 11.1.1. Function annotations
        • 11.1.2. Type queries
      • 11.2. Apply reflection pattern
        • 11.2.1. Call macros
      • 11.3. defer and defer_delete macros
        • 11.3.1. Function annotations
        • 11.3.2. Call macros
        • 11.3.3. Defer
        • 11.3.4. Stub
      • 11.4. if_not_null macro
        • 11.4.1. Call macros
      • 11.5. is_local_xxx ast helpers
        • 11.5.1. Scope checks
      • 11.6. safe_addr macro
        • 11.6.1. Function annotations
        • 11.6.2. Safe temporary address
        • 11.6.3. Temporary pointers
        • 11.6.4. Temporary values
      • 11.7. static_let macro
        • 11.7.1. Function annotations
        • 11.7.2. Static variable declarations
      • 11.8. lpipe macro
        • 11.8.1. Call macros
      • 11.9. Assert once
        • 11.9.1. Function annotations
        • 11.9.2. Assertion
      • 11.10. Loop unrolling
        • 11.10.1. Function annotations
        • 11.10.2. Unrolling
      • 11.11. Bitfield operator overloads
        • 11.11.1. Bitfield element access
        • 11.11.2. Iteration
      • 11.12. Bitfield name traits
        • 11.12.1. Function annotations
        • 11.12.2. Iteration
      • 11.13. Enumeration traits
        • 11.13.1. Typeinfo macros
        • 11.13.2. Handled enumerations
        • 11.13.3. Enumeration iteration
        • 11.13.4. Enumeration conversion
      • 11.14. Type trait macros
        • 11.14.1. Call macros
        • 11.14.2. Typeinfo macros
      • 11.15. C++ bindings generator
        • 11.15.1. Generation of bindings
    • 12. Classes and Interfaces
      • 12.1. Class method macros
        • 12.1.1. Function annotations
      • 12.2. instance_function function annotation
        • 12.2.1. Function annotations
      • 12.3. Interfaces
        • 12.3.1. Variant macros
        • 12.3.2. Structure macros
      • 12.4. C#-like multicast delegate type macro
        • 12.4.1. Structures
        • 12.4.2. Delegate type macro
      • 12.5. Dynamic RTTI type casts
        • 12.5.1. Variant macros
        • 12.5.2. Dynamic casts
      • 12.6. Generic return type instantiation
        • 12.6.1. Call macros
    • 13. Testing and Debugging
      • 13.1. Debug agent API
        • 13.1.1. Handled structures
        • 13.1.2. Agent lifecycle
        • 13.1.3. Cross-context invocation
        • 13.1.4. Agent construction
        • 13.1.5. Agent tick and state collection
        • 13.1.6. Instrumentation
        • 13.1.7. Data and stack walking
        • 13.1.8. Context inspection
        • 13.1.9. Breakpoints
        • 13.1.10. Memory
      • 13.2. Instrumenting profiler
        • 13.2.1. Profiler control
      • 13.3. Profiler cross-context helpers
        • 13.3.1. Context profiler control
      • 13.4. Debug expression evaluator
        • 13.4.1. Structures
        • 13.4.2. Evaluation
      • 13.5. Faker
        • 13.5.1. Structures
        • 13.5.2. Constructor
        • 13.5.3. Random values
        • 13.5.4. Random strings
        • 13.5.5. Date and time
      • 13.6. Fuzzer
        • 13.6.1. Fuzzer tests
      • 13.7. Debug Adapter Protocol data structures
        • 13.7.1. Structures
        • 13.7.2. JSON deserialization
        • 13.7.3. JSON serialization
        • 13.7.4. JSON field accessors
    • 14. Code Quality and Refactoring
      • 14.1. Paranoid lint pass
        • 14.1.1. Lint operations
      • 14.2. Code validation annotations
        • 14.2.1. Function annotations
      • 14.3. Automated refactoring tools
        • 14.3.1. Function annotations
        • 14.3.2. Call macros
        • 14.3.3. Refactoring operations
      • 14.4. Consume argument optimization
        • 14.4.1. Function annotations
      • 14.5. Call argument removal annotation
        • 14.5.1. Function annotations
      • 14.6. Source code formatter
        • 14.6.1. Formatting
      • 14.7. File-based source code formatter
        • 14.7.1. File formatting
    • 15. Image and Font Processing
      • 15.1. Image loading, writing, and resizing (stb_image)
        • 15.1.1. Enumerations
        • 15.1.2. Image loading
        • 15.1.3. Image info
        • 15.1.4. Memory management
        • 15.1.5. Load settings
        • 15.1.6. HDR gamma and scale
        • 15.1.7. File writing
        • 15.1.8. Write to memory
        • 15.1.9. Write settings
        • 15.1.10. Image resizing
        • 15.1.11. Animated PNG (APNG) writer
      • 15.2. High-level image API (stbimage_boost)
        • 15.2.1. Structures
        • 15.2.2. Image construction
        • 15.2.3. Image loading
        • 15.2.4. Pixel access
        • 15.2.5. Image properties
      • 15.3. Raster operations (pixel copy, convert, SIMD gather/scatter)
        • 15.3.1. Gather
        • 15.3.2. Scatter
        • 15.3.3. Scatter with mask
        • 15.3.4. Store with mask
        • 15.3.5. Gather-scatter
        • 15.3.6. Gather-scatter with mask
        • 15.3.7. Gather-store with mask
        • 15.3.8. Gather-store with stride
        • 15.3.9. Byte gather-store
        • 15.3.10. Copy reversed
        • 15.3.11. Copy rect
        • 15.3.12. Channel conversion
        • 15.3.13. BPC conversion
        • 15.3.14. Span raster
        • 15.3.15. Fill rect
        • 15.3.16. Alpha blit
      • 15.4. TrueType font loading and rasterization (stb_truetype)
        • 15.4.1. Constants
        • 15.4.2. Handled structures
        • 15.4.3. Font loading
        • 15.4.4. Font packing
        • 15.4.5. Font metrics
        • 15.4.6. Codepoint metrics
        • 15.4.7. Codepoint bitmaps
        • 15.4.8. Glyph shape
      • 15.5. TrueType font API (stbimage_ttf)
        • 15.5.1. Structures
        • 15.5.2. Low-level initialization
        • 15.5.3. Low-level scale
        • 15.5.4. Low-level metrics
        • 15.5.5. Low-level glyph shape
        • 15.5.6. Low-level bitmap rendering
        • 15.5.7. Low-level packing
        • 15.5.8. Font loading
        • 15.5.9. Font scale
        • 15.5.10. Font metrics
        • 15.5.11. Font glyph shape
        • 15.5.12. Font bitmap rendering
        • 15.5.13. Text measurement and rendering
    • 16. Audio and MIDI
      • 16.1. Low-level audio bindings (miniaudio)
        • 16.1.1. Constants
        • 16.1.2. Enumerations
        • 16.1.3. Handled structures
        • 16.1.4. Audio device
        • 16.1.5. Decoder
        • 16.1.6. Resampler
        • 16.1.7. Channel converter
        • 16.1.8. Volume mixer
        • 16.1.9. Limiter
        • 16.1.10. HRTF
        • 16.1.11. I3DL2 Reverb
        • 16.1.12. Convolution Reverb
        • 16.1.13. Chorus
        • 16.1.14. Delay
        • 16.1.15. Per-voice effects
        • 16.1.16. SF2 voice
      • 16.2. Audio playback, mixing, 3D spatial audio, and effects
        • 16.2.1. Type aliases
        • 16.2.2. Constants
        • 16.2.3. Enumerations
        • 16.2.4. Structures
        • 16.2.5. Audio system lifecycle
        • 16.2.6. Sound playback
        • 16.2.7. Sound control
        • 16.2.8. 3D audio
        • 16.2.9. Reverb
        • 16.2.10. Chorus
        • 16.2.11. Attenuation
        • 16.2.12. Status monitoring
        • 16.2.13. Command batching
        • 16.2.14. PCM stream
        • 16.2.15. Decoding
        • 16.2.16. Sound ID
        • 16.2.17. Internal stream management
      • 16.3. WAV file reading and writing
        • 16.3.1. WAV I/O
    • 17. Strudel (Live Coding)
      • 17.1. Event payload and ADSR/delay-time resolvers
        • 17.1.1. Structures
        • 17.1.2. ADSR and delay resolution
      • 17.2. Cycle-space time primitives: TimeSpan, Hap, and cycle helpers
        • 17.2.1. Structures
        • 17.2.2. Cycle math
      • 17.3. Pattern algebra, combinators, and fluent control API
        • 17.3.1. Type aliases
        • 17.3.2. Pattern construction
        • 17.3.3. Time manipulation
        • 17.3.4. Combinators
        • 17.3.5. Setter primitives
        • 17.3.6. Fluent control: dynamics and routing
        • 17.3.7. Fluent control: 3D positioning (HRTF)
        • 17.3.8. Fluent control: effects sends
        • 17.3.9. Fluent control: filters
        • 17.3.10. Fluent control: envelope
        • 17.3.11. Fluent control: synthesis and shaping
        • 17.3.12. Fluent control: modulation FX
        • 17.3.13. Fluent control: SF2
        • 17.3.14. Signals
      • 17.4. Mini-notation tokenizer, parser, and fluent-DSL entry points
        • 17.4.1. Enumerations
        • 17.4.2. Structures
        • 17.4.3. Tokenizer and parser
        • 17.4.4. Fluent DSL constructors
        • 17.4.5. Cycle-rate variants
      • 17.5. Musical scales and note-name helpers
        • 17.5.1. Scale and note selection
      • 17.6. Audio synthesis: oscillators, drums, filters, and effects
        • 17.6.1. Constants
        • 17.6.2. Enumerations
        • 17.6.3. Structures
        • 17.6.4. Pitch conversion
        • 17.6.5. Noise generators
        • 17.6.6. Drum renderers
        • 17.6.7. Oscillator type
        • 17.6.8. Voice FX chain
        • 17.6.9. Oscillator voice
        • 17.6.10. Vowel filter
        • 17.6.11. Voice rendering
      • 17.7. Sample bank and audio file loading
        • 17.7.1. Structures
        • 17.7.2. Loading
        • 17.7.3. Rendering
      • 17.8. Voice allocation, effect bus routing, and per-tick mixing
        • 17.8.1. Structures
        • 17.8.2. Orbit effects
        • 17.8.3. Scheduler lifecycle
      • 17.9. Top-level playback harness: tracks, BPM/CPS, and threaded audio
        • 17.9.1. Structures
        • 17.9.2. Lifecycle
        • 17.9.3. Playback control
        • 17.9.4. Tempo and timing
        • 17.9.5. Volume
        • 17.9.6. Asset loading
        • 17.9.7. Track management
        • 17.9.8. State serialization
        • 17.9.9. Debug and diagnostics
      • 17.10. MIDI file parser
        • 17.10.1. Enumerations
        • 17.10.2. Structures
        • 17.10.3. Parsing
        • 17.10.4. Track operations
        • 17.10.5. Binary readers
      • 17.11. MIDI file playback with GM preset mapping
        • 17.11.1. Structures
        • 17.11.2. Lifecycle
        • 17.11.3. Playback control
        • 17.11.4. Audio setup
        • 17.11.5. Asset loading
        • 17.11.6. Event processing
        • 17.11.7. Drum and GM preset rendering
      • 17.12. SoundFont 2 file parser
        • 17.12.1. Constants
        • 17.12.2. Enumerations
        • 17.12.3. Structures
        • 17.12.4. Loading
        • 17.12.5. Preset and zone lookup
        • 17.12.6. Generator access
        • 17.12.7. Unit conversion
        • 17.12.8. Modulator source helpers
      • 17.13. SoundFont 2 per-voice runtime: envelope, LFO, modulators, biquad
        • 17.13.1. Enumerations
        • 17.13.2. Structures
        • 17.13.3. Envelope
        • 17.13.4. LFO
        • 17.13.5. Modulators
        • 17.13.6. Voice creation
      • 17.14. Live-reload state preservation
  • External modules
    • dasImgui
      • Where to go
      • What’s there
      • Versioning
Daslang documentation
  • Search


© Copyright 2018-2026, Gaijin Entertainment.

Built with Sphinx using a theme provided by Read the Docs.