For example in Squeak, we can rewrite atEnd like this:
StandardFileStream>>atEnd "Answer whether the receiver is at its end. " collection ifNotNil: [ position < readLimit ifTrue: [ ^false ] ]. self basicNext ifNil: [ ^true ]. self skip: -1. ^false
then entirely remove `primAtEnd:` which has no more sender. I presume it should be more or less equivalent in Pharo. Then tell about limitation and deprecation in `primitiveFileAtEnd` comment.