
#13615: Nondeterminism in ‘pure’ function w/ parallel evaluation & memo combinators -------------------------------------+------------------------------------- Reporter: pacak | Owner: bgamari Type: bug | Status: new Priority: highest | Milestone: 8.2.1 Component: Compiler | Version: 7.10.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect result | Unknown/Multiple at runtime | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by pacak): {{{ runST = unsafeDupablePerformIO -- more or less }}}
`unsafeDupablePerformIO`: This version of `unsafePerformIO` is more efficient because it omits the check that the IO is only being performed by a single thread.
Basically "not to be used in multiple threads, we really mean it, look at the name"
`par`: Indicates that it may be beneficial to evaluate the first argument in parallel with the second.
Basically "do things in multiple threads". The problem is `unsafeDupablePerformIO` is hidden in a bunch of different places. HashMaps, ByteStrings, etc... `par` is less frequent but not used directly either but it's also out there. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13615#comment:42 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler