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

Version 1.3.4 #1846

Merged
merged 52 commits into from
Mar 6, 2020
Merged

Version 1.3.4 #1846

merged 52 commits into from
Mar 6, 2020

Commits on Dec 13, 2019

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

Commits on Dec 16, 2019

  1. Configuration menu
    Copy the full SHA
    8a6e8d1 View commit details
    Browse the repository at this point in the history
  2. update broadcastIn comment to refer to itself instead of produce

    Rick Busarow authored and qwwdfsad committed Dec 16, 2019
    Configuration menu
    Copy the full SHA
    cc3d8c4 View commit details
    Browse the repository at this point in the history
  3. Fix TestBase example in kdoc

    mareklangiewicz authored and elizarov committed Dec 16, 2019
    Configuration menu
    Copy the full SHA
    f8b3c44 View commit details
    Browse the repository at this point in the history

Commits on Dec 17, 2019

  1. Authenticate in 'kotlin-dev' repo on Bintray

    Michael Kuzmin committed Dec 17, 2019
    Configuration menu
    Copy the full SHA
    476d6de View commit details
    Browse the repository at this point in the history

Commits on Dec 18, 2019

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

Commits on Dec 19, 2019

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

Commits on Dec 25, 2019

  1. Configuration menu
    Copy the full SHA
    70e3583 View commit details
    Browse the repository at this point in the history
  2. Do not request additional worker from 'yield' calls and during post-e… (

    #1728)
    
    Do not request additional worker from 'yield' calls and during post-execution phase in LimitingDispatcher
    
    Fixes #1704
    Fixes #1706
    qwwdfsad committed Dec 25, 2019
    Configuration menu
    Copy the full SHA
    c526c3f View commit details
    Browse the repository at this point in the history
  3. Generate site using Jekyll via Docker

    This makes site-building process more stable and less dependent on the environment, requiring only Docker to be installed locally.
    elizarov committed Dec 25, 2019
    Configuration menu
    Copy the full SHA
    c5e6e03 View commit details
    Browse the repository at this point in the history
  4. Site building docs updated

    elizarov committed Dec 25, 2019
    Configuration menu
    Copy the full SHA
    16d2606 View commit details
    Browse the repository at this point in the history
  5. Fix non-linearizability in ArrayChannel while moving an element fro…

    …m the waiting queue to the buffer
    ndkoval committed Dec 25, 2019
    Configuration menu
    Copy the full SHA
    1f77783 View commit details
    Browse the repository at this point in the history

Commits on Dec 26, 2019

  1. Configuration menu
    Copy the full SHA
    4f24a7a View commit details
    Browse the repository at this point in the history
  2. Flow.flattenMerge benchmark (#1464)

    fmixing authored and qwwdfsad committed Dec 26, 2019
    Configuration menu
    Copy the full SHA
    fe15b6d View commit details
    Browse the repository at this point in the history
  3. ReceiveChannel.receiveAsFlow extension (#1731)

    Experimental ReceiveChannel.receiveAsFlow extension convert channel to flow in fan-out fashion allowing for multi-use.
    * Also, ReceiveChannel.consumeAsFlow is promoted to experimental from preview
    
    Fixes #1490
    elizarov authored and qwwdfsad committed Dec 26, 2019
    Configuration menu
    Copy the full SHA
    345458b View commit details
    Browse the repository at this point in the history

Commits on Jan 15, 2020

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

Commits on Jan 24, 2020

  1. Fix context support in Publisher.asFlow.flowOn

    * When using asFlow().flowOn(...) context is now properly tracked and taken into account for both execution context of the reactive subscription and for injection into Reactor context.
    * Publisher.asFlow slow-path implementation is simplified. It does not sure specialized openSubscription anymore, but always uses the same flow request logic.
    
    Fixes #1765
    elizarov committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    3d59fef View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    642989e View commit details
    Browse the repository at this point in the history

Commits on Jan 28, 2020

  1. Request elements in batches in ReactiveFlow to avoid requesting eleme…

    …nts one by one in a default configuration
    
    Also, partially masks #1766
    qwwdfsad committed Jan 28, 2020
    Configuration menu
    Copy the full SHA
    6810745 View commit details
    Browse the repository at this point in the history

Commits on Feb 4, 2020

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

Commits on Feb 5, 2020

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

Commits on Feb 6, 2020

  1. Fix tests hanging when verifyDump fails

    `runBlocking` waits for all the threads it spawned to finish, so
    if `verifyDump` failed in `RunningThreadStackMergeTest.kt`, the
    tests would just hang: one of the threads would wait for a
    barrier to break, which would never happen.
    dkhalanskyjb authored and qwwdfsad committed Feb 6, 2020
    Configuration menu
    Copy the full SHA
    09cb4bf View commit details
    Browse the repository at this point in the history

Commits on Feb 10, 2020

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

Commits on Feb 11, 2020

  1. Improve test style

    Get rid of Hamcrest, which is uncommon in this codebase, and
    replace as many `assert` statements from other testing frameworks
    as is reasonable with little automation by calls to
    `kotlin.test.*`.
    dkhalanskyjb authored and elizarov committed Feb 11, 2020
    Configuration menu
    Copy the full SHA
    387d1dd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    91e4d77 View commit details
    Browse the repository at this point in the history

Commits on Feb 12, 2020

  1. Configuration menu
    Copy the full SHA
    90a9faf View commit details
    Browse the repository at this point in the history
  2. ConflatedChannel with lock to protect the one-element buffer, double-…

    …linked list used for suspending receivers only.
    mvicsokolova authored and elizarov committed Feb 12, 2020
    Configuration menu
    Copy the full SHA
    0126dba View commit details
    Browse the repository at this point in the history

Commits on Feb 13, 2020

  1. Configuration menu
    Copy the full SHA
    4aa3880 View commit details
    Browse the repository at this point in the history
  2. Improve FieldWalker, don't access JDK classes (#1799)

    * Improve FieldWalker, don't access JDK classes
    
    * Works on future JDKs that forbid reflective access to JDK classes
    * Show human-readable path to field is something fails
    elizarov committed Feb 13, 2020
    Configuration menu
    Copy the full SHA
    b64a23b View commit details
    Browse the repository at this point in the history
  3. Make SafeCollector platform-specific declaration and enforce exceptio… (

    #1793)
    
      
    * Make SafeCollector platform-specific declaration and enforce exception transparency invariant on JVM
        * Make it in an allocation-free manner by using a crafty trick with casting KSuspendFunction to Function and pass a reusable object as a completion
    
    Fixes #1657
    qwwdfsad committed Feb 13, 2020
    Configuration menu
    Copy the full SHA
    de491d2 View commit details
    Browse the repository at this point in the history
  4. Fix a race in some tests for JavaRX integration (#1801)

    An extremely rare race could happen in any of the tests in
    `LeakedExceptionTest` in the following case:
    * `withExceptionHandler` runs the block passed to it;
    * In one of the last iterations of `repeat`, `select` in `combine`
      happens on both flows at the same time, that is, the block that
      was passed to `rx[Something]` runs in two threads
      simultaneously;
    * One of these two threads (thread A) runs anomalously slow;
    * The other thread successfully throws an exception;
    * This exception is propagated to `catch`, so `collect` is
      finished;
    * `repeat` is exited, the block passed to `withExceptionHandler` is
      done executing;
    * `withExceptionHandler` sets back the usual exception handler,
      which fails when an exception in JavaRX happens (see
      https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling);
    * Thread A wakes up and throws an exception. This time, it is
      passed not to `handler`, which is made specifically to deal with
      this, but to the default handler.
    
    As a fix, now a special coroutine context passed to `rx[Something]`
    ensures that the spawned executions are run in a thread pool that
    blocks until all the tasks are done.
    dkhalanskyjb committed Feb 13, 2020
    Configuration menu
    Copy the full SHA
    9f4fd70 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    455c255 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    1ed6fcc View commit details
    Browse the repository at this point in the history

Commits on Feb 14, 2020

  1. Use a separate Knit tool (#1486)

    * Use a separate Knit tool version 0.1.2
    * Hierarchical knit.properties files are introduced which are
      gathered while walking up the directory tree with the properties
      in knit resources being top-level ones.
    * Freemarker templates for "knit.include" (top-level of example files)
      and "test.template" (test template) are introduced with locations that
      are resolved from properties.
    * KNIT and TEST_OUT directives are not supported anymore.
     - Knitting is controlled by "knit.dir" and "knit.pattern" props.
     - "test.name" prop or TEST_NAME directive drives test gen.
    * All markdown files are now clean of top-level knit-related boilerplate
      (only TEST_NAME directive is remaining in some)
    * All example files are renumbered. It affects example-basic-xx,
      which had the legacy numbering with later insertions.
    * All auto-generated files now have the correct source-file name
      specified at their beginning, due to consistent use of template
      substitution.
    * No need to customize knit.pattern anymore (works out-of-the box)
    * "knit.name" is automatically generated based on example's file name
      "example-basic-01" -> "exampleBasic01"
    * Not match-pattern-group woodoo anymore, "knit.pattern" cannot have any
      user-defined match groups.
    * No need to look for "package xxx" in knitted sources, as the
      example's package is always ${knit.package}.${knit.name}
    * Simpler test names:
      testKotlinxCoroutinesGuideBasic01 -> testExampleBasic01
    * Replaced END_TOC with END directive
    * Build-scripts are improved:
      - Consistent code to use mavenLocal when snapshots versions are used.
      - Proper substitution logic to use Android AAR files so that Dokka has correct links to Google APIs.
      - Google repository is added to all projects.
    elizarov committed Feb 14, 2020
    Configuration menu
    Copy the full SHA
    660c2d7 View commit details
    Browse the repository at this point in the history
  2. Build project using JDK 11 (#1733)

    * Support build on both JDK 1.8 & 11, check for publishing under JDK 11
    * Up the Robolectric version to support JDK11.
      According to robolectric/robolectric#4085, by 4.0.2
    it should support JDK11.
      Tests do pass after setting the version to 4.0.2, but they fail for every version released after that up to 4.3.1.
      It is unclear what causes this. I commit this to check how it works on the build agents, as some comments in the issue imply that on MacOS this version, too, does not work with JDK11.
    * Fix fully qualified names in stacktraces in tests:
      - With move to JDK11, the `park` method changed its fully qualified name.
    * Add new sanitazing to verification of stacktraces:
      - Now stacktraces have additional substrings, separated by a slash:
        java-base/java.util.lang
      - They are stripped away.
      - Also, the placement of tabs has changed, and so the tabs are also completely removed.
    * Refactor `verifyStackTrace`
      - It used to wrap the only loop where something happened in two other loops that did nothing. Now, only the innermost loop is left.
    * Use a separate JavaFx dependency.
    * Improve error handling for JavaFX initialization
      - Now, the JavaFX initialization may fail with an exception in case something went wrong.
      - The driver for this change was that the initialization started hanging in headless environments with transition to JDK 11.
      - Before, the initialization logic had a flaw. If a call to one API
    failed, another API would be attempted. However, this approach is
    problematic: if the first call failed with an exception for some
    reason, it would leave JavaFX in a broken state where a flag would
    imply that the system is being initialized. Subsequent calls would
    then proceed to wait forever for the initialization to complete.
      - Now, exceptions are checked more carefully, ensuring that we only
    fall back to the internal API in case the public one is unavailable
    and not failed for some valid reason. This differentiation also
    allows to more boldly rethrow exceptions upwards, being more or
    less confident that these are relevant to the user.
    * Additionally test JavaFX integration with JDK8
    
    Co-authored-by: Dmitry Khalanskiy <dmitry.khalanskiy@jetbrains.com>
    Co-authored-by: Roman Elizarov <elizarov@gmail.com>
    elizarov and dkhalanskyjb committed Feb 14, 2020
    Configuration menu
    Copy the full SHA
    1ac3dc2 View commit details
    Browse the repository at this point in the history
  3. Optimize the size of the coroutines library in Android projects (#1282)

    * Includes additional R8 rules to disable debugging & stack-trace recovery in optimized
    Android builds. Additional savings with AGP 4.0.0-alpha06 (r8-2.0.4-dev) are ~16kb
    in uncompressed DEX size.
    * Tests are modified to verify that the classes that are supposed to be removed are
    indeed removed.
    * Cleaner build logic without error-prone "return" in the middle
    * Report the size of optimized Android Dex as teamcity metric
    elizarov committed Feb 14, 2020
    Configuration menu
    Copy the full SHA
    bf9509d View commit details
    Browse the repository at this point in the history

Commits on Feb 18, 2020

  1. Update copyright year

    qwwdfsad committed Feb 18, 2020
    Configuration menu
    Copy the full SHA
    6d1a6e3 View commit details
    Browse the repository at this point in the history

Commits on Feb 21, 2020

  1. Make publication validator part of the project (#1820)

    Before, publication validator was just lying nearby, in these
    files, and built and run separately. Now, it is compiled
    alongside the main project (in the `test` gradle configuration), so
    its breakage will be detected during normal usage. Still, it is
    only run when a special gradle property, `DeployVersion`, is
    defined.
    dkhalanskyjb committed Feb 21, 2020
    Configuration menu
    Copy the full SHA
    3651276 View commit details
    Browse the repository at this point in the history

Commits on Feb 26, 2020

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

Commits on Mar 3, 2020

  1. Configuration menu
    Copy the full SHA
    d4fabbf View commit details
    Browse the repository at this point in the history
  2. Restore AsyncJvmTest

    qwwdfsad committed Mar 3, 2020
    Configuration menu
    Copy the full SHA
    ca1093c View commit details
    Browse the repository at this point in the history
  3. Atomically start coroutines in intermediate Flow operators in order t…

    …o ensure proper termination, including finally blocks and onCompletion operators (#1829)
    
    Fixes #1825
    qwwdfsad committed Mar 3, 2020
    Configuration menu
    Copy the full SHA
    4a53d23 View commit details
    Browse the repository at this point in the history

Commits on Mar 4, 2020

  1. Kotlin 1.3.70 (#1837)

    * atomicfu version 0.14.2
    elizarov committed Mar 4, 2020
    Configuration menu
    Copy the full SHA
    cf473d2 View commit details
    Browse the repository at this point in the history
  2. Knit version 0.1.3 (#1838)

    elizarov committed Mar 4, 2020
    Configuration menu
    Copy the full SHA
    c684d04 View commit details
    Browse the repository at this point in the history
  3. Simpler and faster lock-free linked list (#1565)

    Lock-free list implementation is considerably simplified, taking into
    account a limited number of operations that it needs to support.
    
    * prev pointers in the list are not marked for removal, since we
      don't need to support linearizable backwards iteration.
    * helpDelete method is completely removed. All "delete-helping" is
      performed only by correctPrev method.
    * correctPrev method bails out when the node it works on is removed to
      reduce contention during concurrent removals.
    * Special open methods "isRemoved" and "nextIfRemoved" are introduced
      and are overridden in list head class (which is never removed).
      This ensures that on long list "removeFist" operation (touching head)
      does not interfere with "addLast" (touch tail). There is still
      sharing of cache-lines in this case, but no helping between them.
    
    All in all, this improvement reduces the size of implementation code
    and makes it considerably faster. Operations on LinkedListChannel are
    now much faster (see timings of ChannelSendReceiveStressTest).
    elizarov committed Mar 4, 2020
    Configuration menu
    Copy the full SHA
    6862afc View commit details
    Browse the repository at this point in the history
  4. Implement ObservableValue<T>.asFlow() (#1789)

    * Implement ObservableValue<T>.asFlow()
    
    Fixes #1695
    dkhalanskyjb committed Mar 4, 2020
    Configuration menu
    Copy the full SHA
    12e96cd View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    d831a86 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    8d8a8fb View commit details
    Browse the repository at this point in the history

Commits on Mar 5, 2020

  1. Configuration menu
    Copy the full SHA
    214f156 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c67aed0 View commit details
    Browse the repository at this point in the history

Commits on Mar 6, 2020

  1. Fixed memory leak on a race between adding/removing from lock-free li…

    …st (#1845)
    
    * The problem was introduced by #1565. When doing concurrent add+removeFirst the following can happen:
      - "add" completes, but has not correct prev pointer in next node yet
      - "removeFirst" removes freshly added element
      - "add" performs "finishAdd" that adjust prev pointer of the next node and thus removed element is pointed from the list again
    * A separate LockFreeLinkedListAddRemoveStressTest is added that reproduces this problem.
    * The old LockFreeLinkedListAtomicLFStressTest is refactored a bit.
    elizarov committed Mar 6, 2020
    Configuration menu
    Copy the full SHA
    7df61ee View commit details
    Browse the repository at this point in the history
  2. Version 1.3.4

    qwwdfsad committed Mar 6, 2020
    Configuration menu
    Copy the full SHA
    bb3cf09 View commit details
    Browse the repository at this point in the history