Generalize Emitter to support the LLVM backend
- Dominant language
- TypeScript
- Stars
- 27
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
Currently, the `Emitter` interface assumes that you're producing strings. This works for generating JavaScript and GLSL, but it won't work for LLVM, where we'll need the functions to produce `llvm.Value` and other such objects.
One way to get started might be to make `Emitter` a generic interface: i.e., `Emitter` would be the current configuration. Or, it might be less disruptive to make the current `Emitter` inherit from a new `BaseEmitter` that adds more generality.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing the Emitter interface and its JavaScript and GLSL implementations to understand the current string-producing contract. Define how that contract can support the LLVM backend's llvm.Value and related objects while preserving existing emitters; done means the design is implemented without breaking JavaScript or GLSL generation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100