Skip to content

[new release] rpclib (6 packages) (10.0.0)#29075

Merged
jmid merged 3 commits intoocaml:masterfrom
psafont:release-rpclib-10.0.0
Jan 2, 2026
Merged

[new release] rpclib (6 packages) (10.0.0)#29075
jmid merged 3 commits intoocaml:masterfrom
psafont:release-rpclib-10.0.0

Conversation

@psafont
Copy link
Contributor

@psafont psafont commented Dec 11, 2025

A library to deal with RPCs in OCaml

CHANGES:
  • Removed deprecated rpc virtual package
  • Python3 support
  • Drop Python2 support
  • Rpc_genfake: avoid crash on recursive types
  • Rcplib-async is now OCaml 5.3+ only (the other libraries still support OCaml 4.14)

CHANGES:

* Removed deprecated rpc virtual package
* Python3 support
* Drop Python2 support
* Rpc_genfake: avoid crash on recursive types
* Rcplib-async is now OCaml 5.3+ only (the other libraries still support OCaml 4.14)
@psafont
Copy link
Contributor Author

psafont commented Dec 11, 2025

The failure in the windows workflow is due to a failure in a request to fetch an archive from github. Github is being unstable today and returning 503 in many requests (I've had other workdlows failing because of this as well)

@jmid
Copy link
Member

jmid commented Dec 11, 2025

FTR, I restarted the failing Windows workflow and now it is passing 👍

I'll let opam-ci complete now.

@jmid
Copy link
Member

jmid commented Dec 12, 2025

I see a runtest linking error for rpclib-async on riscv64:
https://opam.ci.ocaml.org/github/ocaml/opam-repository/commit/2d04beee37100f8a8d89ef140421171f0eeb5625/variant/extras,riscv64-ocaml-5.4,rpclib-async.10.0.0,tests

#=== ERROR while compiling rpclib-async.10.0.0 ================================#
# context              2.5.0 | linux/riscv64 | ocaml-base-compiler.5.4.0 | pinned(https://github.com/mirage/ocaml-rpc/releases/download/10.0.0/rpclib-10.0.0.tbz)
# path                 ~/.opam/5.4/.opam-switch/build/rpclib-async.10.0.0
# command              ~/.opam/opam-init/hooks/sandbox.sh build dune runtest -p rpclib-async -j 3
# exit-code            1
# env-file             ~/.opam/log/rpclib-async-7-781477.env
# output-file          ~/.opam/log/rpclib-async-7-781477.out
### output ###
# File "tests/async/dune", line 2, characters 7-12:
# 2 |  (name suite)
#            ^^^^^
# (cd _build/default && /home/opam/.opam/5.4/bin/ocamlopt.opt -w -40 -g -o tests/async/suite.exe /home/opam/.opam/5.4/lib/result/result.cmxa /home/opam/.opam/5.4/lib/base64/base64.cmxa /home/opam/.opam/5.4/lib/rresult/rresult.cmxa /home/opam/.opam/5.4/lib/rpclib/core/rpclib_core.cmxa /home/opam/.opam/5.4/lib/rpclib/internals/internals.cmxa /home/opam/.opam/5.4/lib/xmlm/xmlm.cmxa /home/opam/.opam/5.4/lib/rpclib/xml/xml.cmxa /home/opam/.opam/5.4/lib/rpclib/rpclib.cmxa /home/opam/.opam/5.4/lib/base/base_internalhash_types/base_internalhash_types.cmxa -I /home/opam/.opam/5.4/lib/base/base_internalhash_types /home/opam/.opam/5.4/lib/sexplib0/sexplib0.cmxa /home/opam/.opam/5.4/lib/base/shadow_stdlib/shadow_stdlib.cmxa /home/opam/.opam/5.4/lib/ocaml_intrinsics_kernel/ocaml_intrinsics_kernel.cmxa -I /home/opam/.opam/5.4/lib/ocaml_intrinsics_kernel /home/opam/.opam/5.4/lib/base/base.cmxa -I /home/opam/.opam/5.4/lib/base /home/opam/.opam/5.4/lib/ppx_sexp_conv/runtime-lib/ppx_sexp_conv_lib.cmxa /home/opam/.opam/5.4/lib/ppx_compare/runtime-lib/ppx_compare_lib.cmxa /home/opam/.opam/5.4/lib/ppx_enumerate/runtime-lib/ppx_enumerate_lib.cmxa /home/opam/.opam/5.4/lib/ppx_hash/runtime-lib/ppx_hash_lib.cmxa /home/opam/.opam/5.4/lib/ppx_here/runtime-lib/ppx_here_lib.cmxa /home/opam/.opam/5.4/lib/ppx_assert/runtime-lib/ppx_assert_lib.cmxa /home/opam/.opam/5.4/lib/ppx_bench/runtime-lib/ppx_bench_lib.cmxa /home/opam/.opam/5.4/lib/base/md5/md5_lib.cmxa /home/opam/.opam/5.4/lib/variantslib/variantslib.cmxa /home/opam/.opam/5.4/lib/fieldslib/fieldslib.cmxa /home/opam/.opam/5.4/lib/bin_prot/shape/bin_shape.cmxa /home/opam/.opam/5.4/lib/ppx_stable_witness/stable_witness/stable_witness.cmxa /home/opam/.opam/5.4/lib/bin_prot/bin_prot.cmxa -I /home/opam/.opam/5.4/lib/bin_prot /home/opam/.opam/5.4/lib/ppx_inline_test/config/inline_test_config.cmxa /home/opam/.opam/5.4/lib/jane-street-headers/jane_street_headers.cmxa /home/opam/.opam/5.4/lib/time_now/time_now.cmxa -I /home/opam/.opam/5.4/lib/time_now /home/opam/.opam/5.4/lib/ppx_inline_test/runtime-lib/ppx_inline_test_lib.cmxa /home/opam/.opam/5.4/lib/stdio/stdio.cmxa /home/opam/.opam/5.4/lib/ppx_module_timer/runtime/ppx_module_timer_runtime.cmxa /home/opam/.opam/5.4/lib/ppx_stable_witness/runtime/ppx_stable_witness_runtime.cmxa /home/opam/.opam/5.4/lib/ppx_string/runtime/ppx_string_runtime.cmxa /home/opam/.opam/5.4/lib/typerep/typerep_lib.cmxa /home/opam/.opam/5.4/lib/ppxlib/print_diff/ppxlib_print_diff.cmxa /home/opam/.opam/5.4/lib/ppx_expect/make_corrected_file/make_corrected_file.cmxa /home/opam/.opam/5.4/lib/ppx_expect/config_types/expect_test_config_types.cmxa /home/opam/.opam/5.4/lib/ppx_expect/config/expect_test_config.cmxa /home/opam/.opam/5.4/lib/ppx_expect/runtime/ppx_expect_runtime.cmxa -I /home/opam/.opam/5.4/lib/ppx_expect/runtime /home/opam/.opam/5.4/lib/parsexp/parsexp.cmxa /home/opam/.opam/5.4/lib/sexplib/sexplib.cmxa /home/opam/.opam/5.4/lib/ppx_log/types/ppx_log_types.cmxa /home/opam/.opam/5.4/lib/ppx_log/syntax/ppx_log_syntax.cmxa /home/opam/.opam/5.4/lib/splittable_random/splittable_random.cmxa /home/opam/.opam/5.4/lib/base_quickcheck/base_quickcheck.cmxa /home/opam/.opam/5.4/lib/base_quickcheck/ppx_quickcheck/runtime/ppx_quickcheck_runtime.cmxa /home/opam/.opam/5.4/lib/int_repr/int_repr.cmxa /home/opam/.opam/5.4/lib/base_bigstring/base_bigstring.cmxa -I /home/opam/.opam/5.4/lib/base_bigstring /home/opam/.opam/5.4/lib/core/base_for_tests/base_for_tests.cmxa /home/opam/.opam/5.4/lib/core/filename_base/filename_base.cmxa /home/opam/.opam/5.4/lib/core/univ_map/univ_map.cmxa /home/opam/.opam/5.4/lib/core/command/command.cmxa /home/opam/.opam/5.4/lib/core/heap_block/heap_block.cmxa -I /home/opam/.opam/5.4/lib/core/heap_block /home/opam/.opam/5.4/lib/gel/gel.cmxa /home/opam/.opam/5.4/lib/ppx_diff/diffable_cinaps/diffable_cinaps.cmxa /home/opam/.opam/5.4/lib/ppx_diff/diffable/diffable.cmxa /home/opam/.opam/5.4/lib/core/validate/validate.cmxa /home/opam/.opam/5.4/lib/core/core.cmxa -I /home/opam/.opam/5.4/lib/core /home/opam/.opam/5.4/lib/core_kernel/thread_pool_cpu_affinity/thread_pool_cpu_affinity.cmxa /home/opam/.opam/5.4/lib/core_kernel/tuple_pool/tuple_pool.cmxa /home/opam/.opam/5.4/lib/core_kernel/timing_wheel/timing_wheel.cmxa /home/opam/.opam/5.4/lib/async_kernel/config/async_kernel_config.cmxa /home/opam/.opam/5.4/lib/core_kernel/moption/moption.cmxa /home/opam/.opam/5.4/lib/core_kernel/pairing_heap/pairing_heap.cmxa /home/opam/.opam/5.4/lib/core_kernel/sexp_hidden_in_test/sexp_hidden_in_test.cmxa /home/opam/.opam/5.4/lib/uopt/uopt.cmxa /home/opam/.opam/5.4/lib/core_kernel/thread_safe_queue/thread_safe_queue.cmxa /home/opam/.opam/5.4/lib/async_kernel/async_kernel.cmxa /home/opam/.opam/5.4/lib/ocaml/unix/unix.cmxa /home/opam/.opam/5.4/lib/ocaml/threads/threads.cmxa /home/opam/.opam/5.4/lib/core_kernel/caml_threads/caml_threads.cmxa /home/opam/.opam/5.4/lib/core_unix/error_checking_mutex/error_checking_mutex.cmxa -I /home/opam/.opam/5.4/lib/core_unix/error_checking_mutex /home/opam/.opam/5.4/lib/core_kernel/flags/flags.cmxa /home/opam/.opam/5.4/lib/sexplib/unix/sexplib_unix.cmxa /home/opam/.opam/5.4/lib/core_kernel/caml_unix/caml_unix.cmxa /home/opam/.opam/5.4/lib/core_unix/signal_unix/signal_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/signal_unix /home/opam/.opam/5.4/lib/spawn/spawn.cmxa -I /home/opam/.opam/5.4/lib/spawn /home/opam/.opam/5.4/lib/core_unix/core_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix /home/opam/.opam/5.4/lib/core_unix/ocaml_c_utils/ocaml_c_utils.cmxa -I /home/opam/.opam/5.4/lib/core_unix/ocaml_c_utils /home/opam/.opam/5.4/lib/core_unix/bigstring_unix/bigstring_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/bigstring_unix /home/opam/.opam/5.4/lib/core_kernel/bounded_int_table/bounded_int_table.cmxa /home/opam/.opam/5.4/lib/cstruct/cstruct.cmxa -I /home/opam/.opam/5.4/lib/cstruct /home/opam/.opam/5.4/lib/async_kernel/eager_deferred/eager_deferred.cmxa /home/opam/.opam/5.4/lib/core_unix/sys_unix/sys_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/sys_unix /home/opam/.opam/5.4/lib/core_unix/filename_unix/filename_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/filename_unix /home/opam/.opam/5.4/lib/core_kernel/iobuf/iobuf.cmxa /home/opam/.opam/5.4/lib/core_unix/iobuf_unix/iobuf_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/iobuf_unix /home/opam/.opam/5.4/lib/core_unix/core_thread/core_thread.cmxa -I /home/opam/.opam/5.4/lib/core_unix/core_thread /home/opam/.opam/5.4/lib/core_unix/nano_mutex/nano_mutex.cmxa /home/opam/.opam/5.4/lib/async_kernel/read_write_pair/read_write_pair.cmxa /home/opam/.opam/5.4/lib/core_unix/squeue/squeue.cmxa /home/opam/.opam/5.4/lib/timezone/timezone.cmxa /home/opam/.opam/5.4/lib/core_unix/time_float_unix/time_float_unix.cmxa /home/opam/.opam/5.4/lib/core_unix/time_ns_unix/time_ns_unix.cmxa /home/opam/.opam/5.4/lib/core_unix/linux_ext/linux_ext.cmxa -I /home/opam/.opam/5.4/lib/core_unix/linux_ext /home/opam/.opam/5.4/lib/async_unix/thread_safe_ivar/thread_safe_ivar.cmxa /home/opam/.opam/5.4/lib/async_unix/thread_pool/thread_pool.cmxa /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter/time_stamp_counter.cmxa -I /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter /home/opam/.opam/5.4/lib/async_unix/async_unix.cmxa -I /home/opam/.opam/5.4/lib/async_unix /home/opam/.opam/5.4/lib/core_kernel/version_util/version_util.cmxa -I /home/opam/.opam/5.4/lib/core_kernel/version_util /home/opam/.opam/5.4/lib/core_unix/command_unix/command_unix.cmxa /home/opam/.opam/5.4/lib/async/async_command/async_command.cmxa /home/opam/.opam/5.4/lib/core_kernel/univ/univ.cmxa /home/opam/.opam/5.4/lib/core_kernel/uuid/uuid.cmxa /home/opam/.opam/5.4/lib/async_log/kernel/async_log_kernel.cmxa /home/opam/.opam/5.4/lib/async_log/async_log.cmxa /home/opam/.opam/5.4/lib/async/async_quickcheck/async_quickcheck.cmxa /home/opam/.opam/5.4/lib/core_kernel/bus/bus.cmxa /home/opam/.opam/5.4/lib/async_kernel/persistent_connection_kernel/persistent_connection_kernel.cmxa /home/opam/.opam/5.4/lib/protocol_version_header/protocol_version_header.cmxa /home/opam/.opam/5.4/lib/core_kernel/reversed_list/reversed_list.cmxa /home/opam/.opam/5.4/lib/async_rpc_kernel/async_rpc_kernel.cmxa /home/opam/.opam/5.4/lib/async/async_rpc/async_rpc.cmxa -I /home/opam/.opam/5.4/lib/async/async_rpc /home/opam/.opam/5.4/lib/async/async.cmxa src/async/rpclib_async.cmxa /home/opam/.opam/5.4/lib/astring/astring.cmxa /home/opam/.opam/5.4/lib/cmdliner/cmdliner.cmxa /home/opam/.opam/5.4/lib/uutf/uutf.cmxa /home/opam/.opam/5.4/lib/alcotest/stdlib_ext/alcotest_stdlib_ext.cmxa /home/opam/.opam/5.4/lib/fmt/fmt.cmxa /home/opam/.opam/5.4/lib/fmt/cli/fmt_cli.cmxa /home/opam/.opam/5.4/lib/re/re.cmxa /home/opam/.opam/5.4/lib/stdlib-shims/stdlib_shims.cmxa /home/opam/.opam/5.4/lib/alcotest/engine/alcotest_engine.cmxa /home/opam/.opam/5.4/lib/fmt/tty/fmt_tty.cmxa /home/opam/.opam/5.4/lib/alcotest/alcotest.cmxa -I /home/opam/.opam/5.4/lib/alcotest tests/common/test_common.cmxa tests/async/.suite.eobjs/native/dune__exe.cmx tests/async/.suite.eobjs/native/dune__exe__Client_server_test.cmx tests/async/.suite.eobjs/native/dune__exe__Suite.cmx)
# /usr/bin/ld: /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter/libtime_stamp_counter_stubs.a(time_stamp_counter_stubs.o): in function `caml_rdtsc_unboxed':
# /home/opam/.opam/5.4/.opam-switch/build/core_unix.v0.17.1/_build/default/time_stamp_counter/src/time_stamp_counter_stubs.c:51:(.text+0x4): undefined reference to `rdtsc'
# /usr/bin/ld: /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter/libtime_stamp_counter_stubs.a(time_stamp_counter_stubs.o): in function `caml_rdtsc':
# /home/opam/.opam/5.4/.opam-switch/build/core_unix.v0.17.1/_build/default/time_stamp_counter/src/time_stamp_counter_stubs.c:56:(.text+0x16): undefined reference to `rdtsc'
# collect2: error: ld returned 1 exit status
# File "caml_startup", line 1:
# Error: Error during linking (exit code 1)
# File "tests/rpc/dune", line 9, characters 7-18:
# 9 |  (name suite_async)
#            ^^^^^^^^^^^
# (cd _build/default && /home/opam/.opam/5.4/bin/ocamlopt.opt -w -40 -g -o tests/rpc/suite_async.exe /home/opam/.opam/5.4/lib/astring/astring.cmxa /home/opam/.opam/5.4/lib/cmdliner/cmdliner.cmxa /home/opam/.opam/5.4/lib/uutf/uutf.cmxa /home/opam/.opam/5.4/lib/alcotest/stdlib_ext/alcotest_stdlib_ext.cmxa /home/opam/.opam/5.4/lib/fmt/fmt.cmxa /home/opam/.opam/5.4/lib/fmt/cli/fmt_cli.cmxa /home/opam/.opam/5.4/lib/re/re.cmxa /home/opam/.opam/5.4/lib/stdlib-shims/stdlib_shims.cmxa /home/opam/.opam/5.4/lib/alcotest/engine/alcotest_engine.cmxa /home/opam/.opam/5.4/lib/ocaml/unix/unix.cmxa /home/opam/.opam/5.4/lib/fmt/tty/fmt_tty.cmxa /home/opam/.opam/5.4/lib/alcotest/alcotest.cmxa -I /home/opam/.opam/5.4/lib/alcotest /home/opam/.opam/5.4/lib/base/base_internalhash_types/base_internalhash_types.cmxa -I /home/opam/.opam/5.4/lib/base/base_internalhash_types /home/opam/.opam/5.4/lib/sexplib0/sexplib0.cmxa /home/opam/.opam/5.4/lib/base/shadow_stdlib/shadow_stdlib.cmxa /home/opam/.opam/5.4/lib/ocaml_intrinsics_kernel/ocaml_intrinsics_kernel.cmxa -I /home/opam/.opam/5.4/lib/ocaml_intrinsics_kernel /home/opam/.opam/5.4/lib/base/base.cmxa -I /home/opam/.opam/5.4/lib/base /home/opam/.opam/5.4/lib/ppx_sexp_conv/runtime-lib/ppx_sexp_conv_lib.cmxa /home/opam/.opam/5.4/lib/ppx_compare/runtime-lib/ppx_compare_lib.cmxa /home/opam/.opam/5.4/lib/ppx_enumerate/runtime-lib/ppx_enumerate_lib.cmxa /home/opam/.opam/5.4/lib/ppx_hash/runtime-lib/ppx_hash_lib.cmxa /home/opam/.opam/5.4/lib/ppx_here/runtime-lib/ppx_here_lib.cmxa /home/opam/.opam/5.4/lib/ppx_assert/runtime-lib/ppx_assert_lib.cmxa /home/opam/.opam/5.4/lib/ppx_bench/runtime-lib/ppx_bench_lib.cmxa /home/opam/.opam/5.4/lib/base/md5/md5_lib.cmxa /home/opam/.opam/5.4/lib/variantslib/variantslib.cmxa /home/opam/.opam/5.4/lib/fieldslib/fieldslib.cmxa /home/opam/.opam/5.4/lib/bin_prot/shape/bin_shape.cmxa /home/opam/.opam/5.4/lib/ppx_stable_witness/stable_witness/stable_witness.cmxa /home/opam/.opam/5.4/lib/bin_prot/bin_prot.cmxa -I /home/opam/.opam/5.4/lib/bin_prot /home/opam/.opam/5.4/lib/ppx_inline_test/config/inline_test_config.cmxa /home/opam/.opam/5.4/lib/jane-street-headers/jane_street_headers.cmxa /home/opam/.opam/5.4/lib/time_now/time_now.cmxa -I /home/opam/.opam/5.4/lib/time_now /home/opam/.opam/5.4/lib/ppx_inline_test/runtime-lib/ppx_inline_test_lib.cmxa /home/opam/.opam/5.4/lib/stdio/stdio.cmxa /home/opam/.opam/5.4/lib/ppx_module_timer/runtime/ppx_module_timer_runtime.cmxa /home/opam/.opam/5.4/lib/ppx_stable_witness/runtime/ppx_stable_witness_runtime.cmxa /home/opam/.opam/5.4/lib/ppx_string/runtime/ppx_string_runtime.cmxa /home/opam/.opam/5.4/lib/typerep/typerep_lib.cmxa /home/opam/.opam/5.4/lib/ppxlib/print_diff/ppxlib_print_diff.cmxa /home/opam/.opam/5.4/lib/ppx_expect/make_corrected_file/make_corrected_file.cmxa /home/opam/.opam/5.4/lib/ppx_expect/config_types/expect_test_config_types.cmxa /home/opam/.opam/5.4/lib/ppx_expect/config/expect_test_config.cmxa /home/opam/.opam/5.4/lib/ppx_expect/runtime/ppx_expect_runtime.cmxa -I /home/opam/.opam/5.4/lib/ppx_expect/runtime /home/opam/.opam/5.4/lib/parsexp/parsexp.cmxa /home/opam/.opam/5.4/lib/sexplib/sexplib.cmxa /home/opam/.opam/5.4/lib/ppx_log/types/ppx_log_types.cmxa /home/opam/.opam/5.4/lib/ppx_log/syntax/ppx_log_syntax.cmxa /home/opam/.opam/5.4/lib/splittable_random/splittable_random.cmxa /home/opam/.opam/5.4/lib/base_quickcheck/base_quickcheck.cmxa /home/opam/.opam/5.4/lib/base_quickcheck/ppx_quickcheck/runtime/ppx_quickcheck_runtime.cmxa /home/opam/.opam/5.4/lib/int_repr/int_repr.cmxa /home/opam/.opam/5.4/lib/base_bigstring/base_bigstring.cmxa -I /home/opam/.opam/5.4/lib/base_bigstring /home/opam/.opam/5.4/lib/core/base_for_tests/base_for_tests.cmxa /home/opam/.opam/5.4/lib/core/filename_base/filename_base.cmxa /home/opam/.opam/5.4/lib/core/univ_map/univ_map.cmxa /home/opam/.opam/5.4/lib/core/command/command.cmxa /home/opam/.opam/5.4/lib/core/heap_block/heap_block.cmxa -I /home/opam/.opam/5.4/lib/core/heap_block /home/opam/.opam/5.4/lib/gel/gel.cmxa /home/opam/.opam/5.4/lib/ppx_diff/diffable_cinaps/diffable_cinaps.cmxa /home/opam/.opam/5.4/lib/ppx_diff/diffable/diffable.cmxa /home/opam/.opam/5.4/lib/core/validate/validate.cmxa /home/opam/.opam/5.4/lib/core/core.cmxa -I /home/opam/.opam/5.4/lib/core /home/opam/.opam/5.4/lib/core_kernel/thread_pool_cpu_affinity/thread_pool_cpu_affinity.cmxa /home/opam/.opam/5.4/lib/core_kernel/tuple_pool/tuple_pool.cmxa /home/opam/.opam/5.4/lib/core_kernel/timing_wheel/timing_wheel.cmxa /home/opam/.opam/5.4/lib/async_kernel/config/async_kernel_config.cmxa /home/opam/.opam/5.4/lib/core_kernel/moption/moption.cmxa /home/opam/.opam/5.4/lib/core_kernel/pairing_heap/pairing_heap.cmxa /home/opam/.opam/5.4/lib/core_kernel/sexp_hidden_in_test/sexp_hidden_in_test.cmxa /home/opam/.opam/5.4/lib/uopt/uopt.cmxa /home/opam/.opam/5.4/lib/core_kernel/thread_safe_queue/thread_safe_queue.cmxa /home/opam/.opam/5.4/lib/async_kernel/async_kernel.cmxa /home/opam/.opam/5.4/lib/ocaml/threads/threads.cmxa /home/opam/.opam/5.4/lib/core_kernel/caml_threads/caml_threads.cmxa /home/opam/.opam/5.4/lib/core_unix/error_checking_mutex/error_checking_mutex.cmxa -I /home/opam/.opam/5.4/lib/core_unix/error_checking_mutex /home/opam/.opam/5.4/lib/core_kernel/flags/flags.cmxa /home/opam/.opam/5.4/lib/sexplib/unix/sexplib_unix.cmxa /home/opam/.opam/5.4/lib/core_kernel/caml_unix/caml_unix.cmxa /home/opam/.opam/5.4/lib/core_unix/signal_unix/signal_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/signal_unix /home/opam/.opam/5.4/lib/spawn/spawn.cmxa -I /home/opam/.opam/5.4/lib/spawn /home/opam/.opam/5.4/lib/core_unix/core_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix /home/opam/.opam/5.4/lib/core_unix/ocaml_c_utils/ocaml_c_utils.cmxa -I /home/opam/.opam/5.4/lib/core_unix/ocaml_c_utils /home/opam/.opam/5.4/lib/core_unix/bigstring_unix/bigstring_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/bigstring_unix /home/opam/.opam/5.4/lib/core_kernel/bounded_int_table/bounded_int_table.cmxa /home/opam/.opam/5.4/lib/cstruct/cstruct.cmxa -I /home/opam/.opam/5.4/lib/cstruct /home/opam/.opam/5.4/lib/async_kernel/eager_deferred/eager_deferred.cmxa /home/opam/.opam/5.4/lib/core_unix/sys_unix/sys_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/sys_unix /home/opam/.opam/5.4/lib/core_unix/filename_unix/filename_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/filename_unix /home/opam/.opam/5.4/lib/core_kernel/iobuf/iobuf.cmxa /home/opam/.opam/5.4/lib/core_unix/iobuf_unix/iobuf_unix.cmxa -I /home/opam/.opam/5.4/lib/core_unix/iobuf_unix /home/opam/.opam/5.4/lib/core_unix/core_thread/core_thread.cmxa -I /home/opam/.opam/5.4/lib/core_unix/core_thread /home/opam/.opam/5.4/lib/core_unix/nano_mutex/nano_mutex.cmxa /home/opam/.opam/5.4/lib/async_kernel/read_write_pair/read_write_pair.cmxa /home/opam/.opam/5.4/lib/core_unix/squeue/squeue.cmxa /home/opam/.opam/5.4/lib/timezone/timezone.cmxa /home/opam/.opam/5.4/lib/core_unix/time_float_unix/time_float_unix.cmxa /home/opam/.opam/5.4/lib/core_unix/time_ns_unix/time_ns_unix.cmxa /home/opam/.opam/5.4/lib/core_unix/linux_ext/linux_ext.cmxa -I /home/opam/.opam/5.4/lib/core_unix/linux_ext /home/opam/.opam/5.4/lib/async_unix/thread_safe_ivar/thread_safe_ivar.cmxa /home/opam/.opam/5.4/lib/async_unix/thread_pool/thread_pool.cmxa /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter/time_stamp_counter.cmxa -I /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter /home/opam/.opam/5.4/lib/async_unix/async_unix.cmxa -I /home/opam/.opam/5.4/lib/async_unix /home/opam/.opam/5.4/lib/core_kernel/version_util/version_util.cmxa -I /home/opam/.opam/5.4/lib/core_kernel/version_util /home/opam/.opam/5.4/lib/core_unix/command_unix/command_unix.cmxa /home/opam/.opam/5.4/lib/async/async_command/async_command.cmxa /home/opam/.opam/5.4/lib/core_kernel/univ/univ.cmxa /home/opam/.opam/5.4/lib/core_kernel/uuid/uuid.cmxa /home/opam/.opam/5.4/lib/async_log/kernel/async_log_kernel.cmxa /home/opam/.opam/5.4/lib/async_log/async_log.cmxa /home/opam/.opam/5.4/lib/async/async_quickcheck/async_quickcheck.cmxa /home/opam/.opam/5.4/lib/core_kernel/bus/bus.cmxa /home/opam/.opam/5.4/lib/async_kernel/persistent_connection_kernel/persistent_connection_kernel.cmxa /home/opam/.opam/5.4/lib/protocol_version_header/protocol_version_header.cmxa /home/opam/.opam/5.4/lib/core_kernel/reversed_list/reversed_list.cmxa /home/opam/.opam/5.4/lib/async_rpc_kernel/async_rpc_kernel.cmxa /home/opam/.opam/5.4/lib/async/async_rpc/async_rpc.cmxa -I /home/opam/.opam/5.4/lib/async/async_rpc /home/opam/.opam/5.4/lib/async/async.cmxa /home/opam/.opam/5.4/lib/result/result.cmxa /home/opam/.opam/5.4/lib/base64/base64.cmxa /home/opam/.opam/5.4/lib/rresult/rresult.cmxa /home/opam/.opam/5.4/lib/rpclib/core/rpclib_core.cmxa /home/opam/.opam/5.4/lib/rpclib/internals/internals.cmxa /home/opam/.opam/5.4/lib/xmlm/xmlm.cmxa /home/opam/.opam/5.4/lib/rpclib/xml/xml.cmxa /home/opam/.opam/5.4/lib/rpclib/rpclib.cmxa src/async/rpclib_async.cmxa /home/opam/.opam/5.4/lib/yojson/yojson.cmxa /home/opam/.opam/5.4/lib/rpclib/json/json.cmxa tests/rpc/.suite_async.eobjs/native/dune__exe.cmx tests/rpc/.suite_async.eobjs/native/dune__exe__Client_async_new.cmx tests/rpc/.suite_async.eobjs/native/dune__exe__Suite_async.cmx)
# /usr/bin/ld: /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter/libtime_stamp_counter_stubs.a(time_stamp_counter_stubs.o): in function `caml_rdtsc_unboxed':
# /home/opam/.opam/5.4/.opam-switch/build/core_unix.v0.17.1/_build/default/time_stamp_counter/src/time_stamp_counter_stubs.c:51:(.text+0x4): undefined reference to `rdtsc'
# /usr/bin/ld: /home/opam/.opam/5.4/lib/core_unix/time_stamp_counter/libtime_stamp_counter_stubs.a(time_stamp_counter_stubs.o): in function `caml_rdtsc':
# /home/opam/.opam/5.4/.opam-switch/build/core_unix.v0.17.1/_build/default/time_stamp_counter/src/time_stamp_counter_stubs.c:56:(.text+0x16): undefined reference to `rdtsc'
# collect2: error: ld returned 1 exit status
# File "caml_startup", line 1:
# Error: Error during linking (exit code 1)

Looking briefly at https://www.felixcloutier.com/x86/rdtsc and https://en.wikipedia.org/wiki/Time_Stamp_Counter I am wondering how this instruction has been generated on risc64 🤔

@psafont
Copy link
Contributor Author

psafont commented Dec 13, 2025

I don't know what kind of action is expected of me

@jmid
Copy link
Member

jmid commented Dec 13, 2025

The submitted package fails on riscv64 with a linking error undefined reference to rdtsc'`.
From a quick search, this seems to be an x86_* instruction.
Any idea of why it is generated on riscv64? (if that is what is happening?)

@lindig
Copy link
Contributor

lindig commented Dec 27, 2025

rdtsc is not mentioned (as a string) in the OCaml compiler source code; maybe it is coming from some inline assembly code that is used for profiling?

@jmid
Copy link
Member

jmid commented Dec 28, 2025

I've dug a bit and as hinted above I believe it comes from core_unix's time_stamp_counter:
https://github.com/janestreet/core_unix/blob/v0.17.1/time_stamp_counter/src/time_stamp_counter_stubs.c#L33-L52

You know better than me how much rpclib-async.10.0.0 needs time_stamp_counter.
Since this is a failure during runtest/with-test we could consider conditioning that run on arch != "riscv64"...

@lindig
Copy link
Contributor

lindig commented Dec 28, 2025

I left a comment upstream for them to investigate

janestreet/core_unix#19

core_unix's time_stamp_counter is not compatible with this arch yet
Copy link
Member

@jmid jmid left a comment

Choose a reason for hiding this comment

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

Thanks, this now LGTM!

CI failures are down to

  • uunf failing to compile with flambda
  • opam-2.0 failures
  • a menhir.20250912 FreeBSD Bad file descriptor issue (most probably infrastructure related)

The former two are well-known, and the latter is clearly not an issue with this release.

@jmid jmid merged commit 12676e3 into ocaml:master Jan 2, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants