Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
c131283
Updating the binding to support MMTk with upstream Julia (#180)
udesou Oct 18, 2024
6e4d5dd
Updating object scanning
udesou Oct 22, 2024
3931827
Updating julia_version
udesou Oct 22, 2024
ea00a12
Fixing typo
udesou Oct 23, 2024
df74369
Updating julia_version
udesou Oct 23, 2024
62e0450
Replacing loop over instructions by loop over uses (#189)
udesou Nov 28, 2024
ced04fc
Updating `julia_version` (#198)
udesou Dec 6, 2024
d5090b1
Updating binding code to match VM (#201)
udesou Dec 10, 2024
25dc865
Release `v0.29.0` (#206)
udesou Dec 12, 2024
46b0116
Adding Makefile support (#208)
udesou Dec 17, 2024
ae161a0
Removing CI information
udesou Dec 17, 2024
05fb25c
Removing code about getting info about Julia project
udesou Dec 18, 2024
102ef81
Bump version to v0.30 (#210)
qinsoon Dec 20, 2024
e2eeef0
Checking in bindgen generated file; do not run bindgen if file exists
udesou Jan 5, 2025
73e9c84
Move to Rust 1.83 (#211)
qinsoon Jan 6, 2025
3b3b735
Minor Makefile fix
udesou Jan 6, 2025
b69acf5
Adding License files (#213)
udesou Jan 6, 2025
fd0e7e8
Updating `README`, and adding target to regen `julia_types.rs` (#215)
udesou Jan 8, 2025
f07d66a
Adding our own CI (#216)
udesou Jan 17, 2025
9b59bb5
Adding print versioninfo and cleaning up build script for CI (#218)
udesou Jan 17, 2025
78dba23
Minor fix README.md (#219)
udesou Jan 18, 2025
2b52b85
Adding info about turning off BinaryBuilder for the binding (#220)
udesou Jan 23, 2025
2310eba
Adding stock gc trigger and set it as default (#222)
udesou Jan 23, 2025
c9e046b
Porting "Abort for GC thread panic" to `master` (#223)
udesou Jan 23, 2025
1f3b748
Updating julia_version
udesou Jan 29, 2025
e8a468a
Merge branch 'master' into merging-master-into-dev
udesou Jan 29, 2025
679c8c4
Skipping Distributed tests
udesou Jan 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,14 @@ pull_request_rules:
assignees:
- "{{ author }}"
label_conflicts: backport-conflicts
- name: backport patches to dev
conditions:
- base=master
- label=backport-dev
actions:
backport:
branches:
- dev
assignees:
- "{{ author }}"
label_conflicts: backport-conflicts
3 changes: 2 additions & 1 deletion .github/scripts/Make.user
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
FORCE_ASSERTIONS=1
LLVM_ASSERTIONS=1
LLVM_ASSERTIONS=1
USE_BINARYBUILDER_MMTK_JULIA=0
13 changes: 8 additions & 5 deletions .github/scripts/ci-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,18 @@ fi
plan_feature=${plan,,}
moving_feature=${is_moving,,}

cd $MMTK_JULIA_DIR/mmtk
cargo build --features $plan_feature,$moving_feature $build_args
if [ "$is_moving" == "moving" ]; then
MOVING=1
else
MOVING=0
fi

cd $JULIA_PATH

# Clean first
make cleanall
# Build
# This will build the binding in MMTK_JULIA_DIR (defined in common.sh), and link it
# when building Julia, instead of using the set version defined in Julia itself
cp $BINDING_PATH/.github/scripts/Make.user $JULIA_PATH/
MMTK_PLAN=$plan MMTK_BUILD=$build_type make
MMTK_MOVING=$MOVING MMTK_PLAN=$plan MMTK_BUILD=$build_type make
# Run hello world
$JULIA_PATH/julia $HELLO_WORLD_JL
6 changes: 4 additions & 2 deletions .github/scripts/ci-checkout.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ set -ex

. $(dirname "$0")/common.sh

JULIA_URL=`cargo read-manifest --manifest-path=$BINDING_PATH/mmtk/Cargo.toml | python -c 'import json,sys; print(json.load(sys.stdin)["metadata"]["julia"]["julia_repo"])'`
JULIA_VERSION=`cargo read-manifest --manifest-path=$BINDING_PATH/mmtk/Cargo.toml | python -c 'import json,sys; print(json.load(sys.stdin)["metadata"]["julia"]["julia_version"])'`
# We may later allow setting up a specific version of Julia using comments
# in the PR, but for now we just use the latest master from JuliaLang
JULIA_URL=https://github.com/$1.git
JULIA_VERSION=$2

rm -rf $JULIA_PATH
git clone $JULIA_URL $JULIA_PATH
Expand Down
10 changes: 10 additions & 0 deletions .github/scripts/ci-ffi.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
set -ex

. $(dirname "$0")/common.sh

pushd $MMTK_JULIA_DIR

make regen-bindgen-ffi

popd

7 changes: 2 additions & 5 deletions .github/scripts/ci-style.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@ export RUSTFLAGS="-D warnings"

pushd $BINDING_PATH/mmtk

# Currently we have many warnings from clippy, and we have PRs sitting there to be merged.
# I am concerned that enabling this will cause merge conflicts everywhere.
# However, we should enable this as soon as we can.
# cargo clippy
# cargo clippy --release
cargo clippy
cargo clippy --release

cargo fmt -- --check
popd
2 changes: 1 addition & 1 deletion .github/scripts/ci-test-LinearAlgebra.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ num_workers=2
export JULIA_TEST_MAXRSS_MB=$((total_mem_restricted/ num_workers))

echo "-> Run single threaded"
ci_run_jl_test "LinearAlgebra" 2
ci_run_jl_test "LinearAlgebra" 2
2 changes: 0 additions & 2 deletions .github/scripts/ci-test-gc-core.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,3 @@ do
ci_run_jl_test $test
fi
done


2 changes: 2 additions & 0 deletions .github/scripts/ci-test-stdlib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ declare -a tests_to_skip=(
"SparseArrays"
# Running LinearAlgebra in a separate job
"LinearAlgebra"
# Skipping distributed tests because of https://github.com/JuliaLang/Distributed.jl/issues/132
"Distributed"
)
# These tests need multiple workers.
declare -a tests_with_multi_workers=(
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/ci-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ cd $cur

# Use release build to run tests
cd $cur
./ci-test-gc-core.sh
./ci-test-gc-core.sh
78 changes: 73 additions & 5 deletions .github/workflows/binding-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ on:
moving:
required: true
type: string
julia_repo:
required: true
type: string
julia_ref:
required: true
type: string

jobs:
build-debug:
Expand All @@ -17,26 +23,76 @@ jobs:
- uses: actions/checkout@v2
- name: Setup environments
run: |
./.github/scripts/ci-checkout.sh
./.github/scripts/ci-checkout.sh ${{ inputs.julia_repo }} ${{ inputs.julia_ref }}
./.github/scripts/ci-setup.sh
# removing these as they cause a conflict within bindgen
sudo rm -rf /usr/lib/llvm-14
sudo rm -rf /usr/lib/llvm-14
sudo rm -rf /usr/lib/llvm-13
- name: Build Julia (Debug)
run: |
./.github/scripts/ci-build.sh debug ${{ inputs.gc_plan }} ${{ inputs.moving }}
- name: Print Julia version info
run: |
JULIA_PATH=$(realpath $(dirname "$0"))/../mmtk-julia/mmtk-julia/vm/julia
$JULIA_PATH/julia --project=. -e "using InteractiveUtils; versioninfo()"
- name: Style check
run: |
./.github/scripts/ci-style.sh

build-debug-regen-ffi:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- name: Setup environments
run: |
./.github/scripts/ci-checkout.sh ${{ inputs.julia_repo }} ${{ inputs.julia_ref }}
./.github/scripts/ci-setup.sh
# removing these as they cause a conflict within bindgen
sudo rm -rf /usr/lib/llvm-14
sudo rm -rf /usr/lib/llvm-13
- name: Check FFI bindings
run: |
./.github/scripts/ci-ffi.sh
- name: Build Julia (Debug)
run: |
./.github/scripts/ci-build.sh debug ${{ inputs.gc_plan }} ${{ inputs.moving }}
- name: Print Julia version info
run: |
JULIA_PATH=$(realpath $(dirname "$0"))/../mmtk-julia/mmtk-julia/vm/julia
$JULIA_PATH/julia --project=. -e "using InteractiveUtils; versioninfo()"
- name: Style check
run: |
./.github/scripts/ci-style.sh

check-ffi:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- name: Setup environments
run: |
./.github/scripts/ci-checkout.sh ${{ inputs.julia_repo }} ${{ inputs.julia_ref }}
./.github/scripts/ci-setup.sh
# removing these as they cause a conflict within bindgen
sudo rm -rf /usr/lib/llvm-14
sudo rm -rf /usr/lib/llvm-13
- name: Regenerate FFI bindings
run: |
./.github/scripts/ci-ffi.sh
- run: |
MMTK_JULIA_DIR=$(realpath $(dirname "$0"))/../mmtk-julia/mmtk-julia
if ! git diff --exit-code $MMTK_JULIA_DIR/mmtk/src/julia_types.rs; then
echo "Rust FFI bindings in \`julia_types.rs\` are outdated. Run \`make regen-bindgen-ffi\` from the mmtk-julia directory and make sure to include the updated file in the pull request."
exit 1
fi

build-test-other:
runs-on: ubuntu-22.04
timeout-minutes: 360
steps:
- uses: actions/checkout@v2
- name: Setup environments
run: |
./.github/scripts/ci-checkout.sh
./.github/scripts/ci-checkout.sh ${{ inputs.julia_repo }} ${{ inputs.julia_ref }}
./.github/scripts/ci-setup.sh
# removing these as they cause a conflict within bindgen
sudo rm -rf /usr/lib/llvm-14
Expand All @@ -47,6 +103,10 @@ jobs:
- name: Build Julia (Release)
run: |
./.github/scripts/ci-build.sh release ${{ inputs.gc_plan }} ${{ inputs.moving }}
- name: Print Julia version info
run: |
JULIA_PATH=$(realpath $(dirname "$0"))/../mmtk-julia/mmtk-julia/vm/julia
$JULIA_PATH/julia --project=. -e "using InteractiveUtils; versioninfo()"
- name: Test Julia
run: |
./.github/scripts/ci-test-other.sh
Expand All @@ -58,7 +118,7 @@ jobs:
- uses: actions/checkout@v2
- name: Setup environments
run: |
./.github/scripts/ci-checkout.sh
./.github/scripts/ci-checkout.sh ${{ inputs.julia_repo }} ${{ inputs.julia_ref }}
./.github/scripts/ci-setup.sh
# removing these as they cause a conflict within bindgen
sudo rm -rf /usr/lib/llvm-14
Expand All @@ -69,6 +129,10 @@ jobs:
- name: Build Julia (Release)
run: |
./.github/scripts/ci-build.sh release ${{ inputs.gc_plan }} ${{ inputs.moving }}
- name: Print Julia version info
run: |
JULIA_PATH=$(realpath $(dirname "$0"))/../mmtk-julia/mmtk-julia/vm/julia
$JULIA_PATH/julia --project=. -e "using InteractiveUtils; versioninfo()"
- name: Test Julia
run: |
./.github/scripts/ci-test-stdlib.sh
Expand All @@ -80,14 +144,18 @@ jobs:
- uses: actions/checkout@v2
- name: Setup environments
run: |
./.github/scripts/ci-checkout.sh
./.github/scripts/ci-checkout.sh ${{ inputs.julia_repo }} ${{ inputs.julia_ref }}
./.github/scripts/ci-setup.sh
# removing these as they cause a conflict within bindgen
sudo rm -rf /usr/lib/llvm-14
sudo rm -rf /usr/lib/llvm-13
- name: Build Julia (Release)
run: |
./.github/scripts/ci-build.sh release ${{ inputs.gc_plan }} ${{ inputs.moving }}
- name: Print Julia version info
run: |
JULIA_PATH=$(realpath $(dirname "$0"))/../mmtk-julia/mmtk-julia/vm/julia
$JULIA_PATH/julia --project=. -e "using InteractiveUtils; versioninfo()"
- name: Test Julia
run: |
./.github/scripts/ci-test-LinearAlgebra.sh
25 changes: 24 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,28 @@ concurrency:
cancel-in-progress: true

jobs:
julia-version:
runs-on: ubuntu-latest
env:
JULIA_REPO_DEFAULT: JuliaLang/julia
JULIA_REF_DEFAULT: master
outputs:
julia_repo: ${{ steps.print.outputs.julia_repo }}
julia_ref: ${{ steps.print.outputs.julia_ref }}
steps:
- name: Check Julia revisions
uses: qinsoon/[email protected]
with:
pull_request: ${{ github.event.pull_request.number }}
token: ${{ secrets.GITHUB_TOKEN }}
default_env: 'JULIA_REPO=${{ env.JULIA_REPO_DEFAULT }},JULIA_REF=${{ env.JULIA_REF_DEFAULT }}'
- id: print
run: |
echo "julia_repo=${{ env.JULIA_REPO }}" >> $GITHUB_OUTPUT
echo "julia_ref=${{ env.JULIA_REF }}" >> $GITHUB_OUTPUT

binding-tests:
needs: julia-version
strategy:
fail-fast: false
matrix:
Expand All @@ -23,4 +44,6 @@ jobs:
uses: ./.github/workflows/binding-tests.yml
with:
gc_plan: ${{ matrix.gc_plan }}
moving: ${{ matrix.moving }}
moving: ${{ matrix.moving }}
julia_repo: ${{ needs.julia-version.outputs.julia_repo }}
julia_ref: ${{ needs.julia-version.outputs.julia_ref }}
Loading