On 25/08/13 20:16, Jan Stolarek wrote:
We really want people to use the new primops, not the wrappers
We do? Could you justify why we want to people to use primops?

What I meant was, if people are already using primops we want them to use the new ones instead.

> Wrappers are equivalent to previous
implementation of primops: previously we had call to tagToEnum# generated 
implicitly by the code
generator, whereas now we have an explicit call to tagToEnum# in the source 
code of the wrappers.

Previously the tagToEnum# was optimised away in the code generator in the common cases. Perhaps the Simplifier will do that for the wrappers now, I don't know. But if people are using primops, they are probably deliberately writing low-level code and they don't want to be relying on optimisations that might not happen.

I don't see a reason why we might want to break people's code, except for maybe 
making them aware
that there was some change in primops implementation. I think that from the 
beginning new primops
were meant to be used in branchless algorithms - most people don't need that.

The new primops are what we should have used in the first place :-) They map more closely to the machine operations, and thus expose more detail to the compiler for optimisation. I've wanted to make this change for 15 years!

I don't mind breaking these very low-level APIs. We could always provide a GHC.Prim.Compat for people who want to defer updating their code, we've done that kind of thing in the past (e.g. the Control.Exception migration).

Cheers,
        Simon


_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to