diff --git a/build_libnative.py b/build_libnative.py new file mode 100644 index 00000000000..cbbd36f43a1 --- /dev/null +++ b/build_libnative.py @@ -0,0 +1,76 @@ +import argparse +import os +import subprocess +import sys +from pathlib import Path + +def is_installed(bin_file): + for path in os.environ.get("PATH", "").split(os.pathsep): + if os.path.isfile(os.path.join(path, bin_file)): + return True + + return False + +def install_dedup_headers(): + if not is_installed("dedup_headers"): + subprocess.run( + ["cargo", "install", "--git", "https://github.com/DataDog/libdatadog", "--bin", "dedup_headers", "tools"], + check=True, + ) + + +def build_crate(crate_dir: Path, release: bool, features: list = None): + env = os.environ.copy() + abs_dir = crate_dir.absolute() + env["CARGO_TARGET_DIR"] = str(abs_dir / "target") + + build_cmd = ["cargo", "build"] + + if release: + build_cmd.append("--release") + + if features: + cmd_features = ', '.join(features) + build_cmd += ["--features", cmd_features] + + subprocess.run( + build_cmd, + cwd=str(crate_dir), + check=True, + env=env, + ) + + if 'profiling' in features: + install_dedup_headers() + + subprocess.run( + ["dedup_headers", "common.h", "crashtracker.h", "profiling.h"], + cwd=str(abs_dir / "target" / "include" / "datadog"), + check=True, + ) + +def clean_crate(crate_dir: Path): + target_dir = crate_dir.absolute() / "target" + if target_dir.exists(): + subprocess.run( + ["cargo", "clean"], + cwd=str(crate_dir), + check=True, + ) + +def main(): + try: + parser = argparse.ArgumentParser(description="Build Rust module") + parser.add_argument("--crate", required=True, help="Rust crate location") + parser.add_argument("--release", action="store_true", help="Release profile") + parser.add_argument("--features", nargs='*', help="List of features") + + args = parser.parse_args() + + build_crate(Path(args.crate), args.release, args.features) + except Exception as e: + print(f"Error: {e}") + sys.exit(1) + +if __name__ == "__main__": + main() diff --git a/ddtrace/internal/datadog/profiling/build_standalone.sh b/ddtrace/internal/datadog/profiling/build_standalone.sh index c7bc4c14af9..335a118a278 100755 --- a/ddtrace/internal/datadog/profiling/build_standalone.sh +++ b/ddtrace/internal/datadog/profiling/build_standalone.sh @@ -365,6 +365,12 @@ add_target() { esac } +#Build rust dependencies +build_rust() { + echo "Building Rust dependencies" + python3 build_libnative.py --crate ./src/native --release --features profiling +} + ### ENTRYPOINT # Check for basic input validity @@ -383,6 +389,8 @@ print_cmake_args print_ctest_args +build_rust + # Run cmake for target in "${targets[@]}"; do run_cmake $target diff --git a/ddtrace/internal/datadog/profiling/cmake/FindLibNative.cmake b/ddtrace/internal/datadog/profiling/cmake/FindLibNative.cmake new file mode 100644 index 00000000000..cc1c62b02b4 --- /dev/null +++ b/ddtrace/internal/datadog/profiling/cmake/FindLibNative.cmake @@ -0,0 +1,20 @@ +set(SOURCE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/../../../../../src/native/target/include) +set(SOURCE_LIB_DIR ${CMAKE_SOURCE_DIR}/../../../../../src/native/target/release) + +set(DEST_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR}) +set(DEST_INCLUDE_DIR ${DEST_LIB_DIR}/include) +set(DEST_LIB_OUTPUT_DIR ${DEST_LIB_DIR}) + +file(COPY ${SOURCE_INCLUDE_DIR} DESTINATION ${DEST_LIB_DIR}) + +file(GLOB LIB_FILES "${SOURCE_LIB_DIR}/*.so" "${SOURCE_LIB_DIR}/*.lib" "${SOURCE_LIB_DIR}/*.dll") +file(COPY ${LIB_FILES} DESTINATION ${DEST_LIB_OUTPUT_DIR}) + +# Add imported library target +add_library(_native SHARED IMPORTED) + +set_target_properties(_native PROPERTIES + IMPORTED_LOCATION ${DEST_LIB_OUTPUT_DIR}/lib_native.so + INTERFACE_INCLUDE_DIRECTORIES ${DEST_INCLUDE_DIR} +) + diff --git a/ddtrace/internal/datadog/profiling/crashtracker/CMakeLists.txt b/ddtrace/internal/datadog/profiling/crashtracker/CMakeLists.txt index fe9ec9886f3..395329cd835 100644 --- a/ddtrace/internal/datadog/profiling/crashtracker/CMakeLists.txt +++ b/ddtrace/internal/datadog/profiling/crashtracker/CMakeLists.txt @@ -81,7 +81,7 @@ if(LIB_INSTALL_DIR) endif() # Crashtracker receiver binary -add_executable(crashtracker_exe src/crashtracker.cpp) +add_executable(crashtracker_exe src/crashtracker.cpp python_runtime_stub.c) target_include_directories(crashtracker_exe PRIVATE .. ${Datadog_INCLUDE_DIRS}) # The CRASHTRACKER_EXE_TARGET_NAME should have been set by dd_wrapper diff --git a/ddtrace/internal/datadog/profiling/crashtracker/python_runtime_stub.c b/ddtrace/internal/datadog/profiling/crashtracker/python_runtime_stub.c new file mode 100644 index 00000000000..383b2df5922 --- /dev/null +++ b/ddtrace/internal/datadog/profiling/crashtracker/python_runtime_stub.c @@ -0,0 +1,81 @@ +__attribute__((weak)) void* PyObject_Repr = 0; +__attribute__((weak)) void* PyExc_ValueError = 0; +__attribute__((weak)) void* PyErr_GetRaisedException = 0; +__attribute__((weak)) void* PyLong_FromSsize_t = 0; +__attribute__((weak)) void* PyObject_GenericGetDict = 0; +__attribute__((weak)) void* PyType_GetName = 0; +__attribute__((weak)) void* PyBool_Type = 0; +__attribute__((weak)) void* PyObject_GetAttr = 0; +__attribute__((weak)) void* _Py_TrueStruct = 0; +__attribute__((weak)) void* PyObject_Str = 0; +__attribute__((weak)) void* PyType_FromSpec = 0; +__attribute__((weak)) void* PyType_IsSubtype = 0; +__attribute__((weak)) void* PyDict_SetItem = 0; +__attribute__((weak)) void* PyTuple_New = 0; +__attribute__((weak)) void* PyObject_SetAttr = 0; +__attribute__((weak)) void* PyEval_RestoreThread = 0; +__attribute__((weak)) void* _Py_NoneStruct = 0; +__attribute__((weak)) void* PyExc_AttributeError = 0; +__attribute__((weak)) void* PyException_SetTraceback = 0; +__attribute__((weak)) void* PyList_Append = 0; +__attribute__((weak)) void* PyInterpreterState_GetID = 0; +__attribute__((weak)) void* PyBytes_FromStringAndSize = 0; +__attribute__((weak)) void* PyUnicode_EqualToUTF8AndSize = 0; +__attribute__((weak)) void* PyDict_Next = 0; +__attribute__((weak)) void* PyException_GetTraceback = 0; +__attribute__((weak)) void* PyErr_SetObject = 0; +__attribute__((weak)) void* PyType_GenericAlloc = 0; +__attribute__((weak)) void* PyType_GetModuleName = 0; +__attribute__((weak)) void* PyFloat_FromDouble = 0; +__attribute__((weak)) void* PyFloat_AsDouble = 0; +__attribute__((weak)) void* _Py_Dealloc = 0; +__attribute__((weak)) void* PyList_New = 0; +__attribute__((weak)) void* PyType_GetQualName = 0; +__attribute__((weak)) void* PyBytes_Size = 0; +__attribute__((weak)) void* PyObject_DelItem = 0; +__attribute__((weak)) void* PyErr_PrintEx = 0; +__attribute__((weak)) void* PyDict_New = 0; +__attribute__((weak)) void* PyErr_SetString = 0; +__attribute__((weak)) void* PyExc_Exception = 0; +__attribute__((weak)) void* PyObject_SetItem = 0; +__attribute__((weak)) void* PyUnicode_InternInPlace = 0; +__attribute__((weak)) void* PyErr_SetRaisedException = 0; +__attribute__((weak)) void* PyObject_SetAttrString = 0; +__attribute__((weak)) void* PyGILState_Release = 0; +__attribute__((weak)) void* PyExc_RuntimeError = 0; +__attribute__((weak)) void* PyExc_BaseException = 0; +__attribute__((weak)) void* PyBytes_AsString = 0; +__attribute__((weak)) void* PyObject_GenericSetDict = 0; +__attribute__((weak)) void* PyBaseObject_Type = 0; +__attribute__((weak)) void* PyObject_GetItem = 0; +__attribute__((weak)) void* PyExc_TypeError = 0; +__attribute__((weak)) void* PyEval_SaveThread = 0; +__attribute__((weak)) void* PyObject_GC_UnTrack = 0; +__attribute__((weak)) void* PyErr_WriteUnraisable = 0; +__attribute__((weak)) void* PyModule_Create2 = 0; +__attribute__((weak)) void* PyTraceBack_Print = 0; +__attribute__((weak)) void* PyUnicode_AsEncodedString = 0; +__attribute__((weak)) void* PyErr_NewExceptionWithDoc = 0; +__attribute__((weak)) void* PyFloat_Type = 0; +__attribute__((weak)) void* PyObject_CallNoArgs = 0; +__attribute__((weak)) void* PyExc_SystemError = 0; +__attribute__((weak)) void* PyExc_ImportError = 0; +__attribute__((weak)) void* PyInterpreterState_Get = 0; +__attribute__((weak)) void* PyUnicode_AsUTF8AndSize = 0; +__attribute__((weak)) void* PyGILState_Ensure = 0; +__attribute__((weak)) void* PyException_GetCause = 0; +__attribute__((weak)) void* PyCMethod_New = 0; +__attribute__((weak)) void* PyErr_Print = 0; +__attribute__((weak)) void* PyImport_Import = 0; +__attribute__((weak)) void* PyException_SetCause = 0; +__attribute__((weak)) void* PyErr_GivenExceptionMatches = 0; +__attribute__((weak)) void* Py_IsInitialized = 0; +__attribute__((weak)) void* PyUnicode_FromStringAndSize = 0; +__attribute__((weak)) void* PyErr_NormalizeException = 0; +__attribute__((weak)) void* PyErr_Restore = 0; +__attribute__((weak)) void* PyErr_Fetch = 0; +__attribute__((weak)) void* PyObject_CallObject = 0; +__attribute__((weak)) void* PyMem_Malloc = 0; +__attribute__((weak)) void* PyCFunction_NewEx = 0; +__attribute__((weak)) void* PyObject_Free = 0; + diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/CMakeLists.txt b/ddtrace/internal/datadog/profiling/dd_wrapper/CMakeLists.txt index e6555041c37..2fff639c19a 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/CMakeLists.txt +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/CMakeLists.txt @@ -24,7 +24,8 @@ include(FindInfer) include(CheckSymbolExists) # Load libdatadog -include(FindLibdatadog) +#include(FindLibdatadog) +find_package(LibNative) # Set verbose mode so compiler and args are shown set(CMAKE_VERBOSE_MAKEFILE ON) @@ -82,9 +83,9 @@ add_ddup_config(dd_wrapper) target_include_directories(dd_wrapper PRIVATE include ${Datadog_INCLUDE_DIRS}) if(WIN32) - target_link_libraries(dd_wrapper PRIVATE Datadog::Profiling) + target_link_libraries(dd_wrapper PRIVATE _native) else() - target_link_libraries(dd_wrapper PRIVATE Datadog::Profiling Threads::Threads) + target_link_libraries(dd_wrapper PRIVATE _native Threads::Threads) endif() # Figure out the suffix. Try to approximate the cpython way of doing things. diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/test/CMakeLists.txt b/ddtrace/internal/datadog/profiling/dd_wrapper/test/CMakeLists.txt index 51bc54a799f..d12caee2182 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/test/CMakeLists.txt +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/test/CMakeLists.txt @@ -1,3 +1,4 @@ +include(FetchContent) FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git @@ -12,6 +13,8 @@ FetchContent_MakeAvailable(googletest) include(GoogleTest) include(AnalysisFunc) +find_package(Python3 COMPONENTS Interpreter Development) + if(DO_VALGRIND) find_program( VALGRIND_EXECUTABLE @@ -33,8 +36,10 @@ endif() function(dd_wrapper_add_test name) add_executable(${name} ${ARGN}) target_include_directories(${name} PRIVATE ../include) - target_link_libraries(${name} PRIVATE gmock gtest_main dd_wrapper) + #target_link_libraries(${name} PRIVATE ${Python3_LIBRARIES}) + target_link_libraries(${name} PRIVATE gmock gtest_main dd_wrapper ${Python3_LIBRARIES}) add_ddup_config(${name}) + target_link_options(${name} PRIVATE -Wl,--no-as-needed) gtest_discover_tests( ${name} diff --git a/ddtrace/internal/datadog/profiling/ddup/CMakeLists.txt b/ddtrace/internal/datadog/profiling/ddup/CMakeLists.txt index 15fc0b62b0d..ce368edb2a5 100644 --- a/ddtrace/internal/datadog/profiling/ddup/CMakeLists.txt +++ b/ddtrace/internal/datadog/profiling/ddup/CMakeLists.txt @@ -73,7 +73,9 @@ if(APPLE) elseif(UNIX) set_target_properties(${EXTENSION_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/..") endif() -target_include_directories(${EXTENSION_NAME} PRIVATE ../dd_wrapper/include ${Datadog_INCLUDE_DIRS} +target_include_directories(${EXTENSION_NAME} PRIVATE ../dd_wrapper/include + ../../../../../src/native/target/include/ + ${Datadog_INCLUDE_DIRS} ${Python3_INCLUDE_DIRS}) target_link_libraries(${EXTENSION_NAME} PRIVATE dd_wrapper) diff --git a/setup.py b/setup.py index 17f63f8ec46..abbbe1be4f8 100644 --- a/setup.py +++ b/setup.py @@ -2,6 +2,7 @@ import fnmatch import hashlib import os +from os.path import exists, isfile import platform import re import shutil @@ -42,6 +43,11 @@ from urllib.error import HTTPError from urllib.request import urlretrieve +# workaround for ModuleNotFound. +sys.path.insert(0, str(Path(__file__).parent.resolve())) + +from build_libnative import build_crate, clean_crate + HERE = Path(__file__).resolve().parent @@ -74,6 +80,7 @@ DDUP_DIR = HERE / "ddtrace" / "internal" / "datadog" / "profiling" / "ddup" CRASHTRACKER_DIR = HERE / "ddtrace" / "internal" / "datadog" / "profiling" / "crashtracker" STACK_V2_DIR = HERE / "ddtrace" / "internal" / "datadog" / "profiling" / "stack_v2" +NATIVE_CRATE = HERE / "src" / "native" BUILD_PROFILING_NATIVE_TESTS = os.getenv("DD_PROFILING_NATIVE_TESTS", "0").lower() in ("1", "yes", "on", "true") @@ -306,12 +313,27 @@ def remove_artifacts(): shutil.rmtree(LIBDDWAF_DOWNLOAD_DIR, True) shutil.rmtree(IAST_DIR / "*.so", True) + @staticmethod + def remove_rust(): + clean_crate(NATIVE_CRATE) + def run(self): + CleanLibraries.remove_rust() CleanLibraries.remove_artifacts() CleanCommand.run(self) -class CMakeBuild(build_ext): +class CustomBuildExt(build_ext): + def run(self): + self.build_rust() + super().run() + for ext in self.extensions: + self.build_extension(ext) + + def build_rust(self): + + build_crate(NATIVE_CRATE, True, native_features) + @staticmethod def try_strip_symbols(so_file): if CURRENT_OS == "Linux" and shutil.which("strip") is not None: @@ -605,6 +627,7 @@ def get_exts_for(name): if not IS_PYSTON: + native_features = [] ext_modules = [ Extension( "ddtrace.profiling.collector._memalloc", @@ -662,6 +685,7 @@ def get_exts_for(name): ) if (CURRENT_OS in ("Linux", "Darwin") and is_64_bit_python()) or CURRENT_OS == "Windows": + native_features.append("profiling") ext_modules.append( CMakeExtension( "ddtrace.internal.datadog.profiling.ddup._ddup", @@ -690,6 +714,7 @@ def get_exts_for(name): else: ext_modules = [] + native_feautes = [] interpose_sccache() setup( @@ -709,7 +734,7 @@ def get_exts_for(name): # enum34 is an enum backport for earlier versions of python # funcsigs backport required for vendored debtcollector cmdclass={ - "build_ext": CMakeBuild, + "build_ext": CustomBuildExt, "build_py": LibraryDownloader, "build_rust": build_rust, "clean": CleanLibraries, @@ -780,15 +805,15 @@ def get_exts_for(name): compiler_directives={"language_level": "3"}, ) + filter_extensions(get_exts_for("psutil")), - rust_extensions=filter_extensions( - [ - RustExtension( - "ddtrace.internal.native._native", - path="src/native/Cargo.toml", - py_limited_api="auto", - binding=Binding.PyO3, - debug=os.getenv("_DD_RUSTC_DEBUG") == "1", - ), - ] - ), + # rust_extensions=filter_extensions( + # [ + # RustExtension( + # "ddtrace.internal.native._native", + # path="src/native/Cargo.toml", + # py_limited_api="auto", + # binding=Binding.PyO3, + # debug=os.getenv("_DD_RUSTC_DEBUG") == "1", + # ), + # ] + # ), ) diff --git a/src/native/.cargo/config.toml b/src/native/.cargo/config.toml new file mode 100644 index 00000000000..eb38b18a240 --- /dev/null +++ b/src/native/.cargo/config.toml @@ -0,0 +1,8 @@ +[build] +rustflags = ["-C", "relocation-model=pic"] + +[target.'cfg(target_os = "windows")'] +rustflags = ["-C", "relocation-model=pic", "-C", "target-feature=+crt-static"] + +[target.'cfg(all(target_os = "linux", target_env = "musl"))'] +rustflags = ["-C", "relocation-model=pic", "-C", "target-feature=+crt-static"] diff --git a/src/native/Cargo.lock b/src/native/Cargo.lock index 2d2baa3b734..031170e71ec 100644 --- a/src/native/Cargo.lock +++ b/src/native/Cargo.lock @@ -26,6 +26,77 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +dependencies = [ + "anstyle", + "once_cell", + "windows-sys 0.59.0", +] + [[package]] name = "anyhow" version = "1.0.97" @@ -73,9 +144,15 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets", + "windows-targets 0.52.6", ] +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bindgen" version = "0.69.5" @@ -95,7 +172,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn", + "syn 2.0.100", "which", ] @@ -105,6 +182,42 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +[[package]] +name = "bitmaps" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" + +[[package]] +name = "blazesym" +version = "0.2.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb42921128af76c2ced7c723edfb0411695a96d2bfcdda21c3a6543f98b715a" +dependencies = [ + "cpp_demangle", + "gimli", + "libc", + "memmap2", + "miniz_oxide", + "rustc-demangle", +] + +[[package]] +name = "build_common" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "cbindgen", + "serde", + "serde_json", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + [[package]] name = "byteorder" version = "1.5.0" @@ -117,6 +230,25 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.100", + "tempfile", + "toml", +] + [[package]] name = "cc" version = "1.2.17" @@ -149,6 +281,21 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chrono" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + [[package]] name = "clang-sys" version = "1.8.1" @@ -160,6 +307,33 @@ dependencies = [ "libloading", ] +[[package]] +name = "clap" +version = "4.5.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.5.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + [[package]] name = "cmake" version = "0.1.54" @@ -169,6 +343,28 @@ dependencies = [ "cc", ] +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "common-multipart-rfc7578" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f08d53b5e0c302c5830cfa7511ba0edc3f241c691a95c0d184dfb761e11a6cc2" +dependencies = [ + "bytes", + "futures-core", + "futures-util", + "http", + "mime", + "mime_guess", + "rand", + "thiserror", +] + [[package]] name = "const_format" version = "0.2.34" @@ -205,6 +401,89 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpp_demangle" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "datadog-alloc" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "allocator-api2", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "datadog-crashtracker" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "anyhow", + "backtrace", + "blazesym", + "cc", + "chrono", + "ddcommon", + "ddtelemetry", + "http", + "libc", + "nix", + "num-derive", + "num-traits", + "os_info", + "page_size", + "portable-atomic", + "rand", + "schemars", + "serde", + "serde_json", + "tokio", + "uuid", + "windows", +] + +[[package]] +name = "datadog-crashtracker-ffi" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "anyhow", + "build_common", + "datadog-crashtracker", + "ddcommon", + "ddcommon-ffi", + "function_name", + "libc", + "log", + "serde", + "serde_json", + "symbolic-common", + "symbolic-demangle", + "windows", +] + [[package]] name = "datadog-ddsketch" version = "18.0.0" @@ -223,6 +502,56 @@ dependencies = [ "serde_yaml", ] +[[package]] +name = "datadog-profiling" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "anyhow", + "bitmaps", + "byteorder", + "bytes", + "chrono", + "datadog-alloc", + "ddcommon", + "derivative", + "futures", + "http", + "http-body-util", + "hyper", + "hyper-multipart-rfc7578", + "indexmap", + "lz4_flex", + "mime", + "prost", + "rustc-hash", + "serde", + "serde_json", + "target-triple", + "tokio", + "tokio-util", +] + +[[package]] +name = "datadog-profiling-ffi" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "anyhow", + "build_common", + "datadog-crashtracker-ffi", + "datadog-profiling", + "ddcommon", + "ddcommon-ffi", + "function_name", + "futures", + "http-body-util", + "hyper", + "libc", + "serde_json", + "tokio-util", +] + [[package]] name = "ddcommon" version = "18.0.0" @@ -260,15 +589,75 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "ddcommon-ffi" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "anyhow", + "build_common", + "chrono", + "crossbeam-queue", + "ddcommon", + "hyper", + "serde", +] + +[[package]] +name = "ddtelemetry" +version = "18.0.0" +source = "git+https://github.com/DataDog/libdatadog?rev=v18.0.0#60583218a8de6768f67d04fcd5bc6443f67f516b" +dependencies = [ + "anyhow", + "base64", + "datadog-ddsketch", + "ddcommon", + "futures", + "hashbrown", + "http", + "http-body-util", + "hyper", + "hyper-util", + "serde", + "serde_json", + "sys-info", + "tokio", + "tokio-util", + "tracing", + "uuid", +] + [[package]] name = "ddtrace-native" version = "0.1.0" dependencies = [ + "build_common", "datadog-ddsketch", "datadog-library-config", + "datadog-profiling-ffi", "ddcommon", "pyo3", - "pyo3-build-config", + "pyo3-build-config 0.21.2", +] + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "uuid", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -277,6 +666,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + [[package]] name = "either" version = "1.15.0" @@ -299,18 +694,51 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "fs_extra" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "function_name" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1ab577a896d09940b5fe12ec5ae71f9d8211fff62c919c03a3750a9901e98a7" +dependencies = [ + "function_name-proc-macro", +] + +[[package]] +name = "function_name-proc-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673464e1e314dd67a0fd9544abc99e8eb28d0c7e3b69b033bcff9b2d00b87333" + [[package]] name = "futures" version = "0.3.31" @@ -367,7 +795,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.100", ] [[package]] @@ -408,14 +836,31 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] -name = "gimli" -version = "0.31.1" +name = "getrandom" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] [[package]] name = "glob" @@ -428,6 +873,17 @@ name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "heck" @@ -509,6 +965,19 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-multipart-rfc7578" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a60fb748074dd040c8d05d8a002725200fb594e0ffcfa0b83fb8f64616b50267" +dependencies = [ + "bytes", + "common-multipart-rfc7578", + "futures-core", + "http", + "hyper", +] + [[package]] name = "hyper-rustls" version = "0.27.5" @@ -546,6 +1015,30 @@ dependencies = [ "tracing", ] +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.61.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "indexmap" version = "2.8.0" @@ -562,6 +1055,12 @@ version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.10.5" @@ -595,6 +1094,16 @@ dependencies = [ "libc", ] +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -620,7 +1129,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -629,12 +1138,27 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "log" version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "lz4_flex" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a8cbbb2831780bc3b9c15a41f5b49222ef756b6730a95f3decfdd15903eb5a3" +dependencies = [ + "twox-hash", +] + [[package]] name = "memchr" version = "2.7.4" @@ -647,7 +1171,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix", + "rustix 0.38.44", +] + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", ] [[package]] @@ -659,6 +1192,22 @@ dependencies = [ "autocfg", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -672,6 +1221,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -681,10 +1231,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] +[[package]] +name = "msvc-demangler" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4c25a3bb7d880e8eceab4822f3141ad0700d20f025991c1f03bd3d00219a5fc" +dependencies = [ + "bitflags", +] + [[package]] name = "nix" version = "0.29.0" @@ -695,6 +1254,7 @@ dependencies = [ "cfg-if", "cfg_aliases", "libc", + "memoffset", ] [[package]] @@ -707,6 +1267,17 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -727,9 +1298,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.2" +version = "1.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2806eaa3524762875e21c3dcd057bc4b7bfa01ce4da8d46be1cd43649e1cc6b" +checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" [[package]] name = "openssl-probe" @@ -737,6 +1308,27 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "os_info" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a604e53c24761286860eba4e2c8b23a0161526476b1de520139d69cdb85a6b5" +dependencies = [ + "log", + "serde", + "windows-sys 0.52.0", +] + +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "paste" version = "1.0.15" @@ -760,7 +1352,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.100", ] [[package]] @@ -780,6 +1372,9 @@ name = "portable-atomic" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +dependencies = [ + "serde", +] [[package]] name = "ppv-lite86" @@ -797,7 +1392,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.100", ] [[package]] @@ -829,14 +1424,14 @@ dependencies = [ "itertools 0.10.5", "proc-macro2", "quote", - "syn", + "syn 2.0.100", ] [[package]] name = "pyo3" -version = "0.24.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f1c6c3591120564d64db2261bec5f910ae454f01def849b9c22835a84695e86" +checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219" dependencies = [ "cfg-if", "indoc", @@ -844,7 +1439,7 @@ dependencies = [ "memoffset", "once_cell", "portable-atomic", - "pyo3-build-config", + "pyo3-build-config 0.24.2", "pyo3-ffi", "pyo3-macros", "unindent", @@ -852,47 +1447,57 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.24.0" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50" +dependencies = [ + "once_cell", + "target-lexicon 0.12.16", +] + +[[package]] +name = "pyo3-build-config" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b6c2b34cf71427ea37c7001aefbaeb85886a074795e35f161f5aecc7620a7a" +checksum = "99636d423fa2ca130fa5acde3059308006d46f98caac629418e53f7ebb1e9999" dependencies = [ "once_cell", - "target-lexicon", + "target-lexicon 0.13.2", ] [[package]] name = "pyo3-ffi" -version = "0.24.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5507651906a46432cdda02cd02dd0319f6064f1374c9147c45b978621d2c3a9c" +checksum = "78f9cf92ba9c409279bc3305b5409d90db2d2c22392d443a87df3a1adad59e33" dependencies = [ "libc", - "pyo3-build-config", + "pyo3-build-config 0.24.2", ] [[package]] name = "pyo3-macros" -version = "0.24.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0d394b5b4fd8d97d48336bb0dd2aebabad39f1d294edd6bcd2cccf2eefe6f42" +checksum = "0b999cb1a6ce21f9a6b147dcf1be9ffedf02e0043aec74dc390f3007047cecd9" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn", + "syn 2.0.100", ] [[package]] name = "pyo3-macros-backend" -version = "0.24.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd72da09cfa943b1080f621f024d2ef7e2773df7badd51aa30a2be1f8caa7c8e" +checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", - "pyo3-build-config", + "pyo3-build-config 0.24.2", "quote", - "syn", + "syn 2.0.100", ] [[package]] @@ -904,6 +1509,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "rand" version = "0.8.5" @@ -931,7 +1542,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -971,7 +1582,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "untrusted", "windows-sys 0.52.0", @@ -1020,7 +1631,20 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] @@ -1069,6 +1693,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + [[package]] name = "ryu" version = "1.0.20" @@ -1084,6 +1714,30 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.100", +] + [[package]] name = "security-framework" version = "3.2.0" @@ -1124,7 +1778,39 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.100", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", ] [[package]] @@ -1146,6 +1832,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "slab" version = "0.4.9" @@ -1171,18 +1863,65 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "symbolic-common" +version = "12.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eae23242dffa2e8e66c0e20f4ca1e28391f64e361db1e921a209c9bc70ec3a" +dependencies = [ + "debugid", + "memmap2", + "stable_deref_trait", + "uuid", +] + +[[package]] +name = "symbolic-demangle" +version = "12.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "153faacda0d58dc1eb3e8bbd5dab998041e95bd7f4ab2caeeadc89410617f144" +dependencies = [ + "cpp_demangle", + "msvc-demangler", + "rustc-demangle", + "symbolic-common", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.100" @@ -1194,12 +1933,67 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sys-info" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + [[package]] name = "target-lexicon" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" +[[package]] +name = "target-triple" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" + +[[package]] +name = "tempfile" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +dependencies = [ + "fastrand", + "getrandom 0.3.2", + "once_cell", + "rustix 1.0.5", + "windows-sys 0.59.0", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "tokio" version = "1.44.1" @@ -1207,6 +2001,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" dependencies = [ "backtrace", + "bytes", "libc", "mio", "pin-project-lite", @@ -1223,7 +2018,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.100", ] [[package]] @@ -1236,6 +2031,53 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-util" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "tower-service" version = "0.3.3" @@ -1267,6 +2109,22 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + [[package]] name = "unicode-ident" version = "1.0.18" @@ -1297,6 +2155,22 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" +dependencies = [ + "getrandom 0.3.2", + "serde", +] + [[package]] name = "want" version = "0.3.1" @@ -1312,6 +2186,73 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + [[package]] name = "which" version = "4.4.2" @@ -1321,7 +2262,131 @@ dependencies = [ "either", "home", "once_cell", - "rustix", + "rustix 0.38.44", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1" +dependencies = [ + "windows-core 0.59.0", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-core" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" +dependencies = [ + "windows-implement 0.59.0", + "windows-interface", + "windows-result", + "windows-strings 0.3.1", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement 0.60.0", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings 0.4.0", +] + +[[package]] +name = "windows-implement" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", ] [[package]] @@ -1330,7 +2395,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -1339,7 +2404,7 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -1348,14 +2413,30 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", ] [[package]] @@ -1364,48 +2445,114 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + [[package]] name = "zerocopy" version = "0.8.24" @@ -1423,7 +2570,7 @@ checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.100", ] [[package]] diff --git a/src/native/Cargo.toml b/src/native/Cargo.toml index 26e36dbf96d..2856e617100 100644 --- a/src/native/Cargo.toml +++ b/src/native/Cargo.toml @@ -2,21 +2,33 @@ name = "ddtrace-native" version = "0.1.0" edition = "2021" +resolver = "2" [profile.release] -lto = true strip = "debuginfo" -opt-level = 3 +codegen-units = 1 +lto = true +opt-level = "s" + +[features] +profiling = ["dep:datadog-profiling-ffi"] [dependencies] -pyo3 = { version = "0.24", features = ["extension-module"] } +pyo3 = { version = "0.24", features = ["extension-module" ] } datadog-ddsketch = { git = "https://github.com/DataDog/libdatadog", rev = "v18.0.0" } datadog-library-config = { git = "https://github.com/DataDog/libdatadog", rev = "v18.0.0" } ddcommon = { git = "https://github.com/DataDog/libdatadog", rev = "v18.0.0" } +datadog-profiling-ffi = { git = "https://github.com/DataDog/libdatadog",rev = "v18.0.0", optional = true, features = [ + "cbindgen", + "crashtracker-collector", + "crashtracker-receiver", + "demangler" +]} -[build-dependencies] -pyo3-build-config = "0.24" +[build-dependencies] +pyo3-build-config = "0.21.2" +build_common = { git = "https://github.com/DataDog/libdatadog", rev = "v18.0.0", features = ["cbindgen"] } [lib] name = "_native" diff --git a/src/native/lib.rs b/src/native/lib.rs index 64396a867a8..891b3af2bbb 100644 --- a/src/native/lib.rs +++ b/src/native/lib.rs @@ -1,6 +1,7 @@ +#[cfg(feature = "profiling")] +pub use datadog_profiling_ffi::*; mod ddsketch; mod library_config; - use pyo3::prelude::*; use pyo3::wrap_pyfunction;