Skip to content

Conversation

@ryanwilsond
Copy link
Owner

@ryanwilsond ryanwilsond commented Jun 17, 2025

Description

Postponed:

While developing the metadata processing section of the code, I found that Belte simply doesn't have enough language sophistication to properly represent (and hence interop) with many .NET symbols. To get around this, most of the PE symbol API is directly copied from Roslyn to properly hold C# symbol state, but at the current moment it is too superfluous. The current PE symbol API compiles with no errors/warnings, so it will sit there until the language is more mature and this feature is revisited.

Even so, the ability to compile Belte code into workable DLLs was a new useful feature added in this PR.

Allows Belte source to reference symbols defined in DLLs using Metadata. Only allows referencing symbols with exact type mapping, for example:

System.Int64 -> int
System.Double -> decimal
System.Boolean -> bool
System.String -> Nullable<string>
System.Object -> Nullable<Object>
...

Will eventually add all native .NET types to the LowLevel namespace to allow referencing more symbols.

Type of change

Please delete options that are not relevant.

  • New feature (non-breaking change which adds functionality)

@ryanwilsond ryanwilsond self-assigned this Jun 17, 2025
@ryanwilsond ryanwilsond merged commit 876c7af into rw/evalopt Jun 21, 2025
1 check passed
@ryanwilsond ryanwilsond deleted the rw/dlls branch June 21, 2025 05:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants