Skip to content

Conversation

@ryanwilsond
Copy link
Owner

@ryanwilsond ryanwilsond commented Jun 17, 2025

Description

Implemented the Executor, an -i endpoint that code generates the bound tree and dynamically calls it via a delegate. The executor is consistently 1000x faster than the Evaluator, and when it comes to heavy GC pressure the Executor can exceed 3500x runtime speed in comparison.

  • Refactored a majority of the IL emitter into a new CodeGenerator to be shared between the Executor and IL Emitter.
  • Switched to net9.0
  • Belte can now build to a DLL
  • More explicit null handling produced by lower
  • Small profiler project to compare endpoints
  • Local functions now create closures to be compatible with IL
  • Outline of PE handling (not finished due to language limitations, but very large starting point for the future)

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • This change requires a documentation update

@ryanwilsond ryanwilsond self-assigned this Jun 17, 2025
* trying to fix github workflow

* work on namespaces

* work on assemblies

* can now build to dll

* work on metadata reading

* work on PE symbols

* good starting point for future PE support (need more lang features first)

* minor loop bugfix ()
* initial test suite

* small compiler changes

* fixing found executor bugs

* fixed most tests

* more executor bug fixes

* satisified with findings
* work

* work on closures

* all tests pass through executor now
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