From: ko1@... Date: 2020-05-15T14:36:40+00:00 Subject: [ruby-core:98386] [Ruby master Misc#16895] Request for cooperation: Try your applications/libraries with master branch and debug options Issue #16895 has been updated by ko1 (Koichi Sasada). Description updated Subject changed from Request for cooperation: Try your applications/libraries with master and master-debug build to Request for cooperation: Try your applications/libraries with master branch and debug options Samuel and Eregon rewrote a description. Thank you! ---------------------------------------- Misc #16895: Request for cooperation: Try your applications/libraries with master branch and debug options https://bugs.ruby-lang.org/issues/16895#change-85655 * Author: ko1 (Koichi Sasada) * Status: Open * Priority: Normal ---------------------------------------- # Summary If you maintain a Ruby application or library, please consider testing with the Ruby `master` branch, including the *debug* (`cppflags=-DRUBY_DEBUG=1`) build. They should be in addition to testing all supported stable releases of Ruby. To try the master branch, we provide Docker images and Github Acttion for convinience. # Details The rapid pace of Ruby development sometimes introduces bugs, such as incorrect behaviour or unexpected incompatibilities. Despite our best efforts and testing, without your feedback, we cannot catch every issue. Understanding how our changes impact downstream code is important feedback for the Ruby core developers. We want to know how your applications work on master. If you encounter an error when testing with the `master` branch (e.g. `[BUG] ...` in output log), please report it (https://bugs.ruby-lang.org). It will be very helpful. ## Testing With `master` Testing using the `master` branch (sometimes referred to as `ruby-head`) will make your Ruby scripts next version ready. Also it helps us catch incompatibilities as we change and evolve Ruby's public interface. ## Testing With Debug Build Testing with the master branch debug build enables many assertions within the Ruby interpreter. These assertions can detect incorrect usages of the C extensions API, and also bugs in the interpreter when running your program. These assertions have an impact the performance of the interpreter. To build a debug build by yourself, refer the last section in this article. # Continuous Integration With `master` Building Ruby for your own testing environment can be difficult, so we are providing two convenient ways to use the master branch in your existing testing pipeline: - Docker Images - Github Action ## Docker Images The [rubylang docker repository](https://hub.docker.com/r/rubylang/ruby) provides images for various Ruby versions, including nightly builds of master with and without debug assertions" - Nightly built master: `rubylang/ruby:master-nightly-bionic` - Nightly debug built master: `rubylang/ruby:master-debug-nightly-bionic` Here is an example `Dockerfile`: ```dockerfile FROM rubylang/ruby:master-nightly-bionic ``` Then to build: ```shell $ docker build . Sending build context to Docker daemon 2.048kB Step 1/1 : FROM rubylang/ruby:master-nightly-bionic master-nightly-bionic: Pulling from rubylang/ruby ... Status: Downloaded newer image for rubylang/ruby:master-nightly-bionic ---> 059d367a8fbd Successfully built 059d367a8fbd ``` ## GitHub Action The [GitHub Action to setup Ruby](https://github.com/ruby/setup-ruby) provides both `ruby-head` and `ruby-debug` builds. Here is an example workflow to test on all Ruby stable releases, including `ruby-head` and `ruby-debug`: ```yaml name: Development on: [push] jobs: test: strategy: fail-fast: false matrix: os: [ubuntu] ruby: [2.5, 2.6, 2.7, head, debug] runs-on: ${{ matrix.os }}-latest continue-on-error: ${{ matrix.ruby == 'head' || matrix.ruby == 'debug' }} steps: - uses: actions/checkout@v2 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - run: bundle install - run: bundle exec rake ``` See the [documentation](https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby) for more details on how to use this action. # Building debug build To create a Debug Build of Ruby, use: ``` $ git clone https://github.com/ruby/ruby.git $ cd ruby $ autoconf $ cppflags=-DRUBY_DEBUG=1 ./configure --prefix=$HOME/.rubies/ruby-debug $ make install ``` If you are using `chruby`, you can switch to the above build: ``` $ chruby ruby-debug ``` You can find more details to build Ruby master in the [README](https://github.com/ruby/ruby/blob/master/README.md#how-to-compile-and-install). # Acknowledgement We thank @mrkn for the Docker image, @eregon for the GitHub Action, and @ioquatix for reviewing this announcement. -- https://bugs.ruby-lang.org/ Unsubscribe: