Skip to content

Instantly share code, notes, and snippets.

@TIHan
Last active July 12, 2025 01:24
Show Gist options
  • Save TIHan/8e002025ca194444197fe6982f57e510 to your computer and use it in GitHub Desktop.
Save TIHan/8e002025ca194444197fe6982f57e510 to your computer and use it in GitHub Desktop.
Priorities:
1. Get all tests passing (highest-priority)
- May require supporting named arguments - we already do this for attributes to support named args
2. Get C# style extension methods working
3. Get documentation working - convert XML docs to OlyIL assembly docs
- Use `///` to signify documentation rather than `//`. Support markdown like rust?
4. Add implicit conversion feature, but only available for prelude libs
5. Any additional CLI support (service-oriented through IPC?)
- Display warnings and other non-errror diagnostics
6. Go through Oly examples and Evergreen to address all 'TODO-language-bug:' comments.
In no particular order:
1. Organize Target projects
- Create separate "Target" folder from "Runtime"
- Namespaces should no longer be called "Oly.Runtime.Target", should be called "Oly.Target"
- Emitter and Target projects should be separate
-- Emitter projects rely on runtime
-- Target projects rely on front-end and runtime
2. Organize Test projects - such as creating a "Test" folder
3. Remove target name parsing such as "net8_r2r". Instead, introduce a `#property "r2r: true"` as we will have multiple and varied properties for different targets. Include analysis too so we do not do `#property "r2r: true"` along with `#property "aot: true"`. Also include completions.
4. Remove notion of having a configuration json file. New configurations should be able to be defined in the `.olyx` projects (new feature)
- Temporarily, let's only allow Debug/Release configs with no in-between
5. Limit targets, such as we should not allow "dotnet: net45".
6. For .NET, handle DllImportAttribute. Also consider handling other .NET attributes.
7. Do not depend on Evergreen.
8. Turn on stress testing for existing tests
Features:
1. '#property' directive.
2. C#-style extension methods (includes interop)
3. Named-arguments.
4. Add conditional directive `#else`
5. Implicit conversion (mentioned above, only available for prelude libs)
6. Records (with f#/c# interop)
7. Discriminated unions (with f# interop)
SPIR-V:
1. Not required to be fully complete, but should get the Numerics Prelude complete for .NET that intersects with SPIR-V.
2. Consider moving this target impl to the Evergreen project as it is the only way to do testing.
--
Polishing:
1. Fix-up error codes for ALL errors
- Will be a significant amount of work, but not hard. Store errors and their codes elsewhere.
2. Documentation!
3. How to ship? Include everything in vscode extension? And/or a separate download?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment