See https://functiontrace.com/ for end user instructions and demos. Functiontrace is implemented as two components: 1. A server, written in Rust, which aggregates trace information from running processes 2. A python module, written in C and Python, which hooks in to the various traced events. # Development Info ## Developing with Nix With Nix, we use `devenv` to have a standard test and development environment. The standard development loop is to setup that environment using `devenv shell`. ```sh devenv shell just test ``` You can test small changes inside an existing `devenv shell`, including working with most of our supported Python variants. To rebuild the Python module, you need to tell Nix to rebuild by restarting your `devenv shell`. ## Developing with standard Python ### Building the server ``` $ just build-server ``` ### Building the python module ``` $ just build-python $ python setup.py bdist_wheel --dist-dir ./dist # You may also want to install it $ pip install py-functiontrace/dist/*.whl ``` ## Testing You must have `functiontrace` installed, and have `functiontrace-server` in your `$PATH`. The Nix development path should do this for you. ``` # The test script will use the server built in target/release $ just test ```