OCaml good first issues

49 open OCaml issues currently match the default 10+ star filter. Scored difficulty: 5,943 at 1/5, 8,722 at 2/5, 12,675 at 3/5, 12,093 at 4/5, 856 at 5/5. This hub uses the same feed as the homepage, limited to repositories whose GitHub language is OCaml.

All languages · Browse projects · How to find good first issues · Hacktoberfest 2026

Active projects

Unique repos with open help-wanted issues updated in the last 30 days

Showing 30 of ~49 matching filters (OCaml · 10+ stars)

List
fram-lang/dbl

Use affine effects in the standard library

AI summary

This issue proposes updating standard library interfaces, such as `Mutable`, to leverage the newly supported affine effects. The goal is to integrate this feature into existing library components for better resource management or other benefits provided by affine effects.

good first issuestdlib
45
Difficulty
3/5

Atomic operations support

AI summary

This issue proposes enhancing the analyzer's support for atomic operations in C. It aims to correctly handle GCC __sync builtins and C11 atomics by preventing false race warnings, performing operations on values rather than invalidating them, and treating certain statements on atomic variables as inherently atomic.

featurestudent-jobsv-compprecisionbenchmarkingc11
249
Difficulty
4/5

Update pedantic mode to use structured diagnostics

AI summary

This issue proposes updating the pedantic mode in the stanc3 compiler to utilize structured diagnostics. The goal is to manage these diagnostics within a dedicated type inside Pedantic_analysis, rather than accumulating them in the Warnings.t structure. This is a cleanup task aimed at improving code organization and maintainability.

help wantedcleanup
160
Difficulty
3/5

Have a different `symN__` generator per optimization pass

AI summary

This issue proposes to improve the clarity of symbol generation in optimization passes. Currently, all passes share a single symbol generator, leading to undifferentiated `symN__` names that obscure the origin of changes. The proposed solution is to create a distinct symbol generator for each optimization pass, incorporating the pass name into the generated symbols (e.g., `sym{PASS_NAME}N__`) to make debugging and code review more manageable.

good first issuecleanupoptimization
160
Difficulty
2/5

Remove duplicate `ctx`-derived arguments in base analysis

AI summary

This issue proposes a significant refactoring of the base analysis code to eliminate redundant arguments. Instead of passing `ctx`, `Analyses.ask_of_ctx ctx`, `gs`, and `st` separately, the goal is to access all necessary information directly from the `ctx` argument, simplifying function signatures and reducing code duplication.

cleanupgood first issue
249
Difficulty
3/5

WASM support

AI summary

The user is inquiring about the feasibility of exporting raylib-ocaml games to WebAssembly (WASM). This suggests a need to explore the compatibility and potential modifications required for WASM compilation of OCaml code that uses the raylib bindings.

help wanted
262
Difficulty
3/5

Compilation errors are not captured

AI summary

This issue proposes an enhancement to capture and display OCaml compiler errors from stderr instead of just the exit code. The goal is to parse these errors and convert them into a more user-friendly Rocq error format.

enhancementgood first issue
20
Difficulty
3/5

Named evars are not correctly printed by `Camltac Eval`

AI summary

The `Camltac Eval` command in CamlTac is not correctly displaying named existential variables (evars) in its output. Instead of showing the original name of the evar, it's printing a generic placeholder like '?X2', which hinders readability and debugging.

buggood first issue
20
Difficulty
2/5

Introduce tests for runtime library

AI summary

This issue proposes adding unit tests for pure functions within the runtime library. These functions are responsible for core runtime behavior but currently lack test coverage, as indicated by a TODO comment in the code.

good first issuetestsruntime
25
Difficulty
2/5

Module name generation is prone to name clashes

AI summary

The current method for generating temporary filenames using `Filename.temp_file` is not robust and can lead to name clashes, especially between different plugins. The issue proposes implementing a solution for generating globally unique filenames to make name clashes highly improbable.

buggood first issue
20
Difficulty
3/5

Peephole optimization for commonly paired functions

AI summary

This issue proposes a performance optimization by detecting and replacing sequential calls to related Stan math functions with their combined, more efficient counterparts. The goal is to eliminate redundant computations when functions like `qr_Q` and `qr_R` are called consecutively, by instead using the single `qr` function. A warning mechanism is also suggested for models that continue to use the older, separate function calls.

help wantedfeatureperformanceoptimization
160
Difficulty
3/5

[FEATURE REQUEST] Allow to pass flags to Binaryen

AI summary

This feature request aims to allow users to pass specific flags to the Binaryen toolchain, which is used in the Wasm compilation process. Currently, enabling features like 'multimemory' requires manual intervention in Binaryen, and this proposal suggests a more integrated way to pass such flags through the compiler.

enhancementGood first issuewasm
1.1K
Difficulty
2/5
ocaml/dune

Named targets

AI summary

The user is requesting the ability to define named targets in the build system, similar to how named dependencies are already supported. They also suggest a variable that could expand to the first target, drawing a parallel to Makefile functionality.

enhancementgood first issue
1.9K
Difficulty
3/5
ocaml/dune

dune fmt should be able to format single files

AI summary

This issue proposes enhancing the `dune fmt` command to allow formatting of individual files specified on the command line. This would require a more robust implementation than the current alias, enabling formatting of files that can be changed and handling unformattable files with an option to control behavior. This change would also facilitate future features like selective formatting based on version control status.

good first issue
1.9K
Difficulty
3/5
ocaml/dune

Incorrect value when installing a relocatable binary with dune-site

AI summary

This issue describes a problem with `dune-site` where installing a relocatable binary results in an incorrect path being reported for libraries. The user provides clear reproduction steps that demonstrate the issue when building and installing a project using `dune` and `dune-site` with the `--relocatable` flag.

good first issuebuilddune-site-plugin
1.9K
Difficulty
3/5
ocaml/ocaml

Cannot easily change warnings in type declaration

AI summary

The user is reporting an issue where local suppression of deprecation warnings (specifically warning 3) does not work when applied directly to a type re-declaration. While a global suppression works, the desired behavior is for local suppression to be effective in such cases.

newcomer-jobfeature-wishgood first issue
6.6K
Difficulty
3/5

Support for early returns inside loops that can be replaced with breaks

AI summary

This issue proposes adding support for translating early `return` statements within loops in the Aeneas verifier, provided these returns are semantically equivalent to `break` statements. The current implementation fails to translate a Rust function exhibiting this pattern, resulting in an 'Unreachable' error.

buggood first issuetranslationprepasses
847
Difficulty
3/5

Introduce Parser tests

AI summary

This issue proposes adding dedicated unit tests for the parser component. These tests will be integrated into the CI pipeline, and any Pull Requests that fail these tests will be blocked to ensure parser stability.

good first issuetestsparser
25
Difficulty
2/5

Use modulo constants as widening thresholds

AI summary

This issue proposes incorporating modulo constants (minus 1) as widening thresholds in the autotuner, inspired by a similar technique used in Astrée. The goal is to improve precision by leveraging the cyclical nature of modulo operations, particularly in scenarios like ring buffers. This change is considered a small addition with potentially significant benefits for static analysis.

precisiongood first issue
249
Difficulty
2/5

All packages are missing from the Opam

AI summary

The user reports that packages previously published to Opam are now missing. They have linked to a previous issue where the publication was discussed, indicating a potential issue with the Opam repository or the publishing process.

help wanted
35
Difficulty
2/5

Improve `--experimental` output

AI summary

The `--experimental` flag in opengrep currently produces excessive, verbose logging when encountering syntax errors in files. This issue proposes to suppress these detailed error logs in normal mode and instead provide a concise summary of skipped files, similar to the non-experimental output.

enhancementgood first issue
3.0K
Difficulty
2/5

Remove `string` from Gospel type

AI summary

This issue proposes removing the `string` type from the Gospel built-in types because it's not used as a model for OCaml strings, leading to potential confusion and type checking errors. The correct model for OCaml strings is `char sequence`, and the issue suggests parsing literal strings as `char sequence` as a bonus.

good first issue
163
Difficulty
2/5

Declare axiom compatibility and axiom classification

AI summary

This issue proposes new commands to declare relationships between axioms, such as incompatibility or compatibility with Coq's logic. The goal is to improve clarity for non-logicians by providing warnings/errors for incompatible axioms and structuring the output of `Print Assumptions` to highlight certain axiom classifications.

kind: featuregood first issuepart: vernac
5.5K
Difficulty
3/5
ocaml/ocaml

Parsing error and semantic incoherence

AI summary

The current parsing of constructors in OCaml modules leads to inconsistent behavior and errors, particularly when constructors like `M.true` are encountered. The issue proposes a partial fix to align the parsing of such cases with the expected behavior of unbound constructors, aiming to prevent parsing errors while maintaining backward compatibility.

good first issue
6.6K
Difficulty
3/5

Semgrep scan --test does not honor timeouts, jobs and memory limits

AI summary

The `semgrep scan --test` command does not correctly apply configured timeouts, job limits, or memory limits. These configurations are ignored when running tests in batch mode, leading to unexpected test execution times and resource consumption. The issue stems from the `commands/scan.py` file in the Semgrep Python library, which fails to propagate these settings to the underlying `semgrep-core` execution.

buggood first issuepriority:lowcli
16.4K
Difficulty
3/5

Ensure that `--test` works on windows

AI summary

This issue reports a bug on Windows where the `--test` command fails due to a permission error accessing the `.semgrep\settings.xml` file. The goal is to investigate and resolve this permission issue to ensure the `--test` functionality works correctly on Windows environments.

buggood first issuewindows
3.0K
Difficulty
2/5
ocaml/dune

Exit with code 0 when using —auto-promote

AI summary

The user is reporting that Dune exits with a non-zero status code even when the `--auto-promote` flag is used and a fixed point in the build is reached. This forces users to wrap Dune commands in `|| true` to prevent build failures in scripting contexts like opam files.

clihelp wanted
1.9K
Difficulty
2/5
ocaml/merlin

truncated error message with Emacs+Merlin on OCaml 5.04 and v5.7.1-504

AI summary

This issue describes a truncated error message in Emacs with Merlin when using OCaml 5.04 and Merlin v5.7.1-504. The provided OCaml code demonstrates a functor application that results in a type mismatch, but Merlin only displays the last line of the compiler's full error message, making debugging difficult.

Area/Emacsgood first issue
1.7K
Difficulty
2/5

Parameterisation support

AI summary

This issue proposes adding parameterization support to the system. The core components like process, type, and channel definitions have been addressed, with the remaining task being to implement lifetime management for these parameters.

enhancementgood first issuelow priority
32
Difficulty
3/5

Also browsing: Python , TypeScript , JavaScript