close
Skip to content

Fix merlin_reader functionality on OpenBSD#1956

Merged
voodoos merged 1 commit into
ocaml:mainfrom
omegametabroccolo:openbsd-argv0
Sep 8, 2025
Merged

Fix merlin_reader functionality on OpenBSD#1956
voodoos merged 1 commit into
ocaml:mainfrom
omegametabroccolo:openbsd-argv0

Conversation

@omegametabroccolo
Copy link
Copy Markdown
Contributor

@omegametabroccolo omegametabroccolo commented Aug 14, 2025

OpenBSD's execve(2) needs argv to contain at least one element.

@xvw
Copy link
Copy Markdown
Collaborator

xvw commented Aug 20, 2025

Hi!
I am not really familiar with that, does the fix can have issue on other unix distro?

@omegametabroccolo
Copy link
Copy Markdown
Contributor Author

Unix.create_process uses caml_unix_spawn from the runtime, which can use either posix_spawn* or exec* depending on availability.

From the exec* POSIX manpage:

The value in argv[0] should point to a filename string that is associated with the process being started by one of the exec functions.

Same thing from the posix_spawn* manpage:

The value in argv[0] should point to a filename string that is associated with the process image being started by the posix_spawn() or posix_spawnp() function.

And since merlin readers are currently spawned with no arguments, I assume they just ignore their arguments so this fix shouldn't cause problems on other Unixes.

Copy link
Copy Markdown
Collaborator

@voodoos voodoos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @omegametabroccolo Merlin should respect the calling conventions, if a reader is impacted by this it should be fixed too.

@omegametabroccolo can you add a changelog entry ?

@omegametabroccolo
Copy link
Copy Markdown
Contributor Author

Done! @voodoos

@voodoos voodoos merged commit d074edb into ocaml:main Sep 8, 2025
9 of 10 checks passed
voodoos added a commit to voodoos/opam-repository that referenced this pull request Oct 3, 2025
CHANGES:

Tue Jun 24 17:10:42 CEST 2025

  + merlin binary
    - Add `locate-types` command (ocaml/merlin#1951)
  + merlin library
    - Fix `merlin_reader` for OpenBSD (ocaml/merlin#1956)
    - Improve recovery of mutually recursive definitions (ocaml/merlin#1962, ocaml/merlin#1963, fixes ocaml/merlin#1953)
  + vim plugin
    - Fix error when `:MerlinOccurrencesProjectWide` fails to gather code previews (ocaml/merlin#1970)
    - Add more short-paths tests cases (ocaml/merlin#1904)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Oct 4, 2025
CHANGES:

Sat Oct 04 15:10:42 CEST 2025

  + merlin binary
    - Add `locate-types` command (ocaml/merlin#1951)
  + merlin library
    - Fix `merlin_reader` for OpenBSD (ocaml/merlin#1956)
    - Improve recovery of mutually recursive definitions (ocaml/merlin#1962, ocaml/merlin#1963, fixes ocaml/merlin#1953)
    - Support for OCaml 5.4 (ocaml/merlin#1974)
  + vim plugin
    - Fix error when `:MerlinOccurrencesProjectWide` fails to gather code previews (ocaml/merlin#1970)
    - Add more short-paths tests cases (ocaml/merlin#1904)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Apr 9, 2026
CHANGES:

Thu Apr 09 09:59:38 WAT 2026

  + merlin library
    - Implement new refactor-extract-region command for extracting region to a fresh let binding (warning: this feature is still experimental) (ocaml/merlin#1948)
    - Add "Other" variant to locate-types result (ocaml/merlin#2025)
    - Don't include `option` in locate-types result for optional parameters (ocaml/merlin#2027)
    - Fix record field autocompletion (ocaml/merlin#2028)
    - Signature help should not loop over the parameters once it is finished (ocaml/merlin#2023)
    - Fix bugs on signature help about labelled and optional parameters (ocaml/merlin#2032)
    - Add `-end-position` parameter for `enclosing` (ocaml/merlin#2029)
    - Signature help should appear even if the 'in' is not written (ocaml/merlin#2036)
    - Improve type enclosing behavior on various class and object related items
      (ocaml/merlin#2053)
  + merlin binary
    - Define PATH_MAX to 4096 if undefined (eg. hurd) (ocaml/merlin#2039)
  + test suite
    - Add a reproduction case for ocaml/merlin#1214, the issue has been resolved before (ocaml/merlin#2022)
    - Add reproduction case for ocaml/merlin#1763 but it is not failing anymore (ocaml/merlin#2021)
    - Add a test to reproduce [Locate command fails on multi-line type definitions](ocaml/merlin#1987) (ocaml/merlin#2020)
    - Add a regression test for issue ocaml/merlin#2019 (ocaml/merlin#2030)

merlin 5.6.1
Sat Dec 20 11:15:42 CET 2025

  + merlin binary
    - Fix a plethora of minor issues with the C code (ocaml/merlin#1998)
  + merlin library
    - Signature help should not appear on the function name (ocaml/merlin#1997)
    - Fix completion not working for inlined records labels (ocaml/merlin#1978, fixes ocaml/merlin#1977)
    - Perform buffer indexing only if the query requires it (ocaml/merlin#1990 and ocaml/merlin#1991)
    - Stop unnecessarily forcing substitutions when initializing short-paths graph (ocaml/merlin#1988)
    - Fix Mocaml.with_printer didn't update replacement_printer_doc (ocaml/merlin#2010)
  + test suite
    - Add a test to ensure the behavior showed in issue ocaml/merlin#1517 is no longer relevant (ocaml/merlin#1995)
    - Add a test to ensure the code fragment exhibited in issue ocaml/merlin#1118 no longer makes Merlin crash (ocaml/merlin#1996)
    - Add a test case illustrating how a snippet produces two unrelated errors in issue ocaml/merlin#2000. (ocaml/merlin#2003)
    - Add a test reproducing issue ocaml/merlin#1983 where `document` command which sometime concatenates consecutive variants and labels (ocaml/merlin#2005)
    - Signature-help should trigger on unfinished `let ... in` bindings (ocaml/merlin#2009)

merlin 5.6
Sat Oct 04 15:10:42 CEST 2025

  + merlin binary
    - Add `locate-types` command (ocaml/merlin#1951)
  + merlin library
    - Implement new refactor-extract-region command for extracting region to a fresh let binding (ocaml/merlin#1948)
    - Fix `merlin_reader` for OpenBSD (ocaml/merlin#1956)
    - Improve recovery of mutually recursive definitions (ocaml/merlin#1962, ocaml/merlin#1963, fixes ocaml/merlin#1953)
    - Support for OCaml 5.4 (ocaml/merlin#1974)
  + vim plugin
    - Fix error when `:MerlinOccurrencesProjectWide` fails to gather code previews (ocaml/merlin#1970)
  + test suite
    - Add more short-paths tests cases (ocaml/merlin#1904)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants