EDSL Infinity Wars: Mainstreaming Symbolic Computation
summary
A C++ EDSL is presented that separates storage from symbolic formulas by using stateless expression templates, encodes symbol names as a 64-bit integral sequence for unique compile-time types, and performs on-the-fly simplification via structural pattern matching to avoid explosive template growth. It implements named-argument binding with aggregated lambdas, static visitors for evaluation and symbolic derivatives, and partial evaluation; prototypes compile with mainstream compilers and work on scalars today, with array/Eigen vectorization and broadcasting as active next steps.
AI-written summary · about
chapters (23)
- 0:00Introduction and motivation
- 1:12What is EDSL Infinity Wars
- 3:17Simulation vs theory divide
- 6:11Domain-specific languages explained
- 7:54Expression templates deep dive
- 13:33Problems with expression templates
- 17:28Separating concerns in DSLs
- 18:33Symbolic math fundamentals
- 21:23Formulas equations and identities
- 23:30Abstract syntax trees for math
- 28:08Stateless expression design
- 30:18User API and design goals
- 32:44Lightweight expression template
- 34:51Expression matching techniques
- 37:39Compile-time simplification
- 41:15Symbol naming and hashing
- 44:05Variable binding and evaluation
- 48:21Visitors and differentiation
- 51:12Future work and limitations
- 53:21Practical examples and demos
- 58:04Advantages of the approach
- 59:09Compile-time parsing and future
- 1:01:19Q&A session
related talks
01h 02mCrafting EDSL In C++ using Metaprogramming, Operator Overloading, & Lambda Expressions
50mExpression Templates: Past, Present, Future
16mCompiling Symbolic Execution with Staging and Algebraic Effects
23mAnyDSL: A Partial Evaluation Framework for Programming High-Performance Libraries
14mHigher-Order Demand-Driven Symbolic Evaluation
35mPractical Normalization by Evaluation for EDSLs
30mYin-Yang: Concealing the Deep Embedding of DSLs (Most Influential Paper)
45mC++ is a Metacompiler
