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 1asEffect 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 (eitherBufferorSTBuffer).: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
xis 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:: Bufferannotation
(i.e. Example 1 above now compiles).If one was using
createto 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.allocUnsafeSlowBuffer.poolSize,Buffer.setPoolSizebuffer.swap16,buffer.swap32,buffer.swap64buffer.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.pursfile (#54 by @JordanMartinez) - Bumped CI's node version to
lts/*(#55/#57 by @JordanMartinez) - Updated CI
actions/checkoutandactions/setup-nodeetov3(#55 by @JordanMartinez)