diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,11 @@
 `small-bytearray-builder` is now just a compatibility shim
 to ease the migration process.
 
+## 0.3.6.0 -- 2020-06-30
+
+* Add `replicate`.
+* Fix compatibility with `primitive-0.7.1.0`.
+
 ## 0.3.5.0 -- 2020-05-01
 
 * Add `wordLEB128` and `word64LEB128`.
diff --git a/bytebuild.cabal b/bytebuild.cabal
--- a/bytebuild.cabal
+++ b/bytebuild.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name: bytebuild
-version: 0.3.5.0
+version: 0.3.6.0
 synopsis: Serialize to a small byte arrays
 description:
   This is similar to the builder facilities provided by
diff --git a/src/Data/Bytes/Builder.hs b/src/Data/Bytes/Builder.hs
--- a/src/Data/Bytes/Builder.hs
+++ b/src/Data/Bytes/Builder.hs
@@ -118,10 +118,14 @@
     -- * Encode Floating-Point Types
     -- ** Human-Readable
   , doubleDec
+    -- * Replication
+  , replicate
     -- * Control
   , flush
   ) where
 
+import Prelude hiding (replicate)
+
 import Control.Exception (SomeException,toException)
 import Control.Monad.ST (ST,runST)
 import Control.Monad.IO.Class (MonadIO,liftIO)
@@ -1129,6 +1133,17 @@
       PM.writeByteArray arr off (fromIntegral (z + 0x30) :: Word8)
       go (off + 1) y
     else pure off
+
+-- | Replicate a byte the given number of times.
+replicate ::
+     Int -- ^ Number of times to replicate the byte
+  -> Word8 -- ^ Byte to replicate
+  -> Builder
+replicate !len !w = fromEffect len
+  (\marr off -> do
+    PM.setByteArray marr off len w
+    pure (off + len)
+  )
 
 -- Based on C code from https://stackoverflow.com/a/5558614
 -- For numbers less than 1073741829, this gives a correct answer.
diff --git a/src/Data/Bytes/Builder/Bounded.hs b/src/Data/Bytes/Builder/Bounded.hs
--- a/src/Data/Bytes/Builder/Bounded.hs
+++ b/src/Data/Bytes/Builder/Bounded.hs
@@ -99,13 +99,14 @@
   ) where
 
 import Arithmetic.Types (type (<=), type (:=:))
-import Control.Monad.Primitive
+import Control.Monad.Primitive (primitive_)
 import Control.Monad.ST (ST)
 import Control.Monad.ST.Run (runByteArrayST)
 import Data.Bits
 import Data.Bytes.Builder.Bounded.Unsafe (Builder(..))
 import Data.Char (ord)
-import Data.Primitive
+import Data.Primitive (MutableByteArray(..),ByteArray,writeByteArray)
+import Data.Primitive (readByteArray,newByteArray,unsafeFreezeByteArray)
 import Data.Primitive.ByteArray.Offset (MutableByteArrayOffset(..))
 import Data.WideWord (Word128(Word128),Word256(Word256))
 import GHC.Exts
