Thanks for the support everyone.
It's good to know some of you are excited to use it!
I'm starting the open source process of SwiftLite now!
Here's my strategy / guidelines:
- Publish as SPM repositories, either under my personal GitHub or on a new GitHub organization.
- Use a permissive license. Likely MIT.
- Code may be AI generated, but all commits and each LOC will be human reviewed before release.
- Ensure all external dependencies of SwiftLite are open sourced first.
- The main SwiftLite repository will be open-sourced incrementally.
Here's all the external dependencies SwiftLite currently uses. There's only one left to open source.
| Repository | Description | How SwiftLite uses it | Maintainer | Open Source? |
|---|---|---|---|---|
| swift-syntax | Apple's Swift parsing / AST models | - Parsing - AST representation - Operator folding - Parse-time diagnostics - Native binding scanning |
Apple | |
| swift-collections | Swift collection data structures | UniqueArray and RigidArray value types used by the SwiftLiteVM |
Apple | |
| NamedClosure | Named closure macro and wrapper | #namedClosure is used to make debugging easier in the type resolution system |
Joe Hinkle | |
| SwiftTaggedPointer | Packs type tags + pointer + metadata into 64-bit values | - Used by the VM to represent any SLValue (SwiftLite Value) at runtime at 64 bits- Support for non-Apple platforms is needed - Non-Apple platforms used 128 bits to represent SLValue without tagged pointers |
Joe Hinkle | |
| swift-argument-parser | CLI argument parsing | Powers all CLI entry points | Apple | |
| TOMLKit | TOML parser/encoder | E2E test results are saved to disk as .toml files | LebJe | |
| AllocatorKit | Swift manual memory allocation abstraction | - Allows SwiftLite to use manual allocators - Used by tests to measure memory usage by VM - Used by tests to assert there's no memory leaks |
Joe Hinkle | |
| SwiftSourceSig | Source file signature/lint tool | - SwiftSourceSigLintBuildTool plugin verifies generated files aren't tampered with- SwiftSourceSig module provides generated-file header string for codegen |
Joe Hinkle | |
| SwiftFileBuilder | Programmatic Swift code generation DSL | Used to programmatically create Swift files, such as the disassembler. | Joe Hinkle | - |
Feel free to provide feedback for any of these repos! I should have SwiftFileBuilder up sometime this month.
If anyone feels comfortable with using low level unsafe Swift APIs, I'd definitely appreciate feedback on AllocatorKit and SwiftTaggedPointer. Both are used extensively by the VM.
I don't have a clear plan for how I will incrementally open source the main repository. The main issue is that the majority of the code was originally handwritten, but last few months were nearly all claude code driven. I need a strategy to avoid publishing unreviewed AI code. I'll share more info when I'm able to.