diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# Changelog
+
+## 0.1.1 (Dec 2021)
+
+* Support streamly-0.8.1
+
 ## 0.1.0
 
 * Initial release
diff --git a/benchmark/Main.hs b/benchmark/Main.hs
--- a/benchmark/Main.hs
+++ b/benchmark/Main.hs
@@ -1,5 +1,5 @@
 -- |
--- Module      : Streamly.Internal.LZ4.Config
+-- Module      : Main
 -- Copyright   : (c) 2020 Composewell Technologies
 -- License     : Apache-2.0
 -- Maintainer  : streamly@composewell.com
@@ -13,7 +13,7 @@
 import Data.Word (Word8)
 import Data.Function ((&))
 import Streamly.Internal.Data.Array.Foreign (Array)
-import Streamly.Internal.Data.Stream.StreamD (fromStreamD, toStreamD)
+import Streamly.Internal.Data.Stream.IsStream.Type (fromStreamD, toStreamD)
 import Streamly.Prelude (SerialT)
 import System.Directory (getCurrentDirectory, doesFileExist)
 import System.Environment (lookupEnv)
diff --git a/src/Streamly/Internal/LZ4.hs b/src/Streamly/Internal/LZ4.hs
--- a/src/Streamly/Internal/LZ4.hs
+++ b/src/Streamly/Internal/LZ4.hs
@@ -46,7 +46,6 @@
 import Data.Int (Int32)
 import Data.Word (Word32, Word8, byteSwap32)
 import Foreign.C (CInt(..), CString)
-import Foreign.ForeignPtr (plusForeignPtr, withForeignPtr)
 import Foreign.Ptr (Ptr, castPtr, plusPtr)
 import Foreign.Storable (peek, poke)
 import Fusion.Plugin.Types (Fuse (..))
@@ -58,6 +57,7 @@
 import qualified Streamly.Internal.Data.Parser.ParserD as Parser
 import qualified Streamly.Internal.Data.Fold as Fold
 import qualified Streamly.Internal.Data.Stream.StreamD as Stream
+import qualified Streamly.Internal.Data.Stream.IsStream as IsStream
 import qualified Streamly.Internal.Data.Array.Stream.Foreign as ArrayStream
 import qualified Streamly.Internal.Data.Array.Stream.Fold.Foreign as ArrayFold
 
@@ -247,7 +247,7 @@
                 $ error $ "compressChunk: compressed length <= 0."
                     ++ " maxCompLenC: " ++ show maxCompLenC
                     ++ " uncompLenC: " ++ show uncompLenC
-              (MArray.Array fptr dstBegin dstMax) <-
+              (MArray.Array cont dstBegin_ dstBegin dstMax) <-
                   MArray.newArray (maxCompLen + metaSize_)
               let hdrCompLen = dstBegin `plusPtr` compSizeOffset_
                   compData = dstBegin `plusPtr` dataOffset_
@@ -262,10 +262,10 @@
               poke hdrCompLen (toLittleEndian (cIntToI32 compLenC))
               let compLen = cIntToInt compLenC
                   dstEnd = dstBegin `plusPtr` (compLen + metaSize_)
-                  compArr = MArray.Array fptr dstEnd dstMax
+                  compArr = MArray.Array cont dstBegin_ dstEnd dstMax
               -- It is safe to shrink here as we need to hold the last 64KB of
               -- the previous uncompressed array and not the compressed one.
-              Array.unsafeFreeze <$> MArray.shrinkToFit compArr
+              Array.unsafeFreeze <$> MArray.rightSize compArr
     where
 
     metaSize_ = metaSize cfg
@@ -317,7 +317,8 @@
                   error $ "decompressChunk: compressed data length is more "
                     ++ "than the max limit: " ++ show maxCompLenC
 
-              (MArray.Array fptr dstBegin dstMax) <- MArray.newArray uncompLen
+              (MArray.Array cont dstBegin_ dstBegin dstMax)
+                  <- MArray.newArray uncompLen
               decompLenC <-
                   c_decompressSafeContinue
                         ctx compData dstBegin compLenC uncompLenC
@@ -329,7 +330,7 @@
                     ++ "\ndecompLenC = " ++ show decompLenC
               let decompLen = cIntToInt decompLenC
                   dstEnd = dstBegin `plusPtr` decompLen
-                  decompArr = MArray.Array fptr dstEnd dstMax
+                  decompArr = MArray.Array cont dstBegin_ dstEnd dstMax
               -- We cannot shrink the array here, because that would reallocate
               -- the array invalidating the cached dictionary.
               return $ Array.unsafeFreeze decompArr
@@ -455,11 +456,11 @@
         | otherwise = return False
 
     {-# INLINE process #-}
-    process st arr@(Array.Array fb e) = do
+    process st arr@(Array.Array cont b e) = do
         let len = Array.byteLength arr
         if len < 4
         then return $ Stream.Skip $ RAccumulate st arr
-        else withForeignPtr fb $ \b -> do
+        else do
                res <- isEndMark b
                if res
                then return $ Stream.Skip $ RFooter st arr
@@ -477,9 +478,9 @@
                        then return $ Stream.Skip $ RAccumulate st arr
                        else do
                            let arr1E = b `plusPtr` required
-                               arr1 = Array.Array fb arr1E
-                               arr2S = fb `plusForeignPtr` required
-                               arr2 = Array.Array arr2S e
+                               arr1 = Array.Array cont b arr1E
+                               arr2 = Array.Array cont arr1E e
+                           MArray.touch cont
                            return $ Stream.Skip $ RYield arr1 $ RProcess st arr2
 
     {-# INLINE_LATE step #-}
@@ -498,7 +499,7 @@
         r <- step0 gst st
         case r of
             Stream.Yield arr st1 -> do
-                arr1 <- Array.spliceTwo buf arr
+                arr1 <- Array.splice buf arr
                 liftIO $ process st1 arr1
             Stream.Skip st1 -> return $ Stream.Skip $ RAccumulate st1 buf
             Stream.Stop -> error "resizeChunksD: Incomplete block"
@@ -510,7 +511,7 @@
             r <- step0 gst st
             case r of
                 Stream.Yield arr st1 -> do
-                    arr1 <- Array.spliceTwo buf arr
+                    arr1 <- Array.splice buf arr
                     return $ Stream.Skip $ RFooter st1 arr1
                 Stream.Skip st1 -> return $ Stream.Skip $ RFooter st1 buf
                 Stream.Stop -> error "resizeChunksD: Incomplete footer"
@@ -571,8 +572,8 @@
     -> Stream.Stream m (Array.Array Word8)
     -> Stream.Stream m (Array.Array Word8)
 decompressChunksWithD p s = do
-    ((cfg, config), next) <- Stream.fromEffect $ second Stream.toStreamD
-        <$> ArrayStream.fold_ (ArrayFold.fromParser p) (Stream.fromStreamD s)
+    ((cfg, config), next) <- Stream.fromEffect $ second IsStream.toStreamD
+        <$> ArrayStream.foldArr_ (ArrayFold.fromParser p) (IsStream.fromStreamD s)
     decompressChunksRawD cfg (resizeChunksD cfg config next)
 
 -- XXX Merge this with BlockConfig?
diff --git a/src/Streamly/LZ4.hs b/src/Streamly/LZ4.hs
--- a/src/Streamly/LZ4.hs
+++ b/src/Streamly/LZ4.hs
@@ -55,8 +55,8 @@
 import Control.Monad.IO.Class (MonadIO)
 import Data.Word (Word8)
 import Streamly.Internal.Data.Array.Foreign (Array)
-import Streamly.Internal.Data.Stream.StreamD (fromStreamD, toStreamD)
 import Streamly.Prelude (SerialT)
+import Streamly.Internal.Data.Stream.IsStream.Type (fromStreamD, toStreamD)
 
 import Streamly.Internal.LZ4.Config
 import Streamly.Internal.LZ4
diff --git a/streamly-lz4.cabal b/streamly-lz4.cabal
--- a/streamly-lz4.cabal
+++ b/streamly-lz4.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                streamly-lz4
-version:             0.1.0
+version:             0.1.1
 synopsis:            Streamly combinators for LZ4 compression
 description:
     Compress and decompress streams of data using LZ4 compression.  See
@@ -20,6 +20,7 @@
                    , GHC==8.8.4
                    , GHC==8.10.7
                    , GHC==9.0.1
+                   , GHC==9.2.1
 extra-source-files:  CHANGELOG.md
                    , NOTICE
                    , README.md
@@ -58,7 +59,7 @@
   build-depends:       base                >= 4    && < 5
                      , fusion-plugin-types >= 0.1  && < 0.2
                      , exceptions          >= 0.8  && < 0.11
-                     , streamly            >= 0.8  && < 0.9
+                     , streamly            >= 0.8.1 && < 0.8.2
   ghc-options:         -Wall
   default-language:    Haskell2010
   default-extensions:
@@ -76,7 +77,7 @@
   hs-source-dirs:      test
   main-is:             Main.hs
   build-depends:       streamly-lz4
-                     , streamly   >= 0.8    && < 0.9
+                     , streamly   >= 0.8.1  && < 0.8.2
                      , base       >= 4      && < 5
                      , QuickCheck >= 2.13.1 && < 2.15
                      , hspec      >= 2.7    && < 2.9
@@ -91,7 +92,7 @@
   hs-source-dirs:      benchmark
   main-is:             Main.hs
   build-depends:       streamly-lz4
-                     , streamly      >= 0.8    && < 0.9
+                     , streamly      >= 0.8.1  && < 0.8.2
                      , base          >= 4      && < 5
                      , gauge         >= 0.2.5  && < 0.2.6
                      , directory     >= 1.3.0  && < 1.3.8
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,5 +1,5 @@
 -- |
--- Module      : Streamly.Internal.LZ4.Config
+-- Module      : Main
 -- Copyright   : (c) 2020 Composewell Technologies
 -- License     : Apache-2.0
 -- Maintainer  : streamly@composewell.com
@@ -12,7 +12,7 @@
 import Control.Monad.IO.Class (MonadIO(..))
 import Data.Word (Word8)
 import Data.Function ((&))
-import Streamly.Internal.Data.Stream.StreamD (fromStreamD, toStreamD)
+import Streamly.Internal.Data.Stream.IsStream.Type (fromStreamD, toStreamD)
 import System.IO (IOMode(..), openFile, hClose)
 import System.IO.Temp (withSystemTempFile)
 import Test.Hspec (describe, hspec, it, shouldBe)
