ForeignPtrContents has a new nullary data constructor FinalPtr. FinalPtr is intended for turning a primitive string literal into a ForeignPtr. Unlike PlainForeignPtr, FinalPtr does not have a finalizer. Replacing PlainForeignPtr that has NoFinalizers with FinalPtr reduces allocations, reduces the size of compiled binaries, and unlocks important Core-to-Core optimizations. FinalPtr will be used in an upcoming bytestring release to improve the performance of ByteString literals created with OverloadedStrings.