diff --git a/.github/workflows/annocheck.yml b/.github/workflows/annocheck.yml index 1fda0b98877b3b..4af49e57943bb8 100644 --- a/.github/workflows/annocheck.yml +++ b/.github/workflows/annocheck.yml @@ -67,7 +67,7 @@ jobs: sparse-checkout: /.github persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/auto_review_pr.yml b/.github/workflows/auto_review_pr.yml index 866029a487bacb..70617923a8c08e 100644 --- a/.github/workflows/auto_review_pr.yml +++ b/.github/workflows/auto_review_pr.yml @@ -29,7 +29,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.4' bundler: none diff --git a/.github/workflows/baseruby.yml b/.github/workflows/baseruby.yml index 301366f4787583..ddf318d698bee4 100644 --- a/.github/workflows/baseruby.yml +++ b/.github/workflows/baseruby.yml @@ -48,7 +48,7 @@ jobs: - ruby-3.3 steps: - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: ${{ matrix.ruby }} bundler: none diff --git a/.github/workflows/bundled_gems.yml b/.github/workflows/bundled_gems.yml index dce02c03093c7f..1419146a006452 100644 --- a/.github/workflows/bundled_gems.yml +++ b/.github/workflows/bundled_gems.yml @@ -38,7 +38,7 @@ jobs: with: token: ${{ (github.repository == 'ruby/ruby' && !startsWith(github.event_name, 'pull')) && secrets.MATZBOT_AUTO_UPDATE_TOKEN || secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: 4.0 diff --git a/.github/workflows/check_dependencies.yml b/.github/workflows/check_dependencies.yml index 14b010658ba732..3e8c355ffdffe1 100644 --- a/.github/workflows/check_dependencies.yml +++ b/.github/workflows/check_dependencies.yml @@ -28,7 +28,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/check_misc.yml b/.github/workflows/check_misc.yml index b3a56c8c8e24e9..837537203b491f 100644 --- a/.github/workflows/check_misc.yml +++ b/.github/workflows/check_misc.yml @@ -23,7 +23,7 @@ jobs: token: ${{ (github.repository == 'ruby/ruby' && !startsWith(github.event_name, 'pull')) && secrets.MATZBOT_AUTO_UPDATE_TOKEN || secrets.GITHUB_TOKEN }} persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: head diff --git a/.github/workflows/check_sast.yml b/.github/workflows/check_sast.yml index 943bb71685f8a6..e60e30fdd01b47 100644 --- a/.github/workflows/check_sast.yml +++ b/.github/workflows/check_sast.yml @@ -45,7 +45,7 @@ jobs: persist-credentials: false - name: Run zizmor - uses: zizmorcore/zizmor-action@6599ee8b7a49aef6a770f63d261d214911a7ce02 # v0.6.0 + uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1 continue-on-error: true analyze: @@ -78,14 +78,14 @@ jobs: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: languages: ${{ matrix.language }} build-mode: none config-file: .github/codeql/codeql-config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: category: '/language:${{ matrix.language }}' upload: False @@ -127,7 +127,7 @@ jobs: continue-on-error: true - name: Upload SARIF - uses: github/codeql-action/upload-sarif@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: sarif_file: sarif-results/${{ matrix.language }}.sarif continue-on-error: true diff --git a/.github/workflows/dependabot_automerge.yml b/.github/workflows/dependabot_automerge.yml index b331f888279bc0..30e654203eb902 100644 --- a/.github/workflows/dependabot_automerge.yml +++ b/.github/workflows/dependabot_automerge.yml @@ -17,7 +17,7 @@ jobs: id: metadata - name: Wait for status checks - uses: lewagon/wait-on-check-action@1d57e2c51a58d812d2765e036a028b6bdb5a6154 # v1.8.1 + uses: lewagon/wait-on-check-action@2271c86c146b96545b4e871b855e10ffa6f50773 # v1.9.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} ref: ${{ github.event.pull_request.head.sha || github.sha }} diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index f0fa12c456ef08..c1feb5c1f78962 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,4 +12,4 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@b8dd2d9be0f68b860e7dae5dae7d772984eacd6d # v6.2.0 + - uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0 diff --git a/.github/workflows/modgc.yml b/.github/workflows/modgc.yml index 6cf4760a1d3cc5..26bde7f894c148 100644 --- a/.github/workflows/modgc.yml +++ b/.github/workflows/modgc.yml @@ -67,7 +67,7 @@ jobs: uses: ./.github/actions/setup/ubuntu if: ${{ contains(matrix.os, 'ubuntu') }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/parse_y.yml b/.github/workflows/parse_y.yml index 1087ac946b7b51..6f80d65834e2c7 100644 --- a/.github/workflows/parse_y.yml +++ b/.github/workflows/parse_y.yml @@ -59,7 +59,7 @@ jobs: - uses: ./.github/actions/setup/ubuntu - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index daa852fc3cba64..0f265d0b36b8bf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -22,7 +22,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: 3.3.4 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index bdbd8090d2f719..2963a4ba761cb6 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -39,7 +39,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 + uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4 with: results_file: results.sarif results_format: sarif @@ -73,6 +73,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@7188fc363630916deb702c7fdcf4e481b751f97a # v4.37.1 + uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 with: sarif_file: results.sarif diff --git a/.github/workflows/spec_guards.yml b/.github/workflows/spec_guards.yml index 6823b94fd9bfb4..2005a14e6e7c08 100644 --- a/.github/workflows/spec_guards.yml +++ b/.github/workflows/spec_guards.yml @@ -49,7 +49,7 @@ jobs: with: persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: ${{ matrix.ruby }} bundler: none diff --git a/.github/workflows/sync_default_gems.yml b/.github/workflows/sync_default_gems.yml index 5795d4abf03066..5ac733ad07cf95 100644 --- a/.github/workflows/sync_default_gems.yml +++ b/.github/workflows/sync_default_gems.yml @@ -39,7 +39,7 @@ jobs: with: token: ${{ github.repository == 'ruby/ruby' && secrets.MATZBOT_AUTO_UPDATE_TOKEN || secrets.GITHUB_TOKEN }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.4' bundler: none diff --git a/.github/workflows/tarball-ubuntu.yml b/.github/workflows/tarball-ubuntu.yml index 8d3dbe1037a378..589b0846f5cb27 100644 --- a/.github/workflows/tarball-ubuntu.yml +++ b/.github/workflows/tarball-ubuntu.yml @@ -43,7 +43,7 @@ jobs: set -x sudo apt-get update -q sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev zlib1g-dev libffi-dev libgmp-dev bison- autoconf- - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.2' # test-bundled-gems requires executable host ruby diff --git a/.github/workflows/tarball-windows.yml b/.github/workflows/tarball-windows.yml index c3f12fe970cea7..0bd476b8092029 100644 --- a/.github/workflows/tarball-windows.yml +++ b/.github/workflows/tarball-windows.yml @@ -48,7 +48,7 @@ jobs: - run: md build working-directory: - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.2' bundler: none diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index da918d06d794c5..6b6bd7f0901e02 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -79,7 +79,7 @@ jobs: with: arch: ${{ matrix.arch }} - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml index b4cc2a6c8ff8c1..98e22c005fcec0 100644 --- a/.github/workflows/wasm.yml +++ b/.github/workflows/wasm.yml @@ -65,7 +65,7 @@ jobs: sparse-checkout: /.github persist-credentials: false - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 43b025e0c8ea4a..c871faaa06cbd6 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -63,7 +63,7 @@ jobs: - run: md build working-directory: - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: # windows-11-arm has only 3.4.1, 3.4.2, 3.4.3, head ruby-version: ${{ !endsWith(matrix.os, 'arm') && '3.1' || '3.4' }} diff --git a/.github/workflows/yjit-ubuntu.yml b/.github/workflows/yjit-ubuntu.yml index ed1202c25f77ab..ba812106fd6e09 100644 --- a/.github/workflows/yjit-ubuntu.yml +++ b/.github/workflows/yjit-ubuntu.yml @@ -138,7 +138,7 @@ jobs: - uses: ./.github/actions/setup/ubuntu - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none diff --git a/.github/workflows/zjit-macos.yml b/.github/workflows/zjit-macos.yml index b6afbc223af1cd..9db644da16f9d3 100644 --- a/.github/workflows/zjit-macos.yml +++ b/.github/workflows/zjit-macos.yml @@ -98,7 +98,7 @@ jobs: rustup install ${{ matrix.rust_version }} --profile minimal rustup default ${{ matrix.rust_version }} - - uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9 # v2.84.0 + - uses: taiki-e/install-action@41049aa56687c35e0afa74eed4f09cec4f9afabf # v2.85.2 with: tool: nextest@0.9 if: ${{ matrix.test_task == 'zjit-check' }} diff --git a/.github/workflows/zjit-ubuntu.yml b/.github/workflows/zjit-ubuntu.yml index c27b1a775afbee..8e72f7d4835947 100644 --- a/.github/workflows/zjit-ubuntu.yml +++ b/.github/workflows/zjit-ubuntu.yml @@ -136,12 +136,12 @@ jobs: - uses: ./.github/actions/setup/ubuntu - - uses: ruby/setup-ruby@003a5c4d8d6321bd302e38f6f0ec593f77f06600 # v1.319.0 + - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.1' bundler: none - - uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9 # v2.84.0 + - uses: taiki-e/install-action@41049aa56687c35e0afa74eed4f09cec4f9afabf # v2.85.2 with: tool: nextest@0.9 if: ${{ matrix.test_task == 'zjit-check' }} diff --git a/NEWS.md b/NEWS.md index 64ffe9d4d6d535..5fc669c630797e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -155,7 +155,7 @@ releases. * rss 0.3.3 * 0.3.2 to [0.3.3][rss-0.3.3] * net-imap 0.6.6 - * 0.6.2 to [v0.6.3][net-imap-v0.6.3], [v0.6.4][net-imap-v0.6.4], [v0.6.4.1][net-imap-v0.6.4.1] + * 0.6.2 to [v0.6.3][net-imap-v0.6.3], [v0.6.4][net-imap-v0.6.4], [v0.6.4.1][net-imap-v0.6.4.1], [v0.6.5][net-imap-v0.6.5], [v0.6.6][net-imap-v0.6.6] * rbs 4.0.3 * 3.10.0 to [v3.10.1][rbs-v3.10.1], [v3.10.2][rbs-v3.10.2], [v3.10.3][rbs-v3.10.3], [v3.10.4][rbs-v3.10.4], [v4.0.0.dev.5][rbs-v4.0.0.dev.5], [v4.0.0][rbs-v4.0.0], [v4.0.2][rbs-v4.0.2], [v4.0.3][rbs-v4.0.3] * typeprof 0.32.0 @@ -168,6 +168,8 @@ releases. * 0.2.0 to [v0.3.0][nkf-v0.3.0] * syslog 0.4.0 * 0.3.0 to [v0.4.0][syslog-v0.4.0] +* csv 3.3.6 + * 3.3.5 to [v3.3.6][csv-v3.3.6] * repl_type_completor 0.1.15 * 0.1.12 to [v0.1.13][repl_type_completor-v0.1.13], [v0.1.14][repl_type_completor-v0.1.14], [v0.1.15][repl_type_completor-v0.1.15] * pstore 0.2.1 @@ -326,6 +328,8 @@ A lot of work has gone into making Ractors more stable, performant, and usable. [net-imap-v0.6.3]: https://github.com/ruby/net-imap/releases/tag/v0.6.3 [net-imap-v0.6.4]: https://github.com/ruby/net-imap/releases/tag/v0.6.4 [net-imap-v0.6.4.1]: https://github.com/ruby/net-imap/releases/tag/v0.6.4.1 +[net-imap-v0.6.5]: https://github.com/ruby/net-imap/releases/tag/v0.6.5 +[net-imap-v0.6.6]: https://github.com/ruby/net-imap/releases/tag/v0.6.6 [rbs-v3.10.1]: https://github.com/ruby/rbs/releases/tag/v3.10.1 [rbs-v3.10.2]: https://github.com/ruby/rbs/releases/tag/v3.10.2 [rbs-v3.10.3]: https://github.com/ruby/rbs/releases/tag/v3.10.3 @@ -340,6 +344,7 @@ A lot of work has gone into making Ractors more stable, performant, and usable. [resolv-replace-v0.2.0]: https://github.com/ruby/resolv-replace/releases/tag/v0.2.0 [nkf-v0.3.0]: https://github.com/ruby/nkf/releases/tag/v0.3.0 [syslog-v0.4.0]: https://github.com/ruby/syslog/releases/tag/v0.4.0 +[csv-v3.3.6]: https://github.com/ruby/csv/releases/tag/v3.3.6 [repl_type_completor-v0.1.13]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.13 [repl_type_completor-v0.1.14]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.14 [repl_type_completor-v0.1.15]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.15 diff --git a/gems/bundled_gems b/gems/bundled_gems index 4fcf38256d1490..70fc7e7997c27f 100644 --- a/gems/bundled_gems +++ b/gems/bundled_gems @@ -31,7 +31,7 @@ rinda 0.2.0 https://github.com/ruby/rinda drb 2.2.3 https://github.com/ruby/drb nkf 0.3.0 https://github.com/ruby/nkf syslog 0.4.0 https://github.com/ruby/syslog -csv 3.3.5 https://github.com/ruby/csv +csv 3.3.6 https://github.com/ruby/csv repl_type_completor 0.1.15 https://github.com/ruby/repl_type_completor ostruct 0.6.3 https://github.com/ruby/ostruct pstore 0.2.1 https://github.com/ruby/pstore diff --git a/io_buffer.c b/io_buffer.c index a64fa506ec04c8..9599cc6a28c0e7 100644 --- a/io_buffer.c +++ b/io_buffer.c @@ -2537,7 +2537,8 @@ struct io_buffer_set_value_arguments { * call-seq: set_value(type, offset, value) -> offset * * Write to a buffer a +value+ of +type+ at +offset+. +type+ should be one of - * symbols described in #get_value. + * symbols described in #get_value. Returns the offset just after the written + * value. * * buffer = IO::Buffer.new(8) * # => @@ -2545,7 +2546,7 @@ struct io_buffer_set_value_arguments { * # 0x00000000 00 00 00 00 00 00 00 00 * * buffer.set_value(:U8, 1, 111) - * # => 1 + * # => 2 * * buffer * # => @@ -2577,10 +2578,12 @@ io_buffer_set_value(VALUE self, VALUE type, VALUE _offset, VALUE value) * * Write +values+ of +buffer_types+ at +offset+ to the buffer. +buffer_types+ * should be an array of symbols as described in #get_value. +values+ should - * be an array of values to write. + * be an array of values to write. Returns the offset just after the last + * written value. * * buffer = IO::Buffer.new(8) * buffer.set_values([:U8, :U16], 0, [1, 2]) + * # => 3 * buffer * # => * # # diff --git a/lib/bundler/man/bundle.1 b/lib/bundler/man/bundle.1 index 167815631a2b64..b8e8aefa66228f 100644 --- a/lib/bundler/man/bundle.1 +++ b/lib/bundler/man/bundle.1 @@ -54,6 +54,18 @@ Determine whether the requirements for your application are installed and availa \fBbundle show(1)\fR \fIbundle\-show\.1\.html\fR Show the source location of a particular gem in the bundle .TP +\fBbundle info(1)\fR \fIbundle\-info\.1\.html\fR +Show information for the given gem in your bundle +.TP +\fBbundle list(1)\fR \fIbundle\-list\.1\.html\fR +List all the gems in the bundle +.TP +\fBbundle licenses(1)\fR \fIbundle\-licenses\.1\.html\fR +Print the license of all gems in the bundle +.TP +\fBbundle fund(1)\fR \fIbundle\-fund\.1\.html\fR +Lists information about gems seeking funding assistance +.TP \fBbundle outdated(1)\fR \fIbundle\-outdated\.1\.html\fR Show all of the outdated gems in the current bundle .TP @@ -78,9 +90,18 @@ Display platform compatibility information \fBbundle clean(1)\fR \fIbundle\-clean\.1\.html\fR Clean up unused gems in your Bundler directory .TP +\fBbundle pristine(1)\fR \fIbundle\-pristine\.1\.html\fR +Restores installed gems to their pristine condition +.TP \fBbundle doctor(1)\fR \fIbundle\-doctor\.1\.html\fR Display warnings about common problems .TP +\fBbundle env(1)\fR \fIbundle\-env\.1\.html\fR +Print information about the environment Bundler is running under +.TP +\fBbundle issue(1)\fR \fIbundle\-issue\.1\.html\fR +Get help reporting Bundler issues +.TP \fBbundle remove(1)\fR \fIbundle\-remove\.1\.html\fR Removes gems from the Gemfile .TP diff --git a/lib/bundler/man/bundle.1.ronn b/lib/bundler/man/bundle.1.ronn index 1c2b3df7afa88b..3f993df1a5b6f0 100644 --- a/lib/bundler/man/bundle.1.ronn +++ b/lib/bundler/man/bundle.1.ronn @@ -64,6 +64,18 @@ We divide `bundle` subcommands into primary commands and utilities: * [`bundle show(1)`](bundle-show.1.html): Show the source location of a particular gem in the bundle +* [`bundle info(1)`](bundle-info.1.html): + Show information for the given gem in your bundle + +* [`bundle list(1)`](bundle-list.1.html): + List all the gems in the bundle + +* [`bundle licenses(1)`](bundle-licenses.1.html): + Print the license of all gems in the bundle + +* [`bundle fund(1)`](bundle-fund.1.html): + Lists information about gems seeking funding assistance + * [`bundle outdated(1)`](bundle-outdated.1.html): Show all of the outdated gems in the current bundle @@ -88,9 +100,18 @@ We divide `bundle` subcommands into primary commands and utilities: * [`bundle clean(1)`](bundle-clean.1.html): Clean up unused gems in your Bundler directory +* [`bundle pristine(1)`](bundle-pristine.1.html): + Restores installed gems to their pristine condition + * [`bundle doctor(1)`](bundle-doctor.1.html): Display warnings about common problems +* [`bundle env(1)`](bundle-env.1.html): + Print information about the environment Bundler is running under + +* [`bundle issue(1)`](bundle-issue.1.html): + Get help reporting Bundler issues + * [`bundle remove(1)`](bundle-remove.1.html): Removes gems from the Gemfile diff --git a/lib/bundler/man/gemfile.5 b/lib/bundler/man/gemfile.5 index 64e93c4b153588..a4989e4a51c69b 100644 --- a/lib/bundler/man/gemfile.5 +++ b/lib/bundler/man/gemfile.5 @@ -107,6 +107,8 @@ gem "nokogiri", ">= 1\.4\.2" gem "RedCloth", ">= 4\.1\.0", "< 4\.2\.0" .fi .IP "" 0 +.P +Most version specifiers, like \fB>= 1\.0\fR, are self\-explanatory\. The pessimistic specifier \fB~>\fR constrains both a lower and an upper bound: \fB~> 2\.0\.3\fR is identical to \fB>= 2\.0\.3\fR and \fB< 2\.1\fR, and \fB~> 2\.1\fR is identical to \fB>= 2\.1\fR and \fB< 3\.0\fR\. A pessimistic specifier with a prerelease component, like \fB~> 2\.2\.beta\fR, will match prerelease versions like \fB2\.2\.beta\.12\fR\. \fB~> 0\fR is identical to \fB>= 0\.0\fR and \fB< 1\.0\fR\. .SS "REQUIRE AS" Each \fIgem\fR \fBMAY\fR specify files that should be used when autorequiring via \fBBundler\.require\fR\. You may pass an array with multiple files or \fBtrue\fR if the file you want \fBrequired\fR has the same name as \fIgem\fR or \fBfalse\fR to prevent any file from being autorequired\. .IP "" 4 @@ -460,6 +462,15 @@ The \fBgemspec\fR method adds any runtime dependencies as gem requirements in th The \fBgemspec\fR method supports optional \fB:path\fR, \fB:glob\fR, \fB:name\fR, and \fB:development_group\fR options, which control where bundler looks for the \fB\.gemspec\fR, the glob it uses to look for the gemspec (defaults to: \fB{,*,*/*}\.gemspec\fR), what named \fB\.gemspec\fR it uses (if more than one is present), and which group development dependencies are included in\. .P When a \fBgemspec\fR dependency encounters version conflicts during resolution, the local version under development will always be selected \-\- even if there are remote versions that better match other requirements for the \fBgemspec\fR gem\. +.SH "EVAL_GEMFILE" +A Gemfile \fBMAY\fR be split across multiple files\. The \fBeval_gemfile\fR method reads the contents of another file as if they appeared in the current Gemfile\. A relative path is resolved against the directory of the file containing the call\. +.IP "" 4 +.nf +eval_gemfile "another\.gemfile" +.fi +.IP "" 0 +.P +This can be useful to run tests against multiple combinations of dependencies, or to load per\-developer gems from an untracked gemfile\. .SH "OVERRIDE" The \fBoverride\fR directive rewrites a constraint on another gem before resolution runs\. It targets the common case where an upstream gem's published metadata is too narrow on the current project's machine \-\- a stale upper bound, an unwanted floor, or a transitive pin that has to be lifted\. .IP "" 4 diff --git a/lib/bundler/man/gemfile.5.ronn b/lib/bundler/man/gemfile.5.ronn index 69fef906549d19..dd5db5013fea30 100644 --- a/lib/bundler/man/gemfile.5.ronn +++ b/lib/bundler/man/gemfile.5.ronn @@ -137,6 +137,13 @@ Each _gem_ `MAY` have one or more version specifiers. gem "nokogiri", ">= 1.4.2" gem "RedCloth", ">= 4.1.0", "< 4.2.0" +Most version specifiers, like `>= 1.0`, are self-explanatory. The pessimistic +specifier `~>` constrains both a lower and an upper bound: `~> 2.0.3` is +identical to `>= 2.0.3` and `< 2.1`, and `~> 2.1` is identical to `>= 2.1` and +`< 3.0`. A pessimistic specifier with a prerelease component, like +`~> 2.2.beta`, will match prerelease versions like `2.2.beta.12`. `~> 0` is +identical to `>= 0.0` and `< 1.0`. + ### REQUIRE AS Each _gem_ `MAY` specify files that should be used when autorequiring via @@ -541,6 +548,18 @@ When a `gemspec` dependency encounters version conflicts during resolution, the local version under development will always be selected -- even if there are remote versions that better match other requirements for the `gemspec` gem. +## EVAL_GEMFILE + +A Gemfile `MAY` be split across multiple files. The `eval_gemfile` method reads +the contents of another file as if they appeared in the current Gemfile. A +relative path is resolved against the directory of the file containing the +call. + + eval_gemfile "another.gemfile" + +This can be useful to run tests against multiple combinations of dependencies, +or to load per-developer gems from an untracked gemfile. + ## OVERRIDE The `override` directive rewrites a constraint on another gem before diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 50b348d2f97ab3..40ae9d20b81680 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -2082,6 +2082,9 @@ def configuration(srcdir) verbose = with_config('verbose') ? "1" : (CONFIG['MKMF_VERBOSE'] || "0") vpath = $VPATH.dup CONFIG["hdrdir"] ||= $hdrdir + if $mswin and dir = [CONFIG["srcdir"], $extmk ? CONFIG["topdir"] : $topdir, CONFIG["hdrdir"], $arch_hdrdir].compact.find {|d| /\s/ =~ d} + warn "mkmf: nmake cannot handle spaces in paths: #{dir}" + end mk << %{ SHELL = /bin/sh diff --git a/thread_win32.c b/thread_win32.c index 5fc73b91b2e664..4a531d514b2fe9 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -589,35 +589,27 @@ rb_native_cond_destroy(rb_nativethread_cond_t *cond) } -#define CHECK_ERR(expr) \ - {if (!(expr)) {rb_bug("err: %lu - %s", GetLastError(), #expr);}} - -COMPILER_WARNING_PUSH -#if __has_warning("-Wmaybe-uninitialized") -COMPILER_WARNING_IGNORED(-Wmaybe-uninitialized) +#if !defined(_WIN32_WINNT_WIN8) || _WIN32_WINNT < 0x602 +/* declared in processthreadsapi.h only when _WIN32_WINNT >= 0x0602, + * but exported from kernel32.dll since Windows 8 */ +WINBASEAPI VOID WINAPI GetCurrentThreadStackLimits(PULONG_PTR, PULONG_PTR); #endif -static inline SIZE_T -query_memory_basic_info(PMEMORY_BASIC_INFORMATION mi, void *local_in_parent_frame) -{ - return VirtualQuery(asan_get_real_stack_addr(local_in_parent_frame), mi, sizeof(*mi)); -} -COMPILER_WARNING_POP static void native_thread_init_stack(rb_thread_t *th, void *local_in_parent_frame) { - MEMORY_BASIC_INFORMATION mi; - char *base, *end; - DWORD size, space; + ULONG_PTR low, high; + SIZE_T size, space; - CHECK_ERR(query_memory_basic_info(&mi, local_in_parent_frame)); - base = mi.AllocationBase; - end = mi.BaseAddress; - end += mi.RegionSize; - size = end - base; + /* VirtualQuery against the current stack pointer may return a region + * that does not span the whole stack when the interpreter is + * initialized deep in the stack, which makes stack_check() misfire. + * [Bug #11438] */ + GetCurrentThreadStackLimits(&low, &high); + size = high - low; space = size / 5; if (space > 1024*1024) space = 1024*1024; - th->ec->machine.stack_start = (VALUE *)end - 1; + th->ec->machine.stack_start = (VALUE *)high - 1; th->ec->machine.stack_maxsize = size - space; }