Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ruby-concurrency/concurrent-ruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.3.6
Choose a base ref
...
head repository: ruby-concurrency/concurrent-ruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.3.7
Choose a head ref
  • 14 commits
  • 18 files changed
  • 4 contributors

Commits on Dec 13, 2025

  1. Update release post steps

    eregon committed Dec 13, 2025
    Configuration menu
    Copy the full SHA
    1df567d View commit details
    Browse the repository at this point in the history
  2. Run the docs workflow when pushing a tag

    * The run when pushing a commit bumping the concurrent-ruby version fails
      as the workflow relies on the tag to exist, but the tag is created
      later in the release process.
      So just re-run this workflow automatically when the tag is pushed.
    eregon committed Dec 13, 2025
    Configuration menu
    Copy the full SHA
    543ef62 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    129cf00 View commit details
    Browse the repository at this point in the history

Commits on Jan 11, 2026

  1. Configuration menu
    Copy the full SHA
    30dc89e View commit details
    Browse the repository at this point in the history

Commits on Apr 6, 2026

  1. Bump actions/deploy-pages from 4 to 5

    Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
    - [Release notes](https://github.com/actions/deploy-pages/releases)
    - [Commits](actions/deploy-pages@v4...v5)
    
    ---
    updated-dependencies:
    - dependency-name: actions/deploy-pages
      dependency-version: '5'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored and eregon committed Apr 6, 2026
    Configuration menu
    Copy the full SHA
    9b2dbf7 View commit details
    Browse the repository at this point in the history

Commits on May 6, 2026

  1. Bump actions/upload-pages-artifact from 4 to 5

    Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 4 to 5.
    - [Release notes](https://github.com/actions/upload-pages-artifact/releases)
    - [Commits](actions/upload-pages-artifact@v4...v5)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-pages-artifact
      dependency-version: '5'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored and eregon committed May 6, 2026
    Configuration menu
    Copy the full SHA
    7a1b789 View commit details
    Browse the repository at this point in the history

Commits on Jun 5, 2026

  1. Add SECURITY.md (#1104)

    Co-authored-by: Joshua Young <djry1999@gmail.com>
    eregon and joshuay03 authored Jun 5, 2026
    Configuration menu
    Copy the full SHA
    df8706d View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2026

  1. Add Ruby 4.0 in CI

    eregon committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    1974b47 View commit details
    Browse the repository at this point in the history
  2. Fix ReadWriteLock wrong-thread write release and stray read release

    `release_write_lock` did not verify ownership, so any thread with a
    reference to the lock could clear the `RUNNING_WRITER` bit while the
    original writer was still inside its critical section. A second writer
    could then acquire and run concurrently, breaking write exclusivity.
    
    `release_read_lock` decremented `@Counter` unconditionally. On a fresh
    lock the counter dropped to -1, after which `max_readers?` saw
    `-1 & MAX_READERS == MAX_READERS` and blocked all subsequent acquires
    with `ResourceLimitError`.
    
    Track the write owner in an `AtomicReference` and raise
    `IllegalOperationError` from `release_write_lock` when the calling
    thread does not hold it, covering both the wrong-thread and never-held
    cases. Raise the same error from `release_read_lock` when no read
    lock is currently held, matching how `ReentrantReadWriteLock` already
    detects this via its per-thread `@HeldCount`.
    joshuay03 authored and eregon committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    3fd4932 View commit details
    Browse the repository at this point in the history
  3. Cleanup spec

    eregon committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    2825cfa View commit details
    Browse the repository at this point in the history
  4. Fix AtomicReference#update livelock when stored value is Float::NAN

    The numeric `compare_and_set` wrapper checks `old == old_value` before
    delegating to `_compare_and_set`. With `Float::NAN` that check is
    always false (`NaN != NaN`), so `#update` retries indefinitely.
    
    Handle expected NaN explicitly so `#update` can terminate.
    joshuay03 authored and eregon committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    6e37e06 View commit details
    Browse the repository at this point in the history
  5. Fix ReentrantReadWriteLock read hold overflow into write-lock bit

    The per-thread `@HeldCount` packs the read hold count into the low 15
    bits and uses bit 15 as `WRITE_LOCK_HELD`. The reentrant paths in
    `acquire_read_lock` and `try_read_lock` incremented `@HeldCount`
    without bounding the read portion, so after 32,768 reentrant read
    holds the count overflowed into `WRITE_LOCK_HELD`. A subsequent
    `try_write_lock` or `acquire_write_lock` would then take the "already
    hold a write lock" fast path and return true without setting
    `RUNNING_WRITER`, silently violating write exclusivity.
    
    Raise `ResourceLimitError` when the local read count would overflow,
    matching how the cold path handles global reader exhaustion.
    joshuay03 authored and eregon committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    7e4d711 View commit details
    Browse the repository at this point in the history
  6. Fix AtomicReference#update livelock when stored value is Float::NAN o…

    …n JRuby and TruffleRuby
    eregon committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    d91ca94 View commit details
    Browse the repository at this point in the history
  7. Release 1.3.7

    eregon committed Jun 16, 2026
    Configuration menu
    Copy the full SHA
    4c8fc28 View commit details
    Browse the repository at this point in the history
Loading