Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
f98dafb
Pin cabal to 3.16.1.0 in markdown-doctest CI
harendra-kumar Oct 19, 2026
897f35c
Compare with the pull request base branch in regression CI
harendra-kumar Oct 19, 2026
4cdd1e5
Replace withMaxSuccess by withNumTests
harendra-kumar Mar 8, 2026
fb22f7c
Fix Windows and macOS CI after runner image updates
harendra-kumar Oct 19, 2026
e3947ba
Use cabal 3.16.1.0 in the docspec CI
harendra-kumar Oct 19, 2026
2b15280
Replace the Cirrus CI with a FreeBSD CI based on github vmactions
harendra-kumar Oct 19, 2026
06bcb2b
Note in appveyor.yml that the AppVeyor build is disabled
harendra-kumar Oct 15, 2026
63bbee8
Fix a bug in the "before" unfold combinator
harendra-kumar Jun 5, 2026
a547ff3
Fix refoldIterate emitting additional elem at end
harendra-kumar Jun 6, 2026
df5be9c
Compare the bytes in MutByteArray.unsafeByteCmp when it is run
harendra-kumar Oct 14, 2026
ccb3d8a
Fail on a negative length when deserializing a list
harendra-kumar Oct 14, 2026
3798685
Check the bounds before comparing headers in derived deserializeAt
harendra-kumar Oct 14, 2026
fa394a8
Fix Stream.postscanl for scans terminating without consuming input
harendra-kumar Jun 16, 2026
be41583
Fix overflow in enumerateFromToIntegral
harendra-kumar Jul 2, 2026
482b70e
Fix overflow in enumerateFromToIntegral Unfold
harendra-kumar Jul 2, 2026
eca2f08
Fix enumerateFromTo Unfold
harendra-kumar Jul 2, 2026
48e7e90
Fix asyncClock and timer threads getting killed by GC
harendra-kumar Oct 6, 2026
4ffb3c8
Do not emit an empty array at the end of chunksOf
harendra-kumar Oct 13, 2026
e88236d
Fix the capacity of the array returned by MutArray.appendMax
harendra-kumar Oct 13, 2026
0e2aa40
Fix createMinOf writing to a zero length allocation
harendra-kumar Oct 13, 2026
ba7fc2c
Fix Array.unsnoc returning the tail instead of the init
harendra-kumar Oct 14, 2026
fe446f2
Compare RingArray.getIndex index with the ring length, not byte size
harendra-kumar Oct 14, 2026
5ebe42d
Check the ring head alignment in RingArray.cast
harendra-kumar Oct 14, 2026
d8a3b75
Do not fold an element from an empty ring in RingArray.fold
harendra-kumar Oct 14, 2026
4b52b15
Use the array start offset in RingArray.eqArray and eqArrayN
harendra-kumar Oct 14, 2026
ecb4d3d
Copy only the requested elements in RingArray.Generic.copyToMutArray
harendra-kumar Oct 14, 2026
41d63fd
Finalize the source fold in Fold.refold instead of extracting it
harendra-kumar Oct 14, 2026
f8459fb
Terminate Fold.bracketIO when the inner fold terminates
harendra-kumar Oct 14, 2026
adf3679
Run the Fold.finallyIO action when the inner fold terminates
harendra-kumar Oct 14, 2026
1e90cbc
Sample from the offset index in Fold.sampleFromthen
harendra-kumar Oct 14, 2026
7f66fe9
Report the folds terminating on an input in Fold.distributeScan
harendra-kumar Oct 14, 2026
0161626
Do not restart a finished key in Fold.classify and classifyScan
harendra-kumar Oct 14, 2026
27d4a96
Sample from the offset index in Scanl.sampleFromthen
harendra-kumar Oct 14, 2026
78c6020
Fix the Show instances of Stream.Nested and StreamK.Nested for nesting
harendra-kumar Oct 14, 2026
807cf1c
Combine the first element first in Stream.foldr1
harendra-kumar Oct 14, 2026
6048f45
Find an empty infix in any stream in Stream.isInfixOf
harendra-kumar Oct 14, 2026
9fa784a
Fix openFile on POSIX to work like openFile in base
harendra-kumar Oct 6, 2026
dadd322
Fix splitEndBySeq dropping the last segment
harendra-kumar Oct 6, 2026
278454c
Fix Generic Array "clone" and MutArray indexReader
harendra-kumar Jun 14, 2026
3f8d539
Do not restart a finished key in Scanl.classify
harendra-kumar Oct 14, 2026
e8d5908
Return Nothing before the first input in Scanl.uniqBy
harendra-kumar Oct 14, 2026
d14ca80
Add tests for the fixes backported to streamly-core 0.3.2
harendra-kumar Oct 19, 2026
f6e7c95
Add a changelog section for streamly-core 0.3.2
harendra-kumar Oct 19, 2026
b0e1977
Bump streamly-core package version to 0.3.2
harendra-kumar Oct 19, 2026
4d877ed
Generate streamly-core configure script
harendra-kumar Oct 19, 2026
869a742
Allow streamly-core 0.3.2 in streamly
harendra-kumar Oct 19, 2026
f431d5e
Install binutils-gold in the CircleCI preinstall step
harendra-kumar Oct 19, 2026
c02a846
Use cabal-docspec 0.0.0.20250606 in the docspec CI
harendra-kumar Oct 19, 2026
f0b1bfa
Set CABAL_DIR in the docspec CI
harendra-kumar Oct 19, 2026
6a0d40d
Enable the extensions the doctests need in the docspec CI
harendra-kumar Oct 19, 2026
0a328bc
Enable the extensions the MkType doctests need in the docspec CI
harendra-kumar Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ env: &env
# ------------------------------------------------------------------------
# GHC_OPTIONS: "-Werror"
# For updating see: https://downloads.haskell.org/~ghcup/
GHCUP_VERSION: 0.1.20.0
GHCUP_VERSION: 0.1.50.2
CABAL_REINIT_CONFIG: "y"
LC_ALL: "C.UTF-8"

Expand Down Expand Up @@ -95,6 +95,9 @@ preinstall: &preinstall
then
apt-get install -y gcc
apt-get install -y g++
# A ghc restored from the cache may link with -fuse-ld=gold, gold
# is not in binutils since 2.44.
apt-get install -y binutils-gold
fi

# libgmp required by ghc for linking
Expand Down Expand Up @@ -173,15 +176,17 @@ jobs:
- run:
environment:
GHCVER: "9.8.1"
CABALVER: "3.10.1.0"
CABALVER: "3.16.1.0"
# cabal-docspec looks for the store in ~/.cabal
CABAL_DIR: "/root/.cabal"
CABAL_PROJECT: "cabal.project.doctest"
DISABLE_SDIST_BUILD: "y"
DISABLE_TEST: "y"
DISABLE_BENCH: "y"
DISABLE_DOCS: "y"
ENABLE_DOCSPEC: "y"
DOCSPEC_URL: https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20210111/cabal-docspec-0.0.0.20210111.xz
DOCSPEC_OPTIONS: "--timeout 60 --check-properties --property-variables xs"
DOCSPEC_URL: https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20250606/cabal-docspec-0.0.0.20250606-x86_64-linux.xz
DOCSPEC_OPTIONS: "--timeout 60 --check-properties --property-variables xs -XFlexibleContexts -XFlexibleInstances -XGeneralizedNewtypeDeriving -XTypeOperators -XScopedTypeVariables -XDeriveGeneric"
command: |
sed -i 's/other-modules:/exposed-modules:/g' streamly.cabal
sed -i 's/other-modules:/exposed-modules:/g' core/streamly-core.cabal
Expand Down
106 changes: 0 additions & 106 deletions .cirrus.yml

This file was deleted.

92 changes: 92 additions & 0 deletions .github/workflows/freebsd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# FreeBSD CI
#
# FreeBSD is not a native GitHub Actions runner, so this workflow runs
# the build inside a VM via vmactions/freebsd-vm. It is kept separate
# from haskell.yml because the cache/restore step model in that
# workflow (hackage index, ghcup, deps caches) does not apply inside
# the VM.

name: FREEBSD

on:
workflow_dispatch:
pull_request:
push:
branches:
- release/streamly-0.11

jobs:
build:
name: >-
freebsd-${{ matrix.release }}
${{ matrix.command }}
${{ matrix.ghc_version }}
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.ignore_error }}
strategy:
fail-fast: false
matrix:
include:
- release: "14.5"
command: cabal
ghc_version: 9.14.1
ignore_error: true

steps:
- uses: actions/checkout@v4

- name: Build on FreeBSD
uses: vmactions/freebsd-vm@v1
env:
PACKCHECK_COMMAND: ${{ matrix.command }}
GHCVER: ${{ matrix.ghc_version }}
# For updating see: https://downloads.haskell.org/~ghcup/
GHCUP_VERSION: 0.1.50.2
LC_ALL: C.UTF-8
CABAL_REINIT_CONFIG: y
CABAL_CHECK_RELAX: y
CABAL_PROJECT: cabal.project
# With the default -j (4 CPUs) the VM (6 GB) killed cabal while it
# built fusion-plugin and other dependencies in parallel.
CABAL_BUILD_OPTIONS: "-j2"
DISABLE_BENCH: "y"
DISABLE_DOCS: "y"
DISABLE_SDIST_BUILD: "y"
DISABLE_DIST_CHECKS: "y"
PACKCHECK: "./packcheck.sh"
PACKCHECK_GITHUB_URL: "https://raw.githubusercontent.com/composewell/packcheck"
PACKCHECK_GITHUB_COMMIT: "20514de6ae27035b0406b4ed46d628c806e40b49"
with:
release: ${{ matrix.release }}
usesh: true
copyback: false
envs: >-
PACKCHECK_COMMAND GHCVER GHCUP_VERSION LC_ALL
CABAL_REINIT_CONFIG CABAL_CHECK_RELAX CABAL_PROJECT CABAL_BUILD_OPTIONS
DISABLE_BENCH DISABLE_DOCS DISABLE_SDIST_BUILD DISABLE_DIST_CHECKS
PACKCHECK PACKCHECK_GITHUB_URL PACKCHECK_GITHUB_COMMIT
prepare: |
pkg update
pkg install -y gmake
pkg install -y bash
pkg install -y git
pkg install -y gmp
run: |
if test ! -e "$PACKCHECK"
then
if test -z "$PACKCHECK_GITHUB_COMMIT"
then
echo "PACKCHECK_GITHUB_COMMIT is not specified." >&2
exit 1
fi
PACKCHECK_URL=${PACKCHECK_GITHUB_URL}/${PACKCHECK_GITHUB_COMMIT}/packcheck.sh
curl --fail -sL -o "$PACKCHECK" $PACKCHECK_URL || exit 1
chmod +x $PACKCHECK
elif test ! -x "$PACKCHECK"
then
chmod +x $PACKCHECK
fi
# Use "bash -c" instead of invoking directly to preserve quoted
# arguments in PACKCHECK_COMMAND e.g. DOCSPEC_OPTIONS="--timeout 60".
# Direct invocation would word-split on spaces inside quoted values.
bash -c "$PACKCHECK $PACKCHECK_COMMAND"
39 changes: 36 additions & 3 deletions .github/workflows/haskell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,38 @@ jobs:
steps:
- uses: actions/checkout@v4

# The macOS image may ship Command Line Tools newer than the default
# Xcode (e.g. CLT 27.0 with Xcode 26.6). Linking against the CLT SDK then
# fails with "tapi error: malformed file ... unknown architecture
# arm64e.x1-macos". Select the default Xcode so that the compiler, linker
# and SDK come from the same toolchain. packcheck clears the environment,
# so SDKROOT or DEVELOPER_DIR cannot be used instead.
#
# The GHC bindists for macOS hardcode the CLT SDK path from their build
# machine, e.g. the rts and ghci package confs of GHC 9.14.1 have
# /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib in
# library-dirs, so the linker uses the CLT SDK even when Xcode is
# selected. Point the CLT MacOSX.sdk symlink at the Xcode SDK.
#
# The GHC and dependency cache keys include the Xcode version and build,
# so a runner image with a different Xcode installs GHC afresh.
- name: Select default Xcode (macOS)
id: xcode
if: runner.os == 'macOS'
run: |
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcode-select -p
sdk=$(xcrun --show-sdk-path)
echo "$sdk"
clt=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
if test -L "$clt"; then
ls -ld "$clt"
sudo ln -sfn "$sdk" "$clt"
ls -ld "$clt"
fi
ver=$(xcodebuild -version | awk 'NR==1{v=$2} /Build version/{b=$3} END{print v "-" b}')
echo "toolchain=-xcode-$ver" >> "$GITHUB_OUTPUT"

# This should happen before cache restore.
- name: Remove ~/.ghcup symlink (non-Windows)
if: runner.os != 'Windows'
Expand All @@ -366,7 +398,7 @@ jobs:
with:
path: |
~/.ghcup
key: ${{ matrix.runner }}-${{ matrix.ghc_version }}.${{ matrix.ghc_salt}}
key: ${{ matrix.runner }}-${{ matrix.ghc_version }}.${{ matrix.ghc_salt}}${{ steps.xcode.outputs.toolchain }}

# XXX If we want to invalidate the cache on resolver change we
# should use a separate cache for stack as it should be keyed on
Expand All @@ -384,7 +416,7 @@ jobs:
~/.local/state/cabal
~/.stack
# Bump the key version to clear the cache
key: ${{ matrix.runner }}-${{ matrix.command }}-${{ matrix.ghc_version }}-${{ matrix.name }}
key: ${{ matrix.runner }}-${{ matrix.command }}-${{ matrix.ghc_version }}-${{ matrix.name }}${{ steps.xcode.outputs.toolchain }}

- name: Cache common directories (Windows)
uses: actions/cache@v4
Expand Down Expand Up @@ -449,7 +481,8 @@ jobs:
export GHCUP_INSTALL_BASE_PREFIX=$HOME
;;
CYGWIN*|MINGW*|MSYS*)
PATH_VAR="$PATH_VAR:/c/Program Files/7-Zip:/mingw64/bin"
# Git for Windows 2.56 moved /mingw64 to /ucrt64
PATH_VAR="$PATH_VAR:/c/Program Files/7-Zip:/ucrt64/bin:/mingw64/bin"
;;
esac
# Use "bash -c" instead of invoking directly to preserve quoted
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/markdown-doctest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,17 @@ jobs:

- name: Download ghc
run: |
GHCUP_VER=0.1.20.0
GHCUP_VER=0.1.50.2
curl -sL -o ./ghcup https://downloads.haskell.org/~ghcup/$GHCUP_VER/x86_64-linux-ghcup-$GHCUP_VER
chmod +x ./ghcup
GHCVER=9.8.1
./ghcup install ghc $GHCVER
./ghcup set ghc $GHCVER
# cabal-3.18 requires a packages field in cabal.project.markdown-doctest
CABALVER=3.16.1.0
./ghcup install cabal $CABALVER
./ghcup set cabal $CABALVER
cabal --version
cabal update

- uses: actions/cache@v4
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/regression-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,12 @@ jobs:
# -- Generate reports for the base branch and upload
# -----------------------------------------------------------------

# The benchmark targets are those of this branch, compare with the branch
# the pull request targets, not with master.
- name: Checkout the base branch
uses: actions/checkout@v2
with:
ref: master
ref: ${{ github.base_ref || 'release/streamly-0.11' }}
clean: false

- name: Run benchmarks
Expand Down
2 changes: 1 addition & 1 deletion .packcheck.ignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
.hlint.ignore
.hlint.yaml
.packcheck.ignore
.cirrus.yml
.github/workflows/freebsd.yml
appveyor.yml
benchmark/bench-runner/default.nix
benchmark/bench-runner/cabal.project
Expand Down
5 changes: 5 additions & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# DISABLED: The AppVeyor webhook is deactivated in the GitHub repository
# settings because the network package fails to build on the old Windows
# images that AppVeyor uses. The GitHub Actions Windows build covers Windows.
# To enable it again, re-activate the webhook (Settings -> Webhooks).

# packcheck-0.7.1
# You can use any of the options supported by packcheck as environment
# variables here. See https://github.com/composewell/packcheck for all
Expand Down
Loading
Loading