See Good First Issue for open good first issues.
See https://github.com/alipay/fury/issues for open issues.
cd python
pytest -v -s .
cd java
mvn -T10 clean test
Run c++ tests:
bazel test $(bazel query //...)
cd go/fury
# run tests
go test -v
# run xlang tests
go test -v fury_xlang_test.go
Run all checks: bash ci/format.sh --all
docker run --rm -v $(pwd):/github/workspace ghcr.io/korandoru/hawkeye-native:v3 format
cd java
# code format
mvn spotless:apply
# code format check
mvn spotless:check
mvn checkstyle:check
cd python
# install dependencies fro styling
pip install black==22.1.0 flake8==3.9.1 flake8-quotes flake8-bugbear
# format python code
black pyfury
git ls-files -- '*.cc' '*.h' | xargs -P 5 clang-format -i
cd go/fury
gofmt -s -w .
Fury supports dump jit generated code into local file for better debug by configuring environment variables:
FURY_CODE_DIR
:The directory for fury to dump generated code. Set to empty by default to skip dump code.ENABLE_FURY_GENERATED_CLASS_UNIQUE_ID
: Append an unique id for dynamically generated files by default to avoid serializer collision for different classes with same name. Set this tofalse
to keep serializer name same for multiple execution orAOT
codegen.
By using those environment variables, we can generate code to source directory and debug the generated code in next run.
cd python
python setup.py develop
-
cython: use
cython --cplus -a pyfury/_serialization.pyx
to produce an annotated html file of the source code. Then we can analyze interaction between Python objects and Python’s C-API. -
Debug https://cython.readthedocs.io/en/latest/src/userguide/debugging.html
FURY_DEBUG=true python setup.py build_ext --inplace
# For linux
cygdb build
See cpp_debug doc.
Enable core dump on Macos Monterey 12.1
/usr/libexec/PlistBuddy -c "Add :com.apple.security.get-task-allow bool true" tmp.entitlements
codesign -s - -f --entitlements tmp.entitlements /Users/chaokunyang/anaconda3/envs/py3.8/bin/python
ulimit -c unlimited
python fury_serializer.py
ls -al /cores
# Dtrace
sudo dtrace -x ustackframes=100 -n 'profile-99 /pid == 73485 && arg1/ { @[ustack()] = count(); } tick-60s { exit(0); }' -o out.stack
sudo stackcollapse.pl out.stack > out.folded
sudo flamegraph.pl out.folded > out.svg
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
Fury website are static pages hosted by github pages under https://github.com/fury-project/fury-sites.
All updates about docs under guide and benchmarks will be synced to fury-sites automatically.
If you want write a blog, or update other contents about fury website, please submit PR to fury-sites.