# Libs-API Meeting 2022-12-06 ###### tags: `Libs Meetings` `Minutes` **Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr **Attendees**: Amanieu, Josh, Mara ## Agenda - Triage - Anything else? ## Triage ### FCPs 20 rust-lang/rust T-libs-api FCPs [yaahc (17)](https://rfcbot.rs/fcp/yaahc), [Amanieu (5)](https://rfcbot.rs/fcp/Amanieu), [m-ou-se (8)](https://rfcbot.rs/fcp/m-ou-se), [joshtriplett (10)](https://rfcbot.rs/fcp/joshtriplett), [BurntSushi (18)](https://rfcbot.rs/fcp/BurntSushi), [dtolnay (6)](https://rfcbot.rs/fcp/dtolnay) ### Nominated - [3 `rust-lang/rust` `I-libs-api-nominated` items](https://github.com/rust-lang/rust/issues?q=label:I-libs-api-nominated+is:open) - rust.tf/83363 *Implement new proc macro diagnostics API* - Let's discuss when David is in the meeting. - rust.tf/101607 *Add \`cstr!\` macro.* - Closed in favor for c"" (RFC 3348). - rust.tf/103763 *\`Arc::ptr\_eq\` does not always return "true if the two Arcs point to the same allocation" as documented* - Let's fix this. - Example below. - Discussion about the same issue in ptr::eq. - [1 `rust-lang/rfcs` `I-libs-api-nominated` items](https://github.com/rust-lang/rfcs/issues?q=label:I-libs-api-nominated+is:open) - rust.tf/rfc3308 *Add \`core::mem::offset\_of!\` RFC* - [1 `rust-lang/libs-team` `T-libs-api` `I-nominated` items](https://github.com/rust-lang/libs-team/issues?q=label:T-libs-api+label:I-nominated+is:open) - github.com/rust-lang/libs-team/issues/122 *Revamp unstable MaybeUninit APIs* Arc::ptr_eq example. shows `false` in debug mode, `true` in release mode: ```rust= use std::fmt; use std::fmt::Debug; use std::sync::Arc; pub struct X; #[repr(transparent)] pub struct Wrapper(X); impl Debug for X { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.write_str("X") } } impl Debug for Wrapper { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { f.write_str("X") } } fn main() { let x: Arc<X> = Arc::new(X); let w: Arc<Wrapper> = unsafe { std::mem::transmute(x.clone()) }; let x: Arc<dyn Debug> = x; let w: Arc<dyn Debug> = w; println!("{:?}", Arc::ptr_eq(&x, &w)); } ``` Amanieu: for ptr::eq in general, vtables already get merged. Example where they get merged: ```rust= trait Trait {} struct Foo; struct Bar; impl Trait for Foo {} impl Trait for Bar {} pub fn foo() -> &'static dyn Trait {&Foo} pub fn bar() -> &'static dyn Trait {&Bar} ``` This Eq impl shouldn't have happened: https://doc.rust-lang.org/1.65.0/src/core/ptr/metadata.rs.html#244-251 ### Stalled Tracking Issues - [`rust-lang/rust` `T-libs-api` `C-tracking-issue` items](https://github.com/rust-lang/rust/issues?q=label:T-libs-api+label:C-tracking-issue+is:open+sort:updated-asc)