<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">After keeping up with this thread, the reddit thread, and a Twitter thread, I started to write a GHC proposal to remove Safe Haskell. However, a conversation with Krzysztof Gogolewski (aka monoidal) and a post on reddit made me change my mind: we need to renovate Safe Haskell, not remove it. And doing so only really makes sense in the context of a larger security overhaul.<div class=""><br class=""></div><div class="">We are as a loose encampment in an open field with a few night sentries. Safe Haskell is a slightly-crumbling earthen rampart along two sides of the encampment. As such, it's really just an obstacle, and does little (but not nothing) to protect us. I was thinking to clear away the obstacle. But of course the better solution is to reinforce the rampart, build two more sides of it, and create a proper defensive position. This will be hard, and I do not propose to take charge of such an act now. But I recognize that the existing structure naturally forms part of this greater whole.</div><div class=""><br class=""></div><div class="">See also <a href="https://www.reddit.com/r/haskell/comments/msa3oq/safe_haskell/gv8vph9/" class="">https://www.reddit.com/r/haskell/comments/msa3oq/safe_haskell/gv8vph9/</a>, where I make similar, if not as evocative, comments.</div><div class=""><br class=""></div><div class="">Thanks much for the input here!</div><div class="">Richard</div><div class=""><div class=""><div class=""><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 20, 2021, at 9:19 AM, Bertram Felgenhauer via Haskell-Cafe <<a href="mailto:haskell-cafe@haskell.org" class="">haskell-cafe@haskell.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Bertram Felgenhauer via Haskell-Cafe wrote:<br class=""><blockquote type="cite" class="">Unless the use case for which SafeHaskell was designed is common<br class="">(and the replies here indicate that it's not), this is hard to<br class="">justify.<br class=""></blockquote><br class="">The feedback here is not wholly representative.<br class=""><br class="">There's a reddit thread [1] where djdlc points out<br class=""><br class="">  <a href="https://uniprocess.org/effects.html" class="">https://uniprocess.org/effects.html</a><br class=""><br class="">This is interesting because it demonstrates that the notion of safety<br class="">can be *refined* from its use by the `base` library in the context of<br class="">DSLs, because one can express which notion of safety applies through<br class="">types, and confine the code that is ultimately executed through the<br class="">type system.<br class=""><br class="">Obviously this will still break down when the type system is subverted<br class="">as in<br class=""><br class="">  <a href="https://gitlab.haskell.org/ghc/ghc/-/issues/9562" class="">https://gitlab.haskell.org/ghc/ghc/-/issues/9562</a><br class=""><br class="">which Richard pointed out, or<br class=""><br class="">  <a href="https://gitlab.haskell.org/ghc/ghc/-/issues/19287" class="">https://gitlab.haskell.org/ghc/ghc/-/issues/19287</a><br class=""><br class="">which wz1000 demonstrated on IRC. But these are terrible bugs anyway;<br class="">it's just that SafeHaskell boosts their implact from code that people<br class="">shouldn't write to a potential security issue. Is anybody maintaining<br class="">a list of these type system unsoundness issues?<br class=""><br class="">Apparently some people also enjoy the extra code discipline that<br class="">producing Safe code requires (link by gentauro (=djdlc) on Freenode):<br class=""><br class="">  <a href="http://blog.stermon.com/articles/2019/02/21/the-main-reason-i-use-safe-haskell-is-restriction.html" class="">http://blog.stermon.com/articles/2019/02/21/the-main-reason-i-use-safe-haskell-is-restriction.html</a><br class=""><br class="">Cheers,<br class=""><br class="">Bertram<br class=""><br class=""><br class="">[1] <a href="https://reddit.com/r/haskell/comments/msa3oq/safe_haskell/" class="">https://reddit.com/r/haskell/comments/msa3oq/safe_haskell/</a><br class=""> or <a href="https://teddit.net/r/haskell/comments/msa3oq/safe_haskell/" class="">https://teddit.net/r/haskell/comments/msa3oq/safe_haskell/</a><br class="">_______________________________________________<br class="">Haskell-Cafe mailing list<br class="">To (un)subscribe, modify options or view archives go to:<br class=""><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br class="">Only members subscribed via the mailman list are allowed to post.</div></div></blockquote></div><br class=""></div></div></div></div></body></html>