Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release/3.4.12 minor #3623

Closed
wants to merge 540 commits into from
Closed

release/3.4.12 minor #3623

wants to merge 540 commits into from

Conversation

djspiewak
Copy link
Member

  • Implement SleepCallback
  • Implement SleepersQueue
  • Add a cancelation mechanism to SleepCallback
  • Complicate the parking mechanism a bit
  • Pretend to handle sleeping fibers
  • Add a sleep method on WorkerThread
  • Implement the sleep method on WorkStealingThreadPool
  • Simplify canceled sleepers handling
  • Worker threads need to fight for their awakening
  • Wire up the new sleeping mechanism in the run loop
  • Restore the correct thread pool state after sleeping
  • Rename the internal sleep method
  • Add a sleep cancelation unit test
  • Add a link to the openjdk source code
  • Add SleepBenchmark
  • Check ownership of WorkerThread before sleeping
  • WorkStealingThreadPool extends Scheduler
  • Switch the default scheduler to the compute pool
  • Add a unit test for foreign execution contexts
  • Directly complete the sleep async callback
  • Re-use the RightUnit instance
  • Highlight uncancelable behavior in MonadCancel#onCancel scaladoc
  • Tweak Async#async and Async#async_ scaladocs about uncancelable behavior
  • Add Async#asyncPoll for Consider an Async utility to encapsulate double-check registration #3087
  • Format sources with scalafmt
  • Add three more AsyncLaws tests and spec for basic Async implementation
  • Fix scalafix
  • Fix Async#async scaladoc
  • Update sbt-scalafix to 0.10.4 in series/3.x
  • Taking a quick stab at changing async_'s cancelation semantics
  • Update scalafmt-core to 3.6.0 in series/3.x
  • Update sbt-java-formatter to 0.8.0 in series/3.x
  • Add IOLocal#scope
  • Update sbt to 1.7.3 in series/3.x
  • Update scalafmt-core to 3.6.1 in series/3.x
  • Introduce a BatchingMacrotaskExecutor
  • Rename 'asyncPoll => asyncCheckAttempt', sync 'Async/IO' scaladoc
  • Update sbt to 1.8.0 in series/3.x
  • Run scalafmtAll
  • never needs to be explicitly cancelable
  • This definitely bumps the base version...
  • Update specs2-core, specs2-scalacheck to 4.19.0 in series/3.x
  • a Defer instance for Resource without Sync
  • Defer Spec
  • Replace IO with Almost-IO in Defer test
  • fix comment
  • organize imports
  • Use PureConc for Resource Tests
  • remove excess import (somehow missed by scalafix)
  • hacking around to find instances for PureConc in 2.12
  • Update sbt-scalajs, scalajs-compiler, ... to 1.11.0 in series/3.x
  • Update tests/shared/src/test/scala/cats/effect/ResourceSpec.scala
  • rename var
  • Redefinition of never
  • Fixed cancelation leaks in Resource.cont
  • Scalafmt
  • Sigh... scalafix
  • Removed references to external IORuntime from sleep unhappy path
  • Fixed memory leak in sleep cancelation
  • Fixed reference to global executor
  • A combinator to flatten a modification of a Ref.
  • sbt prePR
  • This definitely bumps the base version
  • Disable starvation checker in SleepDrift test
  • Removed errant println
  • Fixed blockOn mechanism for integrated timers
  • Moved WSTP tests into platform spec
  • Removed unused import
  • Update nscplugin, sbt-scala-native, ... to 0.4.9 in series/3.x
  • Update scala-java-time to 2.5.0 in series/3.x
  • Use batching only for IOFiber#schedule
  • Fix BatchingMacrotaskExecutor implementation
  • Wip test spec
  • Rearrange platform checks
  • Make batching ec fiber-aware
  • Restore deque-based implementation
  • Fix bugs
  • Add comments to spec
  • Fix "limit batch sizes" test
  • Organize imports
  • Add MiMa filter
  • Comments and scaladocs
  • Another mima filter
  • More efficient fiber monitoring
  • Update comment
  • Add IO#voidError
  • Fix compile
  • Add IO#supervise and IO#toResource.
  • Add IO#metered.
  • Ensure flatModify is atomic in that if the Ref updates then the effect will be run.
  • Improve documentation.
  • Improve formatting.
  • Revert to the existing implementation and improve the documentation.
  • Use asyncCheckAttempt in IODeferred#get
  • Add 'IOLocal.lens' method to produce lens 'IOLocal[B]' from getter and setter
  • fix tests under Scala 3
  • add 'IOLocal.lens' to core MIMA exceptions (IOLocal is sealed)
  • Generalize IOLocalSpec tests for IOLocal[A] instances
  • comment about lens composition impl details
  • move common methods to 'IOLocal', check 'IOLocal.lens' stack safety
  • Update sbt to 1.8.2 in series/3.x
  • Remove flatModify entirely due to the controversy it causes pertaining to cancelability.
  • Use Concurrent for AtomicCell
  • Improve Mutex implementation
  • Update sbt-typelevel to 0.5.0-M9 in series/3.x
  • Attempt to improve LockChain
  • Add a Concurrent based implementation of AtomicCell
  • Re-Add Concurrent based Mutex implementation
  • Add 'fromFutureCancelable` and friends
  • Fix test
  • Make executeBatchTask an object
  • Make link-time condition elidable
  • Expose config for BatchingMacrotaskExecutor
  • First try at JSArrayQueue
  • Add JSArrayQueueSpec
  • isEmpty() is side-effectful
  • Bug fix
  • Use JSArrayQueue in batching EC
  • Directly use queueMicrotask
  • Rollback Scala.js bump
  • Update scalafmt-core to 3.7.1 in series/3.x
  • Reformat with scalafmt 3.7.1
  • Add 'Reformat with scalafmt 3.7.1' to .git-blame-ignore-revs
  • Sketch of thread blocking detection
  • Add TODO
  • Don't select current thread for block detection
  • Account for other blocked thread states and intentional thread parking
  • Better scaladoc
  • Typo
  • Fix benchmarks
  • Add mimia exclusion
  • Make stub test trivially pass on JS
  • Cache executeBatchTaskJSFunction
  • Protect timers against Long overflow
  • Update Resource.scala comments to clarify that release is only run when acquire succeeds
  • Fix bincompat warnings (I think...)
  • Register JS test
  • scalafmt once again
  • Apparently I can't hide old version yet
  • Deprecate old workstealing threadpool constructor method
  • Don't run test on JS
  • scalafix :eye-roll:
  • Don't run blocking check if pool is of size 1
  • IOLocal - generalize scope function
  • Update Scala 3, Scala.js, Scala Native
  • Make helpers private
  • Remove AsyncAtomicCell
  • Make helpers private
  • Re-add AsyncAtomicCell
  • Fix AtomicCell example
  • Add AtomicCell benchmark
  • Add Mutex benchmark
  • Remove IOLocal#scope, revert Add IOLocal#scope #3214
  • Add Mutex cancellation benchmark
  • Fix benchmarks
  • Add circle ci config
  • Rename job
  • Fix config
  • Run testsNative/test specifically
  • Set no_output_timeout
  • Try setting up Cirrus
  • More memory
  • More generic CI detection
  • Fix sbt command, try less memory
  • Add 'flatModify', 'flatModifyFull' and corresponding 'State' methods to 'Ref'
  • Fix formatting
  • Try moving everything to Cirrus
  • Try installing clang
  • Try a custom Dockerfile
  • Less CPUs
  • Run apt-get update
  • Extract UnsafeUnbounded
  • Implement async mutex with UnsafeUnbounded
  • Add test for canceled waiters
  • Fix mutex release bug
  • Add test for deadlock under contention
  • Fix release race condition
  • Tweak mutex happy path benchmark
  • MiMa filters
  • Swap parameter order
  • Simplify branching logic for enabling thread blocking detection
  • Avoid looping while looking for another thread to check blocked status
  • Fix benchmarks
  • Revert access change to workerThreads field
  • Fix naming ambiguity for scala 3
  • Restore bounds check
  • Make FailureSignal an object, prefetch it
  • A slightly wider margin on real-time tests
  • Use shadowing
  • Update sbt-mdoc to 2.3.7 in series/3.x
  • Update specs2-core, specs2-scalacheck to 4.19.2 in series/3.x
  • Update sbt-jmh to 0.4.4 in series/3.x
  • Add docs highlighting when to use thread blocking detection
  • Note that thread blocking detection is relatively expensive
  • Add missing import
  • Update headers
  • Fix git merge fail (???)
  • Formatting
  • Unified scheduler init defaults with IOApp
  • Nix shell -> Nix flake
  • Fixed loop when timers expire with an empty external queue
  • Fix NPE in blocked thread detection
  • Further optimize IODeferred
  • Added some extra test comments
  • Update flake.lock to get singleton LLVM_BIN
  • Corrected handling of self-cancelation within timeout
  • Updated Resource#race to match corrected semantics
  • Expand Ref#flatModify doc and use where appropriate
  • Use Ref#flatModifyFull in some places
  • Expand flatModifyFull doc
  • Update scalafmt-core to 3.7.2 in series/3.x
  • Added cancelable
  • Added FAQ entry describing canceling delay/blocking
  • Added missing parentheses
  • Added a few more words to cancelable faq
  • Added caveat regarding "proper" approach to FileInputStream
  • Swapped IO(...) for IO.blocking(...)
  • Make readLine cancelable via stdin reader thread
  • Add a test
  • Formatting
  • flake.lock: Update
  • Test that reads with wrong charset are rejected
  • Setup dependabot for Docker CI image
  • Don't shadow println in IOFiber
  • Fix typo in docs
  • Fix IORuntimeBuilder failureReporter config on JS
  • Make HotSwap safe to concurrent access
  • Add test for concurrent release
  • Add MiMa filter
  • Add test for concurrent access
  • Fix concurrent access to current resource
  • Allow that the renamed blocker thread is terminated
  • Update sbt-typelevel to 0.5.0-M10 in series/3.x
  • Fix "support re-enablement via cancelable" test
  • flake.lock: Update
  • add console as config in ioRuntimeConfig, pass it to CPUStarvation
  • Update scaladoc
  • Add TimerSkipList stub
  • Use the stub in the WSTP
  • Add TimerSkipList (ref 9e5fec4f)
  • scalafmt
  • Fix bug when parking with an expired timer
  • Remove unused code, port some existing tests
  • scalafix, scalafmt
  • Add skip list tests
  • Add parallel skip list tests
  • Add test with a lot of IO.sleep
  • Add a JCStress test
  • Try to run JCStress test in CI
  • provide a function to process metrics manually, defaulting to console logging
  • fix scaladoc
  • Smaller test size in js and native
  • Update nscplugin, sbt-scala-native, ... to 0.4.11 in series/3.x
  • Stealing timers
  • Even smaller test size in js
  • Kick CI
  • Decrease iterations (CI could just be slow)
  • Add more JCStress tests
  • Reduce indirections by using AtomicReferenceFieldUpdater
  • javafmt
  • Try to fix java warnings
  • Kick CI
  • Kick CI
  • Increase durations for ContSpec
  • Use realWithRuntime instead of new Scheduler
  • flake.lock: Update
  • More JCStress tests
  • Try to fix JCStress tests
  • Use unique names for Cirrus CI jobs
  • Update nscplugin, sbt-scala-native, ... to 0.4.12 in series/3.x
  • Another JCStress test
  • Cleanup
  • Remove long stress test (it's too much for CI)
  • Additional sleep benchmark
  • Handle sleep in a smarter way
  • Kick CI
  • flake.lock: Update
  • Update scalafmt-core to 3.7.3 in series/3.x
  • Add tests for Random class
  • Formatting
  • AtomicCell#get should not semantically block
  • Doc updates
  • Release gate in evalModify
  • Update scaladoc
  • Refactor tests to use replicateA and no-op assert
  • flake.lock: Update
  • Update sbt-scala-native-crossproject, ... to 1.3.0 in series/3.x
  • Add test for timer stealing
  • Update sbt-scalajs, scalajs-compiler, ... to 1.13.1 in series/3.x
  • flake.lock: Update
  • Avoid compiler error using randomBoolean, int, long
  • Abstract check in range and shuffle Sequence
  • Abstract tests
  • TestRandom with different Randoms
  • Fix bincompat
  • Fix get performance regression
  • Remove unnecessary cast
  • Update sbt-scala-native-crossproject, ... to 1.3.1 in series/3.x
  • Move racing sleep test to JVM
  • Add failing test
  • Fix mutex cancelled acquire
  • scalafmt
  • Add Apple Silicon to Native CI matrix
  • Add high-core JVM Apple Silicon to CI matrix
  • Modify test to reproduce In theory, waiters can be lost in Mutex #3554
  • Fix mutex cancelled acquire even more
  • Fix problem with nextGaussian test
  • Decrease test timeout
  • Fewer iterations on JS/native
  • Formatting
  • Make sure a timeout fails the test
  • fromFuture => fromFutureCancelable
  • 1 minute is not enough in CI
  • flake.lock: Update
  • Decrease iterations because CI is slow
  • Revert Mutex implementation
  • Replace isFinite with java.lang.Double.isFinite
  • Add Mutex test: handle multiple concurrent cancels during release
  • Fix Mutex.AsyncImpl for the new concurrent test
  • Add Mutex test: preserve waiters order (fifo) on a non-race cancellation
  • maybe ticked won't be flaky?
  • Revert "maybe ticked won't be flaky?"
  • Add Mutex test: cancellation must not corrupt Mutex
  • hear me out: what if we make it differently flaky
  • Revert AsyncMutex implementation to the LockChain based one
  • Make blockedThreadDetectionEnabled configurable via a system property
  • PR feedback
  • wip
  • Add new AsyncMutex implementation
  • Make AsyncMutex.LockQueueCell an AtomicReference itself
  • Fix 'discarded non-Unit value of type Boolean' warning
  • Reduce the number of iterations on MutexSpec.handle multiple concurrent cancels during release
  • Use deferred as the only implementation for Mutex
  • Remove wrapper allocation on Mutex.ConcurrentImpl.LockQueue
  • Update specs2-core, specs2-scalacheck to 4.20.0 in series/3.x
  • Setup CI release
  • Make steal timers test less fragile
  • dispatcher releasing itself rejects new tasks
  • Move action to Typelevel
  • Make TimerSkipListIOSpec faster
  • only check submit is left if result is false
  • Restore a tiny bit of type information for IOFiber#resumeIO
  • Remove unnecessary casts to IO[Any]
  • If we stole something, let's work on it
  • stealTimers returns true iff it stole
  • flake.lock: Update
  • Reduced iteration count to placate CI
  • Remove unnecessary timeoutTo
  • Use isJVM
  • move onCpuStarvationWarn a method
  • fix flakey dispatcher test
  • Allow GC of ConcurrentMutexImpl.LockQueueCell during cancellation
  • Rename ConcurrentMutexImpl variables
  • Update sbt-native-image to 0.3.4 in series/3.x
  • Revised Queue.synchronous internals to simplify concurrent hand-off
  • Use configure-pagefile-action on Windows CI
  • Added test to ensure inner worker awaits are canceled
  • Make the new dispatcher release test deterministic
  • Moved common test to common
  • Update tests/shared/src/test/scala/cats/effect/std/DispatcherSpec.scala
  • Add test for global runtime reset
  • Reset global runtime when it is shutdown
  • Register GlobalShutdown test app on JS
  • Adjusted Queue.synchronous to include a two-phase commit
  • Scalafmt
  • Fixed race condition between offer and canceled take
  • flake.lock: Update
  • Fixed compilation on 2.12
  • Reduce iteration count on non-JVM
  • Added tailrec
  • Add test for stray exceptions in IO.uncancelable
  • Handle stray exceptions in uncancelable body
  • Micro-optimize onError
  • Add test for negative sleeps
  • Treat non-positive sleep durations as cedes
  • Extact delay local val
  • Fixed issue in which failing uncancelable would remain masked for one stage
  • Drafted version update script
  • Automation for the minor PR creation
  • Update versions for 3.4.12

djspiewak and others added 30 commits February 23, 2023 15:06
…re-3.7.2

Update scalafmt-core to 3.7.2 in series/3.x
Corrected handling of self-cancelation within `timeout`
Expand docs for Ref flatModify methods, and use them when appropriate
Flake lock file updates:

• Updated input 'typelevel-nix':
    'github:typelevel/typelevel-nix/4fc06f6d24c1c92792083a1c98fef3cc0120b50a' (2023-02-20)
  → 'github:typelevel/typelevel-nix/8ddd5cee58a7fa73e2499f1631232f210ad03576' (2023-02-27)
• Updated input 'typelevel-nix/devshell':
    'github:numtide/devshell/6fe837bb4f540a1832522ec54604c453757836b2' (2023-02-07)
  → 'github:numtide/devshell/ace1138005c355c84806bbc66f3b7e6a31ecde52' (2023-02-26)
• Updated input 'typelevel-nix/devshell/nixpkgs':
    'github:NixOS/nixpkgs/5efc8ca954272c4376ac929f4c5ffefcc20551d5' (2022-01-28)
  → 'github:NixOS/nixpkgs/9952d6bc395f5841262b006fbace8dd7e143b634' (2023-02-26)
• Updated input 'typelevel-nix/flake-utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
  → 'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13)
• Updated input 'typelevel-nix/nixpkgs':
    'github:nixos/nixpkgs/6ccc4a59c3f1b56d039d93da52696633e641bc71' (2023-02-09)
  → 'github:nixos/nixpkgs/9952d6bc395f5841262b006fbace8dd7e143b634' (2023-02-26)
Co-authored-by: catostrophe <40268503+catostrophe@users.noreply.github.com>
…port-failure

Fix `IORuntimeBuilder` `failureReporter` config on JS
Setup dependabot for Docker CI image
djspiewak and others added 26 commits May 6, 2023 09:16
Reset the global runtime when it is shutdown.
Flake lock file updates:

• Updated input 'typelevel-nix':
    'github:typelevel/typelevel-nix/a1f2cd62720f9043a4ad61363a06427c1e55f789' (2023-05-01)
  → 'github:typelevel/typelevel-nix/bb9774d68fa09d259f490c81546f36ec6774e96a' (2023-05-08)
• Updated input 'typelevel-nix/nixpkgs':
    'github:nixos/nixpkgs/8b3bc690e201c8d3cbd14633dbf3462a820e73f2' (2023-05-01)
  → 'github:nixos/nixpkgs/eb751d65225ec53de9cf3d88acbf08d275882389' (2023-05-07)
Adjusted `Queue.synchronous` to include a two-phase commit
Catch stray exceptions in `uncancelable` body
Treat non-positive sleep durations as `cede`s
Fixed issue in which failing `uncancelable` would remain masked for one stage
@djspiewak djspiewak added the 🤖 label May 13, 2023
@djspiewak
Copy link
Member Author

Pls ignore. Testing

@djspiewak djspiewak closed this May 13, 2023
@djspiewak djspiewak deleted the release/3.4.12-minor branch May 13, 2023 15:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet