Hi! This is the third report on compiling the alloc crate with GCCRS.
This week I set out to: - Refactor the fat pointer structure by changing the vtable to a static struct instead of an array embedded in the fat pointer, ensuring fat pointers are always 2 words in size. - Implement the 'coerce_unsized' and 'unsize' lang items. - Implement the 'size_of_val' and 'min_align_of_val' intrinsics. Over the week: - The vtable structure was updated as planned, and fat pointers are now always 2 words in size. - With the vtable structure updated, we were able to implement the 'size_of_val' and 'min_align_of_val' intrinsics. - We came across a bug where trait methods were being mixed up during dynamic dispatch, and fixed it. - For 'coerce_unsized' to work correctly, the where clauses in impl blocks need to be properly processed by the compiler. However, I noticed that the where clause is currently being ignored. I am investigating the codebase to find the source of the issue. - Since the 'coerce_unsized' implementation is blocked, I instead implemented the 'write_bytes' and 'arith_offset' intrinsics, which were planned as simpler tasks for next week. Current status: - The main priority is to investigate the issue we're having with impl blocks and try to get a clearer picture of the problem. Based on the outcome, we will need to make some decisions regarding the 'coerce_unsized' implementation. - This task will likely take longer than a week, but if it doesn't, the async/generator lang items need to be registered next. After that, I expect we'll be ready to move on to expanding the alloc testsuite, assuming we don't run into another issue. Best regards, Enes
