<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Retrofitting Effect Handlers onto OCaml · HackerPapers discussions</title><link>https://hackerpaper.kaipfister.de/p/2104.00250/</link><description>Collected HN comments and submissions linking this paper.</description><language>en</language><lastBuildDate>Mon, 02 Nov 2026 11:16:22 GMT</lastBuildDate><atom:link href="https://hackerpaper.kaipfister.de/p/2104.00250/feed.xml" rel="self" type="application/rss+xml" /><item><title>Retrofitting Effect Handlers onto OCaml — mentioned by grumpyprole</title><link>https://news.ycombinator.com/item?id=35368807</link><guid isPermaLink="false">urn:hackerpapers:mention:2104.00250:35368807</guid><pubDate>Thu, 30 Mar 2023 06:23:15 GMT</pubDate><description>&lt;p&gt;&amp;gt; Do you have any good resources on OCaml5 effect handlers I can follow? I encourage you to have a look at the published paper, it&amp;#x27;s an easy read and covers the motivation and examples: https://arxiv.org/abs/2104.00250 Here&amp;#x27;s an excellent talk that walks through modifying a non-trivial code base for concurrency using effect handlers: https://youtu.be/k3oQwpyXmpo &amp;gt; It does feel to me like error&amp;#x27;s and async&amp;#x27;s both should remain orthogonal They aren&amp;#x27;t completely orthogonal though, as both are effects. Haskell and Rust model both with Monads. OCaml 5 can model both with effect handlers. It is…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — mentioned by sadiq</title><link>https://news.ycombinator.com/item?id=34021574</link><guid isPermaLink="false">urn:hackerpapers:mention:2104.00250:34021574</guid><pubDate>Fri, 16 Dec 2022 22:37:28 GMT</pubDate><description>&lt;p&gt;We certainly hope so. You may find Thomas Leonard&amp;#x27;s talk from last year&amp;#x27;s workshop interesting: https://watch.ocaml.org/videos/watch/74ece0a8-380f-4e2a-bef5... The paper we wrote on retrofitting effect handlers: https://arxiv.org/abs/2104.00250 also has some http benchmarks&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — mentioned by wahern</title><link>https://news.ycombinator.com/item?id=31929610</link><guid isPermaLink="false">urn:hackerpapers:mention:2104.00250:31929610</guid><pubDate>Thu, 30 Jun 2022 07:23:09 GMT</pubDate><description>&lt;p&gt;Non-contiguous stacks are typically just linked-lists of call frames, or groups or call frames. One of the examples that used to be regularly trotted out comp.lang.c 15+ years ago was an IBM mainframe environments, where stacks were linked lists but still managed by hardware. Off the top of my head, current examples of non-contiguous stacks on more familiar system with supporting code compiled directly to machine code (i.e. not language interpreters and VMs, where this is actually very common), include 1) gccgo, which compiles Go code to use split stacks. 2) gcc with -fsplit-stacks, which…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — HN submission</title><link>https://news.ycombinator.com/item?id=31326360</link><guid isPermaLink="false">urn:hackerpapers:submission:2104.00250:31326360</guid><pubDate>Tue, 10 May 2022 12:41:54 GMT</pubDate><description>&lt;p&gt;Retrofitting Effect Handlers onto OCaml&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1 point; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — mentioned by sadiq</title><link>https://news.ycombinator.com/item?id=29876899</link><guid isPermaLink="false">urn:hackerpapers:mention:2104.00250:29876899</guid><pubDate>Mon, 10 Jan 2022 16:06:27 GMT</pubDate><description>&lt;p&gt;It involved a fair amount of research and there were many technical challenges. Maintaining backwards compatibility in terms of language features and single-threaded performance puts constraints around what you can implement. Also from my personal experience, debugging segfaults in parallel programs that could be caused by GC bugs is a painstaking process. We&amp;#x27;ve written a couple of papers detailing the internals and the trade-offs involved: https://arxiv.org/abs/2004.11663 (for parallelism) and https://arxiv.org/abs/2104.00250 (for effects) Added to that is the complexity of tracking a moving…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — HN submission</title><link>https://news.ycombinator.com/item?id=29482055</link><guid isPermaLink="false">urn:hackerpapers:submission:2104.00250:29482055</guid><pubDate>Wed, 08 Dec 2021 07:18:37 GMT</pubDate><description>&lt;p&gt;Retrofitting Effect Handlers onto OCaml&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;2 points; 0 discussion replies on HN. &lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and source history&lt;/a&gt;. A submission is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — mentioned by kcsrk</title><link>https://news.ycombinator.com/item?id=27150507</link><guid isPermaLink="false">urn:hackerpapers:mention:2104.00250:27150507</guid><pubDate>Fri, 14 May 2021 03:53:20 GMT</pubDate><description>&lt;p&gt;Abandoned is perhaps too strong a term :-). Effect handlers in the language are supported by fibers, lightweight stacklets managed by the runtime. The details of the implementation can be found in the upcoming research paper in PLDI&amp;#x27;21 conference [1]. The effect handlers in Multicore OCaml today do not provide effect safety. Programs are not statically guaranteed to handle all the effects they may perform. This is only as bad as exceptions in OCaml and every other mainstream language with exceptions. We are working on developing an effect system, which will ensure effect safety i.e, the…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — mentioned by sadiq</title><link>https://news.ycombinator.com/item?id=27142711</link><guid isPermaLink="false">urn:hackerpapers:mention:2104.00250:27142711</guid><pubDate>Thu, 13 May 2021 14:50:40 GMT</pubDate><description>&lt;p&gt;Good questions! 1) As I mentioned in https://news.ycombinator.com/item?id=27142502 there is support for parallelism and concurrency. Giving an example of where these might be useful in a webservice. The addition of shared-memory parallelism is beneficial where you might have a great deal of shared state that needs to be used to service requests. An in-memory cache is a good example - with a processed-based approach managing read/writes and avoiding significant overhead from marshalling the data is difficult. Concurrency via effects at a minimum can make writing network-based services much…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Retrofitting Effect Handlers onto OCaml — mentioned by sadiq</title><link>https://news.ycombinator.com/item?id=27142502</link><guid isPermaLink="false">urn:hackerpapers:mention:2104.00250:27142502</guid><pubDate>Thu, 13 May 2021 14:33:00 GMT</pubDate><description>&lt;p&gt;Not dumb questions at all. Multicore adds parallelism via Domains (which are essentially heavyweight threads) and concurrency via Effects and fibers. There&amp;#x27;s a multicore GC that supports both of those. We plan to upstream things in two parts. First domains-only parallelism and then effects as a follow-up. When the latter lands users will be able to define their own effects and handlers, yes. Performance is pretty good, you can see our PLDI2021 paper for a proper performance evaluation and loads more details: https://arxiv.org/abs/2104.00250&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/2104.00250/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item></channel></rss>
