Implement arena-based heap allocation and garbage collection#3
Open
Implement arena-based heap allocation and garbage collection#3
Conversation
This commit introduces a comprehensive heap allocation and garbage collection system to replace the previous unsafe manual memory management approach. Key changes: - Add new heap module with arena-based object allocation using indices instead of raw pointers - Implement mark & sweep garbage collection with tri-color marking (white/gray/black) - Replace unsafe DST implementation with safe Vec<u8> based string storage - Update Value enum to use ObjectRef (index) instead of raw Obj pointers - Integrate heap with VM and compiler for proper string allocation - Add GC root management for stack values during execution - Fix string concatenation to use heap allocation - Remove all manual memory management code The new system provides: - Memory safety through safe Rust abstractions - Automatic memory reclamation with configurable GC thresholds - Better performance via arena allocation with free list - Proper tracking of allocated memory and live objects 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Vec<u8>for string storageChanges
New Heap Module (
src/common/heap.rs)Vec<Option<GcObject>>with index-based referencesUpdated Value Representation
Value::Objectfrom raw pointer toObjectRef(index)Objstruct with manual linked listVM Integration
Benefits
Test plan
🤖 Generated with Claude Code