# Meeting 2024-03-13 <!-- Leave your topic starting with ### in the relevant sections below --> ## Critical <!-- bugs, soundness issues, urgent patches/reviews etc. --> ## Status Reports <!-- You want to report on something you are working on/request reviews. Or you want to know the status of something someone else is doing --> ### LTO Rust modules with C helpers https://rust-for-linux.zulipchat.com/#narrow/stream/288089-General/topic/LTO.20Rust.20modules.20with.20C.20helpers Boqun: encountered an issue where `extern inline` doesn't generate anything. Boqun: encountered an error with .data.rel.ro being placed in `.data.rel.lo` Andreas: my LTO hack: https://github.com/metaspace/linux/tree/rnull-lto-v6.8-rc6 Boqun: my progress so far: https://github.com/fbq/linux/tree/dev/rust/lto ## Discussion Questions <!-- Anything that requires lengthy discussion/more general questions also fit here --> ### Dropping our custom `alloc` fork ```rust trait Allocator { type RetType<T, E>; type ExtraArg; const DEFAULT_ARG: Self::ExtraArg; fn map_result<T, E>(r: Result<T, E>) -> Self::RetType<T, E>; fn allocate(layout: Layout, arg: Self::ExtraArg) -> Result<u32, std::alloc::AllocError>; /// Other functions. } ``` Benno: What is `RetType`? I find the name not really expressive. Wedson: We'll change the names :) Benno: Sure, but what does it is it used for? :) Wedson: For fallible vs infallible allocators. Hang on. https://godbolt.org/z/69x53er4v Trevor Gross: some prior arts * https://github.com/rust-lang/rust/pull/111970 * https://github.com/rust-lang/rust/pull/117738 * https://github.com/rust-lang/wg-allocators/issues/90#issuecomment-1984981347 Discuss next week after reading more on the background material ### Splitting off the `pinned-init` crate **Why?:** to make maintanence of the userspace version a lot simpler (ie minimize the differences) See [here](https://github.com/y86-dev/linux/commits/pinned-init-crate/?since=2024-03-13&until=2024-03-13) for the commits. My Questions: - too many small commits? - println!/pr_info! issue (no access to kernel crate), what to use instead? Boqun: maybe add a feature for the crate, and the feature decides which print macro to call? - [CMutex example](https://github.com/y86-dev/linux/commit/bdfc69a2b803af21061a9cb674662a466d5b0fb5) ok to put into tree? Boqun: I'd not put it in the kernel and create a dedicate crate for this instead, and make it depend on pinned-init. - what about doctests, would it make more sense to test them as a normal rust userspace library? - I have some examples with `Arc`, what can I do about that? Boqun: (general question) I like the overall idea, but am curious about the licensing issue, say someone contributes code in the in-kernel version (which is GPL licensed), can they claim the changes are GPL-only, i.e. you cannot sync it to the userspace crate? ## Miscellaneous <!-- stuff that does not fit into other categories -->