diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5bf7586..90d1137 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,38 +8,58 @@ env: on: push: - branches: [ master ] + tags: + - v[0-9]+.[0-9]+.[0-9]+* + branches: [master] pull_request: - branches: [ master ] + branches: [master] + release: jobs: build: - runs-on: windows-latest permissions: packages: write contents: read steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup .NET Core - uses: actions/setup-dotnet@v4 - with: - dotnet-version: | - 8.0.x - - name: Restore - run: dotnet tool restore - - name: Build - run: dotnet build -c Release - - name: Test - run: dotnet test --no-build -c Release tests - - name: Pack - run: dotnet pack --no-restore -c Release --include-symbols -o bin - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - with: - name: nupkg-${{ matrix.runs-on }} - path: ./bin/*nupkg + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + 8.0.x + - name: Set env + if: startsWith( github.ref, 'refs/tags/v' ) + run: | + RELEASE_VERSION="${GITHUB_REF#refs/*/}" + echo "RELEASE_VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV + echo "Version=${RELEASE_VERSION:1}" >> $GITHUB_ENV + + - name: Restore + run: dotnet tool restore + - name: Build + run: dotnet build -c Release + - name: Test + run: dotnet test --no-build -c Release tests + - name: Pack + run: dotnet pack --no-restore -c Release --include-symbols -o bin + + - name: Upload Test Results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: verify-test-results + path: | + **/*.received.* + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: nupkg-${{ matrix.runs-on }} + path: ./bin/*nupkg + - name: Push + if: startsWith( github.ref, 'refs/tags/v' ) + run: dotnet nuget push bin\*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_KEY }} diff --git a/.github/workflows/private-publish.yml b/.github/workflows/private-publish.yml index 9e49279..9f92674 100644 --- a/.github/workflows/private-publish.yml +++ b/.github/workflows/private-publish.yml @@ -11,26 +11,25 @@ on: jobs: build: - runs-on: windows-latest steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup .NET Core - uses: actions/setup-dotnet@v4 - with: - dotnet-version: | - 8.0.x - - name: Restore - run: dotnet tool restore - - name: Build - run: dotnet build -c Release - - name: Test - run: dotnet test --no-build -c Release tests - - name: Pack - run: dotnet pack -c Release --include-symbols -o bin - - name: Push Package to Local Feed - run: dotnet nuget push bin\*.nupkg -s https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json -k ${{ secrets.GITHUB_TOKEN }} + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + 8.0.x + - name: Restore + run: dotnet tool restore + - name: Build + run: dotnet build -c Release + - name: Test + run: dotnet test --no-build -c Release tests + - name: Pack + run: dotnet pack --no-restore -c Release --include-symbols -o bin + - name: Push Package to Local Feed + run: dotnet nuget push bin\*.nupkg -s https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json -k ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3c5de2d..5cf8f3e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -11,26 +11,32 @@ on: jobs: build: - runs-on: windows-latest steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup .NET Core - uses: actions/setup-dotnet@v4 - with: - dotnet-version: | - 8.0.x - - name: Restore - run: dotnet tool restore - - name: Build - run: dotnet build -c Release - - name: Test - run: dotnet test --no-build -c Release tests - - name: Pack - run: dotnet pack --no-build -c Release --include-symbols -o bin - - name: Push Package to NuGet.org - run: dotnet nuget push bin\*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_KEY }} + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + 8.0.x + - name: Set env + if: startsWith( github.ref, 'refs/tags/v' ) + run: | + RELEASE_VERSION="${GITHUB_REF#refs/*/}" + echo "RELEASE_VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV + echo "Version=${RELEASE_VERSION:1}" >> $GITHUB_ENV + - name: Restore + run: dotnet tool restore + - name: Build + run: dotnet build -c Release + - name: Test + run: dotnet test --no-build -c Release tests + - name: Pack + run: dotnet pack --no-restore -c Release --include-symbols -o bin + - name: Push + if: startsWith( github.ref, 'refs/tags/v' ) + run: dotnet nuget push bin\*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_KEY }} diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 796fb7f..d0075dd 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,155 +1,200 @@ +### New in 6.1.0 - (Released 2025/3/16) + +- Relaxed restriction for `System.Reactive` package to allow versions higher than 5.0 by @xperiandri in +- Updated tools by @xperiandri in +- Make the repo build properly in Appveyor by @marklam in +- Update Versions to 6.x by @deviousasti in +- Create a github build with updated tools. by @marklam in +- Removed trailing whitespaces by @xperiandri in + +## New Contributors + +- @xperiandri made their first contribution in + +**Full Changelog**: + ### New in 6.0.1 - (Released 2024/9/22) -* Updated build system - +- Updated build system + ### New in 6.0.0 - (Released 2024/4/3) -* Release with relaxed support for System.Reactive 6.0 and above - +- Release with relaxed support for System.Reactive 6.0 and above + ### New in 5.0.5 - (Released 2022/5/4) -* No upward bounds on FSharp.Core +- No upward bounds on FSharp.Core ### New in 5.0.4 - (Released 2022/5/4) -* Adds support for IL Trimming [#166](https://github.com/fsprojects/FSharp.Control.Reactive/pull/166) - +- Adds support for IL Trimming [#166](https://github.com/fsprojects/FSharp.Control.Reactive/pull/166) + ### New in 5.0.3 - (Released 2022/5/3) -* Adds support for .NET 6.0 [#165](https://github.com/fsprojects/FSharp.Control.Reactive/pull/165) - +- Adds support for .NET 6.0 [#165](https://github.com/fsprojects/FSharp.Control.Reactive/pull/165) + ### New in 5.0.2 - (Released 2021/3/6) -* Downgrade FSharp.Core requirement 4.7.2 upwards +- Downgrade FSharp.Core requirement 4.7.2 upwards ### New in 5.0.1 - (Released 2021/3/5) -* Update TFMs to align with System.Reactive [#161](https://github.com/fsprojects/FSharp.Control.Reactive/pull/161) -* Now targets .NET Framework 4.7.2, .NET Standard 2.0, .NET Core 3.1 and .NET 5.0 +- Update TFMs to align with System.Reactive [#161](https://github.com/fsprojects/FSharp.Control.Reactive/pull/161) +- Now targets .NET Framework 4.7.2, .NET Standard 2.0, .NET Core 3.1 and .NET 5.0 ### New in 5.0.0 - (Released 2021/2/24) -* Update [System.Reactive to 5.0](https://github.com/dotnet/reactive/releases/tag/rxnet-v5.0.0) -* Support for .Net Framework 4.6 has been removed, as it is no longer support by Rx 5.0 -* Exceptions rethrown inside Rx now are guaranteed to preserve the original stack trace by using ExceptionDispatchInfo consistently across the board. +- Update [System.Reactive to 5.0](https://github.com/dotnet/reactive/releases/tag/rxnet-v5.0.0) +- Support for .Net Framework 4.6 has been removed, as it is no longer support by Rx 5.0 +- Exceptions rethrown inside Rx now are guaranteed to preserve the original stack trace by using ExceptionDispatchInfo consistently across the board. ### New in 4.5.0 - (Released 2020/12/12) -* Add Observable.replayBufferOn [#157](https://github.com/fsprojects/FSharp.Control.Reactive/pull/157) -* Add additional package targets for netstandard2.1 and net5.0 + +- Add Observable.replayBufferOn [#157](https://github.com/fsprojects/FSharp.Control.Reactive/pull/157) +- Add additional package targets for netstandard2.1 and net5.0 ### New in 4.4.2 - (Released 2020/07/03) -* Replace custom IObservable implementations with Rx native [#152](https://github.com/fsprojects/FSharp.Control.Reactive/pull/152) + +- Replace custom IObservable implementations with Rx native [#152](https://github.com/fsprojects/FSharp.Control.Reactive/pull/152) ### New in 4.4.1 - (Released 2020/06/27) -* Update to System.Reactive 4.4.1 [#151](https://github.com/fsprojects/FSharp.Control.Reactive/pull/151) + +- Update to System.Reactive 4.4.1 [#151](https://github.com/fsprojects/FSharp.Control.Reactive/pull/151) ### New in 4.4.0 - (Released 2020/06/10) -* Add `Disposable.disposeWith` [#145](https://github.com/fsprojects/FSharp.Control.Reactive/pull/146) -* Add `Observable.ignoreElements` [#148](https://github.com/fsprojects/FSharp.Control.Reactive/pull/148) + +- Add `Disposable.disposeWith` [#145](https://github.com/fsprojects/FSharp.Control.Reactive/pull/146) +- Add `Observable.ignoreElements` [#148](https://github.com/fsprojects/FSharp.Control.Reactive/pull/148) ### New in 4.3.3 - (Released 2020/06/05) -* Fix try ... with in observe CE [#122](https://github.com/fsprojects/FSharp.Control.Reactive/pull/144) -* Refine fix for Observable.choose [#143](https://github.com/fsprojects/FSharp.Control.Reactive/pull/143) + +- Fix try ... with in observe CE [#122](https://github.com/fsprojects/FSharp.Control.Reactive/pull/144) +- Refine fix for Observable.choose [#143](https://github.com/fsprojects/FSharp.Control.Reactive/pull/143) ### New in 4.3.2 - (Released 2020/06/05) -* Fix disposable composition [#139 and #140](https://github.com/fsprojects/FSharp.Control.Reactive/pull/141) + +- Fix disposable composition [#139 and #140](https://github.com/fsprojects/FSharp.Control.Reactive/pull/141) ### New in 4.3.1 - (Released 2020/06/05) -* Fix issue with Observable.choose [#131](https://github.com/fsprojects/FSharp.Control.Reactive/pull/128) + +- Fix issue with Observable.choose [#131](https://github.com/fsprojects/FSharp.Control.Reactive/pull/128) ### New in 4.3.0 - (Released 2020/05/21) -* Fix issue [#115](https://github.com/fsprojects/FSharp.Control.Reactive/pull/128) -* Fix issue [#126](https://github.com/fsprojects/FSharp.Control.Reactive/pull/127) -* Fix issue [#129](https://github.com/fsprojects/FSharp.Control.Reactive/pull/130) -* Add tests using Xunit [#118](https://github.com/fsprojects/FSharp.Control.Reactive/pull/118) + +- Fix issue [#115](https://github.com/fsprojects/FSharp.Control.Reactive/pull/128) +- Fix issue [#126](https://github.com/fsprojects/FSharp.Control.Reactive/pull/127) +- Fix issue [#129](https://github.com/fsprojects/FSharp.Control.Reactive/pull/130) +- Add tests using Xunit [#118](https://github.com/fsprojects/FSharp.Control.Reactive/pull/118) ### New in 4.2.0 - (Released 2019/03/06) -* Extensions to F# API + +- Extensions to F# API ### New in 4.1.0 - (Released 2018/06/06) -* Update to System.Reactive 4.0. + +- Update to System.Reactive 4.0. ### New in 4.0.0 - (Released 2018/02/21) -* Support for netstandard-2.0 -* Added Subjects to the core library. -* New FSharp.Control.Reactive.Testing library for a more idiomatic F# API over the Rx Testing library. + +- Support for netstandard-2.0 +- Added Subjects to the core library. +- New FSharp.Control.Reactive.Testing library for a more idiomatic F# API over the Rx Testing library. ### New in 3.5.0 - (Released 2016/12/05) -* Update to Rx 3.0 + +- Update to Rx 3.0 ### New in 3.4.1 - (Released 2016/04/26) -* Restore .NET 4.0 build instead of .NET 4.5. + +- Restore .NET 4.0 build instead of .NET 4.5. ### New in 3.4.0 - (Released 2016/04/24) -* .NET 4.5 and Profile259 builds available. + +- .NET 4.5 and Profile259 builds available. ### New in 3.3.0 - (Released 2016/03/05) -* Added `Disposables` module with a `compose` function that will creates a new `IDisposable` that will dispose the sequence of provided `IDisposable`s. -* Fix `groupByCompare` to actually use the provided `comparer`. + +- Added `Disposables` module with a `compose` function that will creates a new `IDisposable` that will dispose the sequence of provided `IDisposable`s. +- Fix `groupByCompare` to actually use the provided `comparer`. ### New in 3.2.0 - (Released 2015/05/16) -* Bug fix: `subscribeOn` should take an `IScheduler` - * Renamed `subscribeOn` to `subscribeOnContext` to maintain consistency with other, similar functions - * Added `subscribeOn` that takes an `IScheduler` - * Added test for `subscribeOn` -* Added ofAsync, liftAsync, and flatmapAsync + +- Bug fix: `subscribeOn` should take an `IScheduler` + - Renamed `subscribeOn` to `subscribeOnContext` to maintain consistency with other, similar functions + - Added `subscribeOn` that takes an `IScheduler` + - Added test for `subscribeOn` +- Added ofAsync, liftAsync, and flatmapAsync ### New in 3.1.2 - (Released 2015/04/03) -* Remove unnecessary signatures for Observable.Create and add test to demonstrate use. + +- Remove unnecessary signatures for Observable.Create and add test to demonstrate use. ### New in 3.1.1 - (Released 2015/02/12) -* Additional signature fixes to accept F# functions rather than `Func` #51 + +- Additional signature fixes to accept F# functions rather than `Func` #51 ### New in 3.1.0 - (Released 2015/02/12) -* Fixed signature of `Observable.create` to better fit F#. #56 -* Marked `ObservableBuilder.Return` and `ObservableBuilder.ReturnFrom` as `Obsolete` as users should use `Yield` and `YieldFrom`, which allow for multiple results. #53 -* Changed signatures of `RxQueryBuilder` functions `ExactlyOne`, `ExactlyOneOrDefault`, `Find`, `Head`, `HeadOrDefault`, `Last`, and `LastOrDefault` to their Async equivalents. #57 + +- Fixed signature of `Observable.create` to better fit F#. #56 +- Marked `ObservableBuilder.Return` and `ObservableBuilder.ReturnFrom` as `Obsolete` as users should use `Yield` and `YieldFrom`, which allow for multiple results. #53 +- Changed signatures of `RxQueryBuilder` functions `ExactlyOne`, `ExactlyOneOrDefault`, `Find`, `Head`, `HeadOrDefault`, `Last`, and `LastOrDefault` to their Async equivalents. #57 ### New in 3.0.1 - (Released 2014/12/07) -* #48 Some of the Observable functions aren't very composable - * NOTE: Includes breaking changes due to updated function names and signatures -* #47 Replay overloads don't use the window or bufferSize parameters -* Use consistent function types in ObservableBuilder. -* Now using FSharp.Core from NuGet + +- #48 Some of the Observable functions aren't very composable +- NOTE: Includes breaking changes due to updated function names and signatures +- #47 Replay overloads don't use the window or bufferSize parameters +- Use consistent function types in ObservableBuilder. +- Now using FSharp.Core from NuGet ### New in 2.4.0 - (Released 2014/10/14) + Updates courtesty of marklam: -* Changed the distinct functions to take F# functions -* Added a version of ofSeq which uses a scheduler (ofSeqOn) -* Reordered the parameters to scanInit to be more composable -* Corrected some spellings and added some tests +- Changed the distinct functions to take F# functions +- Added a version of ofSeq which uses a scheduler (ofSeqOn) +- Reordered the parameters to scanInit to be more composable +- Corrected some spellings and added some tests ### New in 2.3.7 - (Released 2014/10/14) -* Updated to Rx 2.2.5 -* Updated Paket bootstrapper + +- Updated to Rx 2.2.5 +- Updated Paket bootstrapper ### New in 2.3.6 - (Released 2014/10/13) -* Now generating docs! + +- Now generating docs! ### New in 2.3.0 - (Released 2014/09/26) -* Add QueryBuilder -* Add many more wrappers to Rx from F#, thanks to Jared Hester! + +- Add QueryBuilder +- Add many more wrappers to Rx from F#, thanks to Jared Hester! **Breaking changes** -* New namespace is `FSharp.Control.Reactive` -* `Observable` module is no longer auto-opened with the namespace -* `Observable.zip` now takes parameters in the "correct" order of `obs1` then `obs2` -* `Observable.subscribe` has moved to `Observable.subscribeWithCallbacks` -* `Observable.subscribe` now takes the `onNext` callback only + +- New namespace is `FSharp.Control.Reactive` +- `Observable` module is no longer auto-opened with the namespace +- `Observable.zip` now takes parameters in the "correct" order of `obs1` then `obs2` +- `Observable.subscribe` has moved to `Observable.subscribeWithCallbacks` +- `Observable.subscribe` now takes the `onNext` callback only **TODO** -* Add tests -* Add docs + +- Add tests +- Add docs ### New in 2.2.131002 - (Released 2013/10/02) -* Restructure modules and namespaces to comply with F# coding guidelines + +- Restructure modules and namespaces to comply with F# coding guidelines ### New in 2.1.131002 - (Released 2013/10/02) -* Release of F# wrappers for Rx + +- Release of F# wrappers for Rx ### New in 2.0.121121-rc - (Released 2012/11/21) -* Release candidate for F# wrappers for Rx based on Rx 2.0-rtm + +- Release candidate for F# wrappers for Rx based on Rx 2.0-rtm ### New in 2.0.6-rc - (Released 2012/07/26) -* Initial NuGet release of F# wrappers for Rx 2.0-rc + +- Initial NuGet release of F# wrappers for Rx 2.0-rc