Releases: purescript-node/purescript-node-buffer
v9.0.0
Breaking changes:
-
Expose Buffer API using typeclass-less API without removing typeclass API (#53 by @JordanMartinez)
Previously, compiler would fail to infer the type of
Buffer.create 1
asEffect Buffer
because the Buffer API was exposed only via the multiparameter typeclassMonadBuffer
.
Due to the functional dependency between the two parameters, the monadic type cannot be inferred
until the buffer type is known (eitherBuffer
orSTBuffer
).:import Node.Buffer as Buffer -- Example 1 main :: Effect Unit main = do x <- Buffer.create 1 -- compiler: is this `Int -> Effect Buffer` or `Int -> ST h (STBuffer h)? pure unit
The workaround was to add a type annotation, indicating the
x
is aBuffer
:import Node.Buffer as Buffer -- Example 2 main :: Effect Unit main = do x :: Buffer <- Buffer.create 1 -- compiler: Oh! It's `Int -> Effect Buffer` pure unit
This change does not break anyone's code if one was using a
create
(or another such typeclass member)
to getInt -> Effect Buffer
. Rather, such users can now drop the:: Buffer
annotation
(i.e. Example 1 above now compiles).If one was using
create
to getforall m buf. MonadBuffer buf m => Int -> m buf
,
then one will need to update their imports:-import Node.Buffer (class MonadBuffer) +import Node.Buffer.Class (class MonadBuffer)
New features:
-
Added the following APIs (#55 by @JordanMartinez)
Buffer.alloc
,Buffer.allocUnsafe
,Buffer.allocUnsafeSlow
Buffer.poolSize
,Buffer.setPoolSize
buffer.swap16
,buffer.swap32
,buffer.swap64
buffer.compare
: https://nodejs.org/docs/latest-v18.x/api/buffer.html#bufcomparetarget-targetstart-targetend-sourcestart-sourceendbuffer.toString(encoding, start, end)
: https://nodejs.org/docs/latest-v18.x/api/buffer.html#buftostringencoding-start-endbuffer.transcode(buf, from, to)
- constants:
-
Added a new data constructor for
Encoding
:Base64Url
(#56 by @JordanMartinez)
Bugfixes:
Other improvements:
- Format code with
purs-tidy
; enforce in CI (#52 by @JordanMartinez) - Update FFI to use uncurried functions (#54 by @JordanMartinez)
- Removed
Internal.purs
file (#54 by @JordanMartinez) - Bumped CI's node version to
lts/*
(#55/#57 by @JordanMartinez) - Updated CI
actions/checkout
andactions/setup-nodee
tov3
(#55 by @JordanMartinez)
v8.0.0
Breaking changes:
- Update project and deps to PureScript v0.15.0 (#46 by @sigma-andex and @JordanMartinez)
v7.0.1
Other improvements:
- Fix warnings revealed by v0.14.1 PS release (#44 by @JordanMartinez)
v7.0.0
Breaking changes:
- Updated code for PureScript 0.14 and dropped the
proxy
dependency as theproxy
library has been migrated intoprelude
(#39).
Other improvements:
- Removed primes from the
concat'
function in FFI in preparation for ES modules support (#36) - Migrated CI to use GitHub Actions and updated installation instructions to use Spago (#38)
- Stopped returning empty objects in foreign implementations for functions which return
Unit
for a small performance benefit (#40) - Added a CHANGELOG.md file and pull request template to the repository (#41)
v6.0.0
- Add a
MutableBuffer
type class with instances for bothEffect
andST
, to allow mutating buffers in either monad, and potentially other monads too (#24, @Dretch) - Remove the
Show Buffer
instance, as reading from a mutable buffer is effectful (@Dretch) - Use
Number
for reading and writing with Buffers (#25, @hdgarrood)
v5.0.0
v4.1.0
Add fromArrayBuffer
(@matthewleon)
v4.0.0
- Added
toArrayBuffer
(@matthewleon)
v3.0.1
Fix an encoding issue in writeString
(@justinwoo)