lean4-htt/src/runtime/libuv.cpp
Sofia Rodrigues 3bea7e209e
feat: add signal handling support using libuv (#9258)
This PR adds support for signal handlers to the Lean standard library.

---------

Co-authored-by: Markus Himmel <markus@lean-fro.org>
2025-09-15 13:09:50 +00:00

52 lines
1.1 KiB
C++

/*
Copyright (c) 2024 Lean FRO, LLC. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Markus Himmel, Sofia Rodrigues
*/
#include <pthread.h>
#include "runtime/libuv.h"
#include "runtime/object.h"
#ifndef LEAN_EMSCRIPTEN
#include <uv.h>
#endif
namespace lean {
#ifndef LEAN_EMSCRIPTEN
extern "C" void initialize_libuv() {
initialize_libuv_timer();
initialize_libuv_tcp_socket();
initialize_libuv_udp_socket();
initialize_libuv_signal();
initialize_libuv_loop();
lthread([]() { event_loop_run_loop(&global_ev); });
}
extern "C" LEAN_EXPORT char ** lean_setup_args(int argc, char ** argv) {
return uv_setup_args(argc, argv);
}
/* Lean.libUVVersionFn : Unit → Nat */
extern "C" LEAN_EXPORT lean_obj_res lean_libuv_version(lean_obj_arg o) {
return lean_unsigned_to_nat(uv_version());
}
#else
extern "C" void initialize_libuv() {}
extern "C" LEAN_EXPORT lean_obj_res lean_libuv_version(lean_obj_arg o) {
return lean_box(0);
}
extern "C" LEAN_EXPORT char ** lean_setup_args(int argc, char ** argv) {
return argv;
}
#endif
}