3 ms·
I really like what this library does, but I'm troubled by the author's blatantly incorrect use of unsafePerformIO. Correct functionality depends on specific us
by chowells 4y ago
I really like what this library does, but I'm troubled by the author's blatantly incorrect use of unsafePerformIO.
Correct functionality depends on specific use patterns, rather than allowing the type system to guarantee it. When the issues were reported, the author made several incorrect claims about the safety. When the claims were demonstrated to be incorrect, the author replied that you just shouldn't do the things that break it.
The whole thing left a pretty bitter taste in my mouth. The library can be used to do cool things, but it subverts the type system unnecessarily and blames the user when it goes wrong.
- lilyball 4y agoIs this the discussion you're referring to? https://github.com/reanimate/reanimate/discussions/210 https://github.com/reanimate/reanimate/discussions/210 It's actually pretty interesting to read. The author makes a not totally unreasonable argument as for why it uses unsafePerformIO. Now what I'm really curious about is why the very first example on the site I clicked into the source code for, a simple 59-line example, is using unsafePerformIO. That actually worries me more because it suggests that as a user I might have to use unsafePerformIO. https://github.com/reanimate/reanimate/blob/d4d3898831edb4aa2182701fd83452cd991cdd54/reanimate-examples/tut_glue_physics.hs https://github.com/reanimate/reanimate/blob/d4d3898831edb4aa...
- secdeal 4y ago> Now what I'm really curious about is why [...] a simple 59-line example, is using unsafePerformIO It seems to me that they are using the physics engine Chipmunk2D for that Animation which has bindings with IO in their signature.
- lilyball 4y agoThe Reanimate site says that it ships with Chipmunk2D, and the example I linked shows both import Chiphunk.Low import Reanimate.Chiphunk However I can't find any reference to Reanimate.Chiphunk anywhere, and if I search the repo for "chiphunk" I just see this example file, the readme, and a couple of YAML files. So I am very confused now.