BIFs and primitive operations should be separated whether they are concurrent or sequential. eval and primop_eval should only define the semantics of sequential BIFs/primitive operations, then they cannot be used (wrongly) in the concurrent semantics.