cgen, scanner: reduce allocations for the most common cases #10608
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
name: V Apps and Modules | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
- '**.yml' | |
- '!**/v_apps_and_modules_compile_ci.yml' | |
- 'cmd/tools/vrepl.v' | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
- '**.yml' | |
- '!**/v_apps_and_modules_compile_ci.yml' | |
- 'cmd/tools/vrepl.v' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
common: | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-12, macos-14] | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 121 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build V | |
id: build | |
run: make && sudo ./v symlink | |
- name: Install dependencies | |
run: | | |
if [ $RUNNER_OS == 'Linux' ]; then | |
v retry -- sudo apt -qq update | |
v retry -- sudo apt -qq install libgc-dev libsodium-dev libssl-dev sqlite3 libsqlite3-dev | |
v retry -- sudo apt -qq install libfreetype6-dev libxi-dev libxcursor-dev libgl-dev libasound2-dev xfonts-75dpi xfonts-base | |
v retry -- sudo apt -qq install sassc libgit2-dev # needed by gitly | |
else | |
v retry brew install sassc libgit2 | |
fi | |
- name: Test vtcc | |
if: runner.os == 'Linux' | |
run: .github/workflows/compile_v_with_vtcc.sh | |
- name: Test vsql compilation and examples | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Install vsql" | |
v retry -- v install elliotchance.vsql ; cd ~/.vmodules/elliotchance/vsql | |
echo "Generate vsql/grammar.v" | |
make vsql/grammar.v | |
echo "Compile vsql" | |
v -o bin/vsql cmd/vsql | |
echo "Run examples" | |
make examples | |
echo "Run vsql/connection_test.v" | |
v vsql/connection_test.v | |
- name: Test discord.v | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Clone https://github.com/DarpHome/discord.v" | |
v retry -- v install https://github.com/DarpHome/discord.v | |
cd ~/.vmodules/discord | |
echo "Checkout last known good commit" | |
git checkout c4777906464e4c97233e3afa532ddec7175e21ec | |
echo "Execute Tests" | |
v test . | |
- name: Build vlang/vab | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Install VAB" | |
v retry -- v install vab | |
echo "Build vab" | |
v ~/.vmodules/vab | |
echo "Build vab with -gc boehm -skip-unused" | |
v -g -gc boehm -skip-unused ~/.vmodules/vab | |
- name: Build vlang/ved | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
v retry -- git clone --depth 1 https://github.com/vlang/ved | |
cd ved && v -o ved . | |
v -autofree . | |
v -prod . | |
cd .. | |
- name: Build vlang/pdf | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
v retry -- v install pdf | |
echo "PDF examples should compile" | |
v should-compile-all ~/.vmodules/pdf/examples | |
- name: Build vlang/libsodium | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Install the libsodium wrapper" | |
v retry -- v install libsodium | |
echo "Test libsodium" | |
VJOBS=1 v test ~/.vmodules/libsodium | |
- name: Build vlang/coreutils | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Clone Coreutils" | |
v retry -- git clone --depth 1 https://github.com/vlang/coreutils /tmp/coreutils | |
echo "Build Coreutils" | |
cd /tmp/coreutils; make | |
- name: Build vlang/gitly | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Install markdown" | |
v retry -- v install markdown | |
echo "Install pcre" | |
v retry -- v install pcre | |
echo "Clone Gitly" | |
v retry -- git clone https://github.com/vlang/gitly /tmp/gitly | |
echo "Build Gitly" | |
v -cc gcc /tmp/gitly | |
## echo "Build Gitly with -autofree" | |
## v -cc gcc -autofree /tmp/gitly | |
echo "Compile gitly.css from gitly.scss" | |
sassc /tmp/gitly/src/static/css/gitly.scss > /tmp/gitly/src/static/css/gitly.css | |
# echo "Run first_run.v" | |
# v -cc gcc run /tmp/gitly/tests/first_run.v | |
# # /tmp/gitly/gitly -ci_run | |
- name: Build V UI examples | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
v retry -- v install ui | |
v -no-parallel ~/.vmodules/ui/examples/rectangles.v | |
v -no-parallel ~/.vmodules/ui/examples/users.v | |
# v run ~/.vmodules/ui/examples/build_examples.vsh | |
- name: Build vlang/v-analyzer | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Clone v-analyzer" | |
v retry -- git clone --depth=1 --filter=blob:none --recursive --shallow-submodules https://github.com/vlang/v-analyzer /tmp/v-analyzer | |
cd /tmp/v-analyzer | |
echo "Installing dependencies" | |
v install | |
echo "Build v-analyzer debug" | |
v build.vsh debug | |
echo "Build v-analyzer release" | |
v build.vsh release | |
- name: Format vlang/v-analyzer | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
cd /tmp/v-analyzer | |
set +e | |
v fmt -c . | |
exit_code=$? | |
if [[ $exit_code -ne 0 && $exit_code -ne 5 ]]; then | |
# Don't fail if there are only internal errors (exit code 5). | |
v fmt -diff . | |
exit 1 | |
fi | |
- name: Build vlang/go2v | |
if: ${{ !cancelled() && steps.build.outcome == 'success' && matrix.os != 'macos-14' }} | |
run: | | |
echo "Clone Go2V" | |
v retry -- git clone --depth=1 https://github.com/vlang/go2v /tmp/go2v/ | |
echo "Build Go2V" | |
v /tmp/go2v/ | |
echo "Run Go2V tests" | |
VJOBS=1 v test /tmp/go2v/ | |
- name: Install UI through VPM and make sure its examples compile | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Official VPM modules should be installable" | |
v retry -- v install ui | |
echo "Examples of UI should compile" | |
v ~/.vmodules/ui/examples/build_examples.vsh | |
- name: Build vlang/adventofcode | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Clone the AdventOfCode repo" | |
v retry -- git clone --depth 1 https://github.com/vlang/adventofcode /tmp/adventofcode | |
echo "Install dependencies" | |
v retry -- v install pcre | |
echo "Execute Tests" | |
cd /tmp/adventofcode && v run verify.v | |
- name: Build vlang/msgpack | |
if: ${{ !cancelled() && steps.build.outcome == 'success' }} | |
run: | | |
echo "Install msgpack" | |
v retry -- v install msgpack | |
echo "Build msgpack" | |
v -shared ~/.vmodules/msgpack/ | |
echo "Run msgpack tests" | |
v test ~/.vmodules/msgpack/ | |
echo "MessagePack examples should compile" | |
v should-compile-all ~/.vmodules/msgpack/examples | |
# - name: Build VEX | |
# if: ${{ !cancelled() }} && steps.build.outcome == 'success' | |
# run: | | |
# echo "Install Vex" | |
# v retry -- v install nedpals.vex | |
# echo "Compile all of the Vex examples" | |
# v should-compile-all ~/.vmodules/nedpals/vex/examples | |
# echo "Compile the simple Vex example with -skip-unused" | |
# v -skip-unused ~/.vmodules/nedpals/vex/examples/simple_example.v | |
# echo "Run Vex Tests" | |
# v test ~/.vmodules/nedpals/vex | |
vsl: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, macos-12, macos-14] | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 121 | |
env: | |
VFLAGS: -no-parallel | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build V | |
id: build | |
run: make && sudo ./v symlink | |
- name: Install dependencies | |
run: | | |
if [ $RUNNER_OS == 'Linux' ]; then | |
v retry -- sudo apt -qq update | |
v retry -- sudo apt -qq install \ | |
libgc-dev libgl1-mesa-dev mesa-common-dev liblapacke-dev libopenblas-dev libopenmpi-dev \ | |
opencl-headers libxcursor-dev libxi-dev libhdf5-cpp-103 libhdf5-dev libhdf5-mpi-dev hdf5-tools | |
else | |
v retry brew install coreutils hdf5 open-mpi openblas lapack opencl-headers | |
fi | |
- name: Install vsl | |
run: v retry -- v install vsl | |
- name: Test with Pure V Backend | |
run: ~/.vmodules/vsl/bin/test | |
- name: Test with Pure V Backend and Pure V Math | |
run: ~/.vmodules/vsl/bin/test --use-cblas | |
vtl: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, macos-12, macos-14] | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 121 | |
env: | |
VFLAGS: -no-parallel | |
# Fixes complaints about $TERM not being set when running the vtl test script | |
# (a warning on Linux, but an error on macOS). | |
TERM: xterm | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build V | |
id: build | |
run: make && sudo ./v symlink | |
- name: Install dependencies | |
run: | | |
if [ $RUNNER_OS == 'Linux' ]; then | |
v retry -- sudo apt -qq update | |
v retry -- sudo apt -qq install \ | |
libgc-dev libgl1-mesa-dev mesa-common-dev liblapacke-dev libopenblas-dev libopenmpi-dev | |
else | |
v retry brew install coreutils hdf5 open-mpi openblas lapack opencl-headers | |
fi | |
v retry v install vsl | |
- name: Install vtl | |
run: v retry v install vtl | |
- name: Test with Pure V Backend | |
run: ~/.vmodules/vtl/bin/test | |
- name: Test with Pure V Backend and Pure V Math | |
run: ~/.vmodules/vtl/bin/test --use-cblas | |
vpm-site: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, macos-12, macos-14] | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build V | |
run: make && ./v symlink | |
- name: Build vpm | |
run: | | |
v retry -- v install markdown | |
v retry -- git clone --depth 1 https://github.com/vlang/vpm | |
cd vpm && v . |