weld
weld copied to clipboard
feat(rivetc+rivet): implement boxed pointers (`^T`)
A new type of pointer is introduced to the compiler: ^T, a smart pointer that has automatic reference counting and also points to a value in the heap.
This pointer has the same capabilities as a normal pointer. Its value can be dereferenced using the syntax: boxed_ptr.^, and in addition, a pointer can be created using the following syntax: ^value.
Boxed pointers have their equivalent to rawptr: boxedptr, which can receive any boxed pointer, in addition to this, it also has automatic reference counting, so there is no need to use mem.dealloc.
New functions are added to the core.mem module, which operate with boxedptrs.
Rivet uses this pointer for dynamic strings and dynamic arrays.