The delete/free bits never made it in, but some related stuff definitely has made its way into the standard library and compiler over time. Span<T> and Memory<T> provide a bunch of affordances for safely mixing GC and non-GC pointers in the same workflow. Big chunks of the BCL can operate on strings and data at any address in memory now, which is really helpful for high-throughput parsing and streaming.
Affordance means that the interface of something indicates clearly how it's supposed to be used and for what purpose. This is broader term and it applies to physical stuff like door handles or knife grips too. It's intuitive enough which is probably why previous poster was confused about your question.
Is there even a way to allow for manual memory management (not just invoking the GC) in a manner that would still be safe that won’t defeat the purpose of a managed language?