Top all-time · #1741
KC Sivaramakrishnan
Personal blog · kcsrk.info · on HN as kcsrkprogrammingsystems
KC Sivaramakrishnan's personal blog at kcsrk.info covers programming and systems. Since 2015, 44 different Hacker News readers have linked it 80 times, most often “Effective Concurrency with Algebraic Effects (OCaml Multicore)”. It is still writing: the last post was on 2026-09-26, and you can follow it by feed.
Most-linked posts?
- Effective Concurrency with Algebraic Effects (OCaml Multicore)7 people · 10 mentions · first linked 2015-05-21
- Bounding Data Races in Space and Time [pdf]6 people · 7 mentions · first linked 2021-05-13
- OCaml 5.0 (prerelease) Manual: Effect handlers4 people · 5 mentions · first linked 2022-06-15
- Retrofitting Effect Handlers onto OCaml [pdf]3 people · 3 mentions · first linked 2021-02-26
- Lock-free programming for the masses3 people · 3 mentions · first linked 2016-06-13
- An O(x)Caml book that runs3 people · 3 mentions · first linked 2026-06-13
- State of Multicore OCaml [pdf]3 people · 3 mentions · first linked 2018-06-28
- Capsules: Compile-time lock discipline in OxCaml2 people · 2 mentions · first linked 2026-05-08
- Effective Concurrency with Algebraic Effects in Multicore OCaml2 people · 2 mentions · first linked 2020-07-05
- Uniqueness for Behavioural Types2 people · 2 mentions · first linked 2025-05-30
What Hacker News says?
There is the small standard library that ships with the compiler. And then there are more extensive ones such as Batteries and Core. It is easy to generate docs in Reason syntax from OCaml projects using `redoc` tool. Here is Reason docs for: - OCaml compiler's stdlib: http://kcsrk.info/reason_stdlib_docs/index.html - Batteries: http://kcsrk.info/reason_batteries_docs/index.html
Comment linking /reason_batteries_docs/index.html
on “Reason: A new interface to OCaml”Submitted OCaml on Baremetal Shakti RISC-V Processor as a story · 233 points
HN discussionMulticore OCaml works using a thread-safe generational garbage collector. Each domain (i.e. thread) gets its own minor heap, and the major heap is shared. Each heap is GCd independently. The domain-level minor heaps are restricted so different domains can't write to each other's minor heap. And the shared major heap is protected with more bookkeeping. More details in https://kcsrk.info/multicore/gc/2017/07/06/multic…
Comment linking /multicore/gc/2017/07/06/multicore-ocaml-gc/
on “PR to Merge Multicore OCaml”Submitted Lock-free programming for the masses as a story · 188 points
HN discussionIndeed, Irmin is a library to implement data stores which can be freely cloned, updated and merged along a model similar to git. It separates the content from the actual store. So it can run as well on a file-system, on a git repository, in memory or in the browser (See for instance https://github.com/talex5/irmin-js ). As git, Irmin uses 3-way merge but applied to arbitrary values and not only files. As described h…
Comment linking /papers/oopsla19-mrdt.pdf
on “The database I wish I had”Submitted A deep dive into Multicore OCaml garbage collector as a story · 166 points
HN discussionGood question! https://github.com/ocaml-multicore/effects-examples has links to tutorials and examples for how effects can be used. There's also some slides from KC's talk on effect handlers https://kcsrk.info/slides/handlers_edinburgh.pdf and materials from the CUFP 17 tutorial: https://github.com/ocamllabs/ocaml-effects-tutorial https://gopiandcode.uk/logs/log-bye-bye-monads-algebraic-eff... this is also a great i…
Comment linking /slides/handlers_edinburgh.pdf
on “OCaml Multicore merged upstream”Submitted State of Multicore OCaml [pdf] as a story · 160 points
HN discussion> In Rust it's not even possible to write such code. What does "such code" mean though? Rust won't let you say that your mutable variables are just shared between threads, because that's unsafe. But if you say OK, I want atomic data types (and so they lack tearing and other things you were bothered about) then you can clone an Arc of them, and write code to manipulate the atomics whose consequences are just as under…
Comment linking /papers/pldi18-memory.pdf
on “The memory models that underlie programming languages (2016)”Submitted Evolving the OCaml Programming Language (2025) [pdf] as a story · 159 points
HN discussionPosted a week ago: http://kcsrk.info/slides/mcocaml_gallium.pdf Discussion: https://news.ycombinator.com/item?id=17416797 In short, expect it merged in mid-to-late 2019, maybe.
Comment linking /slides/mcocaml_gallium.pdf
on “Unix system programming in OCaml (2014)”Submitted Effective Concurrency with Algebraic Effects in Multicore OCaml as a story · 148 points
HN discussionParallelism [1] and native-support for concurrency through effect handlers [2]. [1] https://kcsrk.info/webman/manual/parallelism.html [2] https://kcsrk.info/webman/manual/effects.html
Comment linking /webman/manual/effects.html
on “OCaml 5.0 Alpha Release”Submitted A mechanically verified garbage collector for OCaml [pdf] as a story · 40 points
HN discussionI would also recommend reading the effect handlers tutorial in OCaml 5.0 manual: https://kcsrk.info/webman/manual/effects.html .
Comment linking /webman/manual/effects.html
on “OCaml 5.0 Alpha Release”Submitted Featherweight Threads for Communication in SML (2001) [pdf] as a story · 16 points
HN discussionNot necessarily. You can implement them using a monad. See https://dl.acm.org/doi/10.1145/2804302.2804319 . That said, in GHC Haskell the implementation on top of stack switching seems to outperform other implementation strategies. See https://github.com/ghc-proposals/ghc-proposals/blob/master/p... . In OCaml 5, we’ve made it quite fast: https://kcsrk.info/papers/drafts/retro-concurrency.pdf . For us, the goal is to…
Comment linking /papers/drafts/retro-concurrency.pdf
on “Control structures in programming languages: from goto to algebraic effects”Submitted Lock-free programming for the masses as a story · 8 points
HN discussionOCaml has GIL, is normally single core, and shares no state, so current OCaml doesn't need to provide such guarantees. Upcoming multicore OCaml will provide such guarantees through algebraic effects [0]. 0. http://kcsrk.info/ocaml/multicore/2015/05/20/effects-multico...
Comment linking /ocaml/multicore/2015/05/20/effects-multicore/
on “The struggle with Rust”Submitted Retrofitting Effect Handlers onto OCaml [pdf] as a story · 6 points
HN discussionCurrent OCaml needn't worry about data races since no state is shared. Unfortunately, current OCaml also only exploits a single core, but it's so insanely fast that usually doesn't matter. Upcoming OCaml multicore solves the shared state and data races problem with algebraic effects[0]. It is working, it's just not yet been released in mainline OCaml. Supposedly, that will happen this year, but we'll see. 0. http://…
Comment linking /ocaml/multicore/2015/05/20/effects-multicore/
on “The struggle with Rust”Submitted Effective Concurrency with Algebraic Effects (OCaml Multicore) as a story · 6 points
HN discussionThe canonical way to do concurrency these days is with a monadic library like Lwt or Async, which is a mechanism akin to promises/deferreds. They have their own implementations of channels/events/streams/what-call-you-it. There is some interesting work being done on an effects system [1] which would be another option for type-safe concurrency, hopefully it will land soon alongside the multicore work. There is also t…
Comment linking /ocaml/multicore/2015/05/20/effects-multicore/
on “Python to OCaml: Retrospective”Submitted Foundations for Hacking on OCaml as a story · 5 points
HN discussionIf you'd like to see the approach we're taking at OCaml Labs in order to build multicore, read KC's blog post here: http://kcsrk.info/ocaml/multicore/2015/05/20/effects-multico... The core idea is incredibly exciting (to us, anyway). Rather than baking in a specific multicore scheduler, we're allowing pluggable schedulers written in OCaml. They use algebraic effects to allow an independent scheduler to compose concu…
Comment linking /ocaml/multicore/2015/05/20/effects-multicore/
on “OCaml 4.03 will, “if all goes well”, support multicore”Submitted Linearity and Uniqueness as a story · 5 points
HN discussion> Not sure how that's the same as "doesn't see a reason to solve data races". I see lots of reasons. I just think it is possible to achieve the security goals without it. If Carbon doesn't prevent data races, then how exactly will it achieve memory safety? Will it implement something like OCaml's "Bounding Data Races in Space and Time"? [0] If we ignore compiler optimizations, the problem with data races is that it…
Comment linking /papers/pldi18-memory.pdf
on “Circle C++ with memory safety”Submitted An O(x)Caml book that runs as a story · 4 points
HN discussionMulticore is coming along, you can read the latest news here: https://discuss.ocaml.org/t/multicore-ocaml-june-2021/8134 In terms of performance, there is this paper https://kcsrk.info/papers/system_effects_feb_18.pdf where on a single core async OCaml and effect OCaml are close to Go's net/http, and there is also this project https://github.com/ocaml-multicore/retro-httpaf-bench but I haven't see any results from i…
Comment linking /papers/system_effects_feb_18.pdf
on “Functional Programming in OCaml”Submitted Textbooks That Run as a story · 3 points
HN discussion