It's been a long time since the last release candidate, but quite a bit of work has happened since the last once. One step closer to a final release!
Breaking:
- Remove IteratorSequence. Do not attempt to detect iterators in
Seq()
. (#1589)Iterables can still be provided to
Seq()
, and most Iterators are also
Iterables, so this change should not affect the vast majority of uses.
For more information, see PR #1589 - Node buffers no longer considered value-equal
This was actually broken as of v4.0.0-rc.1 (2dcf3ef)
but was highlighted as a breaking change by (#1437)
New:
- Top level predicate functions (#1600)
New functions are exported from the
immutable
module:
isSeq()
,isList()
,isMap()
,isOrderedMap()
,isStack()
,isSet()
,isOrderedSet()
, andisRecord()
. - Support Typescript 3 (#1593)
- Support latest Flow (#1531)
- Add
RecordOf<TProps>
type alias for TypeScript, matching Flow (#1578) - Improved Flow support for Record subclasses (still not advised) (#1414)
- Improve performance of toJS (#1581)
Cursory test is >10% faster than both v3.8.2 and v4.0.0-rc.7,
and corrects the regression since v4.0.0-rc.9. - Added optional
notSetValue
infirst()
andlast()
(#1556) - Enable flow strict (#1580)
- Make
isArrayLike
check more precise to avoid false positives (#1520) map()
for List, Map, and Set returns itself for no-ops (#1455) (5726bd1)- Hash functions as objects, allowing functions as values in collections (#1485)
Fix:
groupBy
no longer returns a mutable Map instance (#1602)- Fix issue where refs can recursively collide, corrupting
.size
(#1598) - Throw error in
mergeWith()
method if missing the requiredmerger
function (#1543) - Update
isPlainObj()
to workaround Safari bug and allow cross-realm values (#1557) - The
mergeDeepWith
merger is untypable in TS/Flow. (#1532) - Fix missing "& T" to some methods in RecordInstance (#1464)
- Make notSetValue optional for typed Records (#1461) (a1029bb)
- Export type of RecordInstance (#1434)
- Fix Record
size
check in merge() (#1521) - Fix Map#concat being not defined (#1402)