Hybrid Execution
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 5
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
With the current VM implementation based on a stack machine model, we are able to achieve high-level abstraction and dynamic typing, making the Hexagon VM a suitable platform for dynamic languages to run on.
However, the current execution model depends on heavy use of heap allocation, dynamic dispatch and managed library calls, limiting the performance and preventing the support of multi-threading.
Therefore, I decide to introduce a mechanism called Hybrid Execution, for building concurrent and high-performance applications on top of the VM.
Hybrid Execution consists of the original stack-based execution model and a new register-based model, with 16 general-purpose registers and a shared virtual linear memory.
Goals:
- [x] Virtual page table
- [x] Types: `Int8`, `Int16`, `Int32`, `Int64`, `Float64`
- [x] Virtual ISA
- [ ] Integrate with the stack-based VM
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the current stack-based VM and the completed virtual ISA, virtual page table, and type work. Determine how the register-based model should be integrated with the stack-based VM, then verify that both execution models work together and preserve the stated concurrency and performance goals.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100