# Hacking Day project ideas ## Resources * https://github.com/tarides/compiler-hacking/wiki/Cloning-and-building-OCaml ## Task 1 **Difficulty:** ⭐⭐⭐⭐ * https://github.com/ocaml-multicore/kcas/issues/31 ### References * https://tarides.com/blog/2023-08-07-kcas-building-a-lock-free-stm-for-ocaml-1-2/ * https://tarides.com/blog/2023-08-10-kcas-building-a-lock-free-stm-for-ocaml-2-2/ ## Task 2 **Difficulty:** ⭐⭐⭐ https://github.com/pitag-ha/slack_bot/blob/main/TODO.md ### References ## Task 3 **Difficulty:** ⭐⭐ https://github.com/tarides/runtime_events_tools Add information about gc-stats to `--help command` ### References This information is present in the README. Will be good to have this the help command. ## Task 4 **Difficulty:** ⭐⭐ Write a section in the README of https://github.com/tarides/runtime_events_tools to explain how to use Custom events. ### References https://github.com/ocaml/ocaml/pull/12335 ## Task 5 **Difficulty:** ⭐⭐⭐⭐ Plot CDF grpah for GC latencies using notty: https://github.com/pqwy/notty. ## Task 6 **Difficulty:** ⭐⭐⭐⭐⭐ Make an Eio version of the Async examples in Real World OCaml ### References * https://github.com/dkim/rwo-lwt * https://dev.realworldocaml.org/concurrent-programming.html ## Task 7 **Difficulty:** ⭐⭐⭐ Running tsan * Saturn test-suite: * cohttp-eio * https://github.com/aantron/dream/pull/254 * https://github.com/ocaml-multicore/domainslib/tree/main/test ### References * https://tarides.com/blog/2023-07-07-making-ocaml-5-succeed-for-developers-and-organisations/#thread-sanitizer ## Task 8 **Difficulty:** ⭐ **Various Documentation Updates** * https://github.com/ocaml-multicore/effects-examples update the build status in the README to show GitHub Actions status. ## Task 9 **Difficulty:** ⭐⭐⭐⭐⭐ Add a Eio version of https://github.com/jamesward/easyracer ## Task 10 **Difficulty:** ⭐⭐⭐⭐ Stress Tests for Eio: https://github.com/ocaml-multicore/eio/issues/450 Benchmark for Eio backend of Piaf: https://github.com/anmonteiro/piaf ## Task 11 **Difficulty:** ⭐⭐⭐⭐ https://github.com/ocaml/ocaml/issues/12584 The runtime machinery gets closed before it emits closing events for `STW_LEADER` and `DOMAIN_CONDITION_WAIT`. It could be possible to just emit the closing event for `STW_LEADER` within runtime events destroy function. ## Task 12 **Difficulty:** ⭐⭐⭐⭐⭐ Duckworth Lewis Stern calculator with Owl ## Task 13 **Difficulty:** ⭐⭐⭐⭐ Writing a tool to determine space-time overhead fitting the scatter plot and find the setting for the best performance. ### References * https://blog.janestreet.com/memory-allocator-showdown/ * olly - https://github.com/tarides/runtime_events_tools ## Task 14 **Difficulty:** ⭐⭐ wasm_of_ocaml * Try to run the ocaml.org playground with wasm_of_ocaml. It currently uses `js_of_ocaml`. Ref: https://github.com/ocaml-wasm/wasm_of_ocaml. c.f. https://github.com/ocaml/ocaml.org/tree/main/playground * Create more examples the run on the browser -- https://github.com/ocaml-wasm/wasm_of_ocaml#usage * Add any missing bindings -- https://github.com/ocaml-wasm/wasm_of_ocaml/issues/5 ## Task 15 **Difficulty:** ⭐ * Update the installation instructions in the README https://github.com/ocaml-multicore/effects-examples#running-the-examples to install with opam. * Update https://github.com/ocaml-multicore/domainslib#installation to install from opam, and OCaml 5.1. ## Task 16 **Difficulty:** ⭐⭐⭐⭐⭐ Write a LOGO intermediate language in OCaml using notty. ## Task 17 **Difficulty:** ⭐⭐ Test and document different versions of docker-compose that work with current-bench setup. Ref: https://github.com/ocurrent/current-bench/issues/369 ## Task 18 **Difficulty:** ⭐⭐⭐ Create a proof-of-concept implementation of a Jupyter notebook to fetch data from the benchmarking backend. Ref: https://github.com/ocurrent/current-bench/issues/66 ## Task 19 **Difficulty:** ⭐⭐⭐ Support using a worker's name instead of a long Docker image name. Ref: https://github.com/ocurrent/current-bench/issues/355 ## Task 20 **Difficulty:** ⭐⭐⭐⭐ Test run Sandmark with run_all_serial.sh on Fedora. Ref: https://github.com/ocaml-bench/sandmark/issues/338 ## Task 21 **Difficulty:** ⭐⭐⭐⭐ Build js_of_ocaml with Sandmark. Ref: https://github.com/ocaml-bench/sandmark/pull/352 ## Task 22 **Difficulty:** ⭐⭐⭐⭐⭐ Add owl benchmark to Sandmark. Ref: https://github.com/ocaml-bench/sandmark/issues/331 ## Task 23 **Difficulty:** ⭐⭐⭐⭐⭐ Show diff output between expected and installed dependencies in Sandmark runs. Ref: https://github.com/ocaml-bench/sandmark/issues/327 ## Task 24 **Difficulty:** ⭐⭐⭐⭐ Add more parallel benchmarks to Sandmark. Ref: https://github.com/ocaml-bench/sandmark/issues/90 ## Task 25 **Difficulty:** ⭐⭐⭐⭐ Check frama-c benchmark build failure on Multicore OCaml. Ref: https://github.com/ocaml-bench/sandmark/issues/17 ## Task 26 **Difficulty:** ⭐⭐⭐⭐ Port Comparison-Programming-Languages-Economics benchmark to OCaml. Ref: https://github.com/ocaml-bench/sandmark/issues/326 ## Task 27 **Difficulty:** ⭐⭐⭐ Evaluate merging multiple parallel run_config.json files. Ref: https://github.com/ocaml-bench/sandmark/issues/285 ## Task 28 **Difficulty:** ⭐⭐⭐ Renaming suggestions for run_config.json files. Ref: https://github.com/ocaml-bench/sandmark/issues/302 ## Task 29 **Difficulty:** ⭐⭐⭐ Produce memtrace output from Sandmark benchmark runs. Ref: https://github.com/ocaml-bench/sandmark/issues/361 ## Task 30 **Difficulty:** ⭐⭐⭐ Add processor topology/affinity/pinning output from ocaml-processor in Sandmark benchmark results. Ref: https://github.com/ocaml-bench/sandmark/issues/373 ## Task 31 **Difficulty:** ⭐⭐⭐⭐ Add support to pass configure options when building Sandmark benchmarks. Ref: https://github.com/ocaml-bench/sandmark/issues/375 ## Task 32 **Difficulty:** ⭐⭐⭐ Add perf energy metrics to Sandmark bench results. Ref: https://github.com/ocaml-bench/sandmark/issues/378 ## Task 32 **Difficulty:** ⭐⭐⭐ Integrate `variorum` for power and performance monitoring capabilities to Sandmark benchmarking. Ref: https://github.com/ocaml-bench/sandmark/issues/380 ## Task 33 **Difficulty:** ⭐⭐⭐ Report hardware resources in parallel architectures using hwloc. Ref: https://github.com/ocaml-bench/sandmark/issues/381 ## Task 34 **Difficulty:** ⭐⭐⭐⭐ Add frama-c open source case study benchmarks to Sandmark. Ref: https://github.com/ocaml-bench/sandmark/issues/416 ## Task 35 **Difficulty:** ⭐ https://github.com/ocaml/ocaml/issues/12676 Tag `Domain.self` as `[noalloc]`. ## Task 36 **Difficulty:** ⭐⭐⭐⭐ https://github.com/ocaml/ocaml/issues/12363 ## Task 37 **Difficulty:** ⭐⭐⭐⭐ https://github.com/ocaml/ocaml/issues/11770