[GSoC] Use a compact hash table for RubyHash instead of the buckets strategy #3873
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# NOTE: This is only a small subset of the CI which runs on GitHub Actions. | |
# Most of the CI is defined in ci.jsonnet. | |
name: CI | |
on: [push, pull_request] | |
permissions: | |
contents: read | |
jobs: | |
lint: | |
name: lint | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 # Necessary for jt check_abi | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Restore ~/.mx/cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/.mx/cache | |
key: mx-cache-lint-${{ runner.os }}-${{ hashFiles('common.json') }} | |
- uses: ./.github/actions/setup-jvmci-graal | |
- run: jt install eclipse | |
- name: Install RuboCop | |
run: gem install --no-document rubocop:0.66.0 | |
- run: jt lint | |
build: | |
name: build jvm | |
runs-on: ubuntu-20.04 | |
defaults: | |
run: | |
# Ensure all build files are in build/. | |
# Test jobs don't have build/ to ensure nothing uses the build files. | |
working-directory: build | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v2 | |
with: | |
path: build | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: build | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Restore ~/.mx/cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/.mx/cache | |
key: mx-cache-build-${{ runner.os }}-${{ hashFiles('build/common.json') }} | |
- uses: ./build/.github/actions/setup-jvmci-graal | |
- name: Build TruffleRuby | |
run: jt build | |
- name: Create archive | |
run: | | |
cd $(dirname $(jt graalvm-home)) | |
mv $(basename $(jt graalvm-home)) truffleruby-jvm | |
tar cf ${{ github.workspace }}/truffleruby-jvm.tar truffleruby-jvm | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: truffleruby-jvm | |
path: ${{ github.workspace }}/truffleruby-jvm.tar | |
build_native: | |
name: build native | |
runs-on: ubuntu-20.04 | |
defaults: | |
run: | |
# Ensure all build files are in build/. | |
# Test jobs don't have build/ to ensure nothing uses the build files. | |
working-directory: build | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v2 | |
with: | |
path: build | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: build | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Restore ~/.mx/cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/.mx/cache | |
key: mx-cache-build-native-${{ runner.os }}-${{ hashFiles('build/common.json') }} | |
- uses: ./build/.github/actions/setup-jvmci-graal | |
# [GR-29808] We build everything except native images first, | |
# so that we minimize the memory used by mx, etc when building native images. | |
- name: Build TruffleRuby (jars) | |
run: jt build --env native --native-images=none | |
- run: free -m | |
- name: Build TruffleRuby (native images) | |
run: jt build --env native | |
- name: Create archive | |
run: | | |
cd $(dirname $(jt -u native graalvm-home)) | |
mv $(basename $(jt -u native graalvm-home)) truffleruby-native | |
tar cf ${{ github.workspace }}/truffleruby-native.tar truffleruby-native | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: truffleruby-native | |
path: ${{ github.workspace }}/truffleruby-native.tar | |
fast_specs: | |
name: fast specs | |
needs: [build] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v2 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v2 | |
with: | |
name: truffleruby-jvm | |
- uses: ./.github/actions/setup-truffleruby | |
- run: jt test fast | |
- run: jt test :next | |
all_specs: | |
name: specs ${{ matrix.specs }} | |
needs: [build] | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
specs: | |
- :truffle # ~12min | |
- :language :core # ~3min + ~9min | |
- :library :cext :security :command_line :tracepoint # command_line ~5min, others < 2min | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v2 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v2 | |
with: | |
name: truffleruby-jvm | |
- uses: ./.github/actions/setup-truffleruby | |
- run: jt test --timeout 180 ${{ matrix.specs }} | |
test_integration: | |
name: test integration | |
needs: [build] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v2 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v2 | |
with: | |
name: truffleruby-jvm | |
- uses: ./.github/actions/setup-truffleruby | |
- run: jt test integration | |
test_native: | |
name: test native | |
needs: [build_native] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v2 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v2 | |
with: | |
name: truffleruby-native | |
- uses: ./.github/actions/setup-truffleruby | |
with: | |
archive: truffleruby-native | |
- run: jt test compiler | |
# A subset of specs that are more likely to differ on native and run quickly | |
- run: jt test :command_line | |
- run: jt test :language | |
# To catch slow :truffle specs which only apply to native | |
- run: jt test fast :truffle | |
ruby_spec_cruby: | |
name: ruby/spec on CRuby ${{ matrix.ruby }} | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ['2.7', '3.0', '3.1'] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
bundler: none | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- run: CHECK_LEAKS=true jt -u ruby mspec -fdot --timeout 30 spec/ruby |