# 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