See https://functiontrace.com/ for end user instructions and demos.
Functiontrace is implemented as two components:
- A server, written in Rust, which aggregates trace information from running processes
- A python module, written in Rust and Python (with some legacy C), 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
.
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
.
Note: If you've made changes to the Rust code, you likely need to pass
--refresh-eval-cache
since devenv
doesn't seem to detect this case.
Developing with standard Python
Building the server
$ just build-server
Building the python module
$ uv build
$ python setup.py bdist_wheel --dist-dir ./dist
# You may also want to install it
$ uv 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