TL;DR
Sham is a Racket-based toolkit that enables the creation of high-performance internal DSLs with transparent compilation to assembly, improving efficiency while maintaining seamless integration with host languages.
Contribution
It introduces Sham, a novel framework for building high-performance internal DSLs with transparent runtime compilation, enhancing performance without sacrificing ease of embedding.
Findings
Major performance improvements in existing DSLs using Sham
Seamless integration with host language without extra effort
Flexible framework for defining and extending DSL syntax
Abstract
Domain-specific languages (DSLs) are touted as both easy to embed in programs and easy to optimize. Yet these goals are often in tension. Embedded or internal DSLs fit naturally with a host language, while inheriting the host's performance characteristics. External DSLs can use external optimizers and languages but sit apart from the host. We present Sham, a toolkit designed to enable internal DSLs with high performance. Sham provides a domain-specific language (embedded in Racket) for implementing other high-performance DSLs, with transparent compilation to assembly code at runtime. Sham is well suited as both a compilation target for other embedded DSLs and for transparently replacing DSL support code with faster versions. Sham provides seamless inter-operation with its host language without requiring any additional effort from its users. Sham also provides a framework for defining…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
