Skip to content

Implement garbage collection #42

@alexdovzhanyn

Description

@alexdovzhanyn

To enable the creation of more complex data structures in ThetaLang while maintaining a high-level programming model, we need to implement an efficient garbage collection (GC) system. This will help automate memory management, allowing developers to focus on writing clean, efficient code without worrying about manual memory allocation and deallocation.

Proposed Solution:
To avoid the complexity of hand-writing a garbage collector directly in WebAssembly, we propose leveraging existing tools like Emscripten. Emscripten would allow us to write the garbage collector in C++, which could then be compiled into WebAssembly. This approach enables better performance and reduces potential errors in memory management.

Required Updates:

  • Garbage Collector Implementation:
    Implement a garbage collection system in C++ and compile it to WASM using Emscripten. This will manage heap-allocated objects and automatically clean up unused data structures.

  • Code Generation Adjustments:
    Modify the ThetaLang code generation process to ensure that generated code makes proper calls to the memory allocator. This is necessary for handling memory allocation, particularly for closures and heap-allocated data.

Benefits:

  • Automated memory management for users.
  • Cleaner, more efficient high-level code.
  • Support for complex data structures without requiring manual memory handling.

Metadata

Metadata

Assignees

Labels

CodeGenImpacts code generationenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions