[GSoC] Rust: Compiling the alloc crate - Status Report 3

Enes Cevik via Gcc <[email protected]> Wed, 01 Jul 2026 15:06:18 +0300
Newsgroups gmane.comp.gcc.devel
Message-ID <[email protected]>
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