Scripting languages are widely used to compose external calls such as native libraries or network services. In such scripts, execution time is often dominated by waiting for these external calls, rendering traditional single-language optimization ineffective. To address this, we propose a novel opportunistic evaluation strategy for scripting languages based on a core lambda calculus that automatically dispatches independent external calls in parallel and streams their results. We prove that our approach is confluent, ensuring that it preserves the programmer's original intent, and that it eventually executes every external call. We implement this approach in a scripting language called EPIC. We demonstrate the versatility and performance of EPIC, focusing on programs that invoke heavy external computation through the use of large language models (LLMs) and other APIs. Across five scripts, we show that opportunistic evaluation improves total running time (up to $6.2\times$) and latency (up to $12.7\times$) compared to several state-of-the-art baselines, while performing very close (between $1.3\%$ and $18.5\%$ running time overhead) to hand-tuned manually optimized asynchronous Rust implementations. For Tree-of-Thoughts, a prominent LLM reasoning approach, we achieve a $6.2\times$ performance improvement over the authors' own implementation.
翻译:暂无翻译