v1.53.0
Announcing the latest release of lo with lots of good gifts! 🎁
🌊 First, a big thanks to @d-enk for making lots of performance improvements in the recent weeks.
🧪 Second, this release introduces a new simd experimental package. If you run on an amd64 architecture and a recent CPU, you can perform very fast operations thanks to SIMD CPU instructions. -> Documentation: https://lo.samber.dev/docs/experimental/simd
💥 Third, this version adds *Err variants of many lo helpers (like MapErr, FlatMapErr, ReduceErr, etc.) whose callbacks can return an error and short-circuit execution when one occurs.
[!NOTE] The
simdsub-package is considered not stable. We might break the initial API based on developers' feedback in the coming months.
- feat: adding SIMD helpers by @samber in https://github.com/samber/lo/pull/801
- feat: adding Error variants: MapErr, FlatMapErr, ReduceErr... by @samber in https://github.com/samber/lo/pull/823
- feat: support for buffer iterator by @mimol91 in https://github.com/samber/lo/pull/824
- feat: add Take, TakeWhile, FilterTake, Window, and Sliding functions by @juliazadorozhnaya in https://github.com/samber/lo/pull/760
- feat: add a Concat slice function. by @FGasper in https://github.com/samber/lo/pull/714
- feat: add iterator slice helpers by @juliazadorozhnaya in https://github.com/samber/lo/pull/791
- feat(it): adding loit.Concat by @samber in https://github.com/samber/lo/pull/722
- feat: Allow Union/Intersect to take many lists by @frankywahl in https://github.com/samber/lo/pull/181
- feat: Add Clone function to return shallow copy of slice collections by @quexer in https://github.com/samber/lo/pull/732
- feat: IntersectBy by @ghosx in https://github.com/samber/lo/pull/653
- feat: Support Custom Assert by @RelicOfTesla in https://github.com/samber/lo/pull/755
- feat: Must support Custom error handler. by @RelicOfTesla in https://github.com/samber/lo/pull/752
- feat: WithoutNth handle non-comparable types by @urisimchoni in https://github.com/samber/lo/pull/774
- refactor: remove unnecessary type arguments in
NewThrottleby @d-enk in https://github.com/samber/lo/pull/773 - refactor: lo.IntersectBy + adding loit.IntersectBy + adding doc by @samber in https://github.com/samber/lo/pull/739
- fix: rename IsSortedByKey to IsSortedBy by @NathanBaulch in https://github.com/samber/lo/pull/735
- fix(iter/tuples): support break iteration over Zip[By] seq by @d-enk in https://github.com/samber/lo/pull/757
- fix(it.Mode): align behavior with lo.Mode and ensure consistent slice… by @intojhanurag in https://github.com/samber/lo/pull/711
- fix: improve Clone function to preserve nilness and avoid liveness issues by @quexer in https://github.com/samber/lo/pull/740
- fix: reset n counter per iteration in it.Replace by @LikimiaD in https://github.com/samber/lo/pull/799
- fix: make Ellipsis operate on runes instead of bytes to prevent Unicode truncation by @veeceey in https://github.com/samber/lo/pull/796
- fix: correct
DropByIndexhandling of negative indices out of bounds by @d-enk in https://github.com/samber/lo/pull/778
- refactor: remove helpers deprecated for more than 3y by @samber in https://github.com/samber/lo/pull/810
- feat: Optimize UniqMap to reduce unnecessary slice preallocation by @ivolkoff in https://github.com/samber/lo/pull/710
- refactor(it): simplify DropLast, TrimSuffix, TrimPrefix and use range loops by @d-enk in https://github.com/samber/lo/pull/782
- bench: fix iterators to actually iterate in benchmarks by @d-enk in https://github.com/samber/lo/pull/781
- refactor: simplify slice cut/trim prefix/suffix functions by @d-enk in https://github.com/samber/lo/pull/787
- perf: optimize Sliding by pre-allocating result capacity by @d-enk in https://github.com/samber/lo/pull/783
- refactor: improve SamplesBy performance and revert non-panic behavior for negative count by @d-enk in https://github.com/samber/lo/pull/786
- feat(perf): speed up some functions with linear complexity O=n2 -> O=2n by @samber in https://github.com/samber/lo/pull/726
- perf: only allocate a single map in Intersect by @NathanBaulch in https://github.com/samber/lo/pull/736
- perf: preallocate Words string buffer by @NathanBaulch in https://github.com/samber/lo/pull/728
- refactor: improve lo[it].Intersect[By] readability and performance by @d-enk in https://github.com/samber/lo/pull/756
- perf: preallocate result slice in
SamplesByby @d-enk in https://github.com/samber/lo/pull/766 - perf: optimize
PartitionByby eliminating redundant append by @d-enk in https://github.com/samber/lo/pull/765 - perf: correct prealloc of the result in
FindUniques/Duplicates[By]by @d-enk in https://github.com/samber/lo/pull/764 - perf: use
Ternary()insteadIf().Else()inRange/RangeFromby @d-enk in https://github.com/samber/lo/pull/770 - perf: optimize it.Trim to use DropLastWhile(DropWhile(...)) by @d-enk in https://github.com/samber/lo/pull/780
- perf: replace Min/Max(Range) with Min/MaxIndexBy in DispatchingStrategy by @d-enk in https://github.com/samber/lo/pull/779
- perf: preallocate result slice in RangeWithSteps by @d-enk in https://github.com/samber/lo/pull/820
- perf: avoid unnecessary error allocation in NthOr, NthOrEmpty by @d-enk in https://github.com/samber/lo/pull/817
- perf: optimize Zip and ZipBy functions by @d-enk in https://github.com/samber/lo/pull/818
- perf: lazy it.Reverse iteration instead of in-place mutation by @d-enk in https://github.com/samber/lo/pull/814
- perf: optimize Substring to work directly with strings instead of converting to runes by @d-enk in https://github.com/samber/lo/pull/822
- perf: optimize it.CountBy by removing Filter iterator chain by @d-enk in https://github.com/samber/lo/pull/813
- perf: optimize it.Find to avoid unnecessary allocations by @d-enk in https://github.com/samber/lo/pull/811
- perf: optimize it.ContainsBy/EveryBy/SomeBy/NoneBy to avoid unnecessary allocations by @d-enk in https://github.com/samber/lo/pull/812
- refactor: simplify for loop by @d-enk in https://github.com/samber/lo/pull/772
- refactor: remove some redundant checks by @d-enk in https://github.com/samber/lo/pull/771
- refactor: simplify
it.HasSuffiximplementation by @d-enk in https://github.com/samber/lo/pull/767 - refactor: improve Slice logic and fix docstring by @d-enk in https://github.com/samber/lo/pull/785
Thanks @d-enk !!
- test: adding missing test cases to ellipsis by @samber in https://github.com/samber/lo/pull/809
- fix(test): Increase timeout values in concurrency tests by @samber in https://github.com/samber/lo/pull/775
- refactor: reorganize llms.txt and add missing helpers by @samber in https://github.com/samber/lo/pull/723
- Fix Clone() go playground link in README by @sethisernhagen in https://github.com/samber/lo/pull/761
- Intersect CI test fix by @frankywahl in https://github.com/samber/lo/pull/731
- lint: fix inconsistent callback function parameter names by @NathanBaulch in https://github.com/samber/lo/pull/730
- style: fix linter by @samber in https://github.com/samber/lo/pull/802
- fix: update Play links for Async functions in concurrency.go by @Weeranieb in https://github.com/samber/lo/pull/724
- lint: use Keyify internally by @NathanBaulch in https://github.com/samber/lo/pull/691
- Fix references to "lo" instead of "ro" by @pgr0ss in https://github.com/samber/lo/pull/713
- style: reduce the number of files in root directory by @samber in https://github.com/samber/lo/pull/719
- style: move img/ directory into docs/static/img by @samber in https://github.com/samber/lo/pull/721
- refactor: use separate variables for each iter.Pull in it.Zip functions by @d-enk in https://github.com/samber/lo/pull/816
- refactor: remove redundant map zero value initialization in throttleBy by @d-enk in https://github.com/samber/lo/pull/815
- doc: explain chunkstring inconsistency by @samber in https://github.com/samber/lo/pull/789
- doc: fix package name from "lo" to "it" by @samber in https://github.com/samber/lo/pull/794
- doc(exp,simd): adding warning about API stability for code under exp/ by @samber in https://github.com/samber/lo/pull/808
- doc(maxby): adding comment to explain inconsistency by @samber in https://github.com/samber/lo/pull/727
- doc: adding some conventions for callback naming by @samber in https://github.com/samber/lo/pull/738
- docs: fix typos by @alexandear in https://github.com/samber/lo/pull/745
- chore(tests): some test improvements by @samber in https://github.com/samber/lo/pull/725
- chore(ci): improve go version management in CI by @samber in https://github.com/samber/lo/pull/806
- chore(ci): adding codeql by @samber in https://github.com/samber/lo/pull/819
- style(simd): rename sse to avx by @samber in https://github.com/samber/lo/pull/821
- chore(deps): bump lodash from 4.17.21 to 4.17.23 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/777
- chore(deps): bump webpack from 5.102.0 to 5.105.0 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/793
- chore(deps): bump actions/setup-node from 5 to 6 by @dependabot[bot] in https://github.com/samber/lo/pull/716
- chore(deps): bump marked from 16.3.0 to 16.4.1 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/717
- chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/741
- chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/744
- chore(deps): bump ajv from 6.12.6 to 6.14.0 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/807
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in https://github.com/samber/lo/pull/747
- chore(deps): bump golangci/golangci-lint-action from 8 to 9 by @dependabot[bot] in https://github.com/samber/lo/pull/746
- chore(deps): bump marked from 16.4.1 to 17.0.1 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/748
- chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/750
- chore(deps): bump express from 4.21.2 to 4.22.1 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/751
- @ivolkoff made their first contribution in https://github.com/samber/lo/pull/710
- @intojhanurag made their first contribution in https://github.com/samber/lo/pull/711
- @pgr0ss made their first contribution in https://github.com/samber/lo/pull/713
- @Weeranieb made their first contribution in https://github.com/samber/lo/pull/724
- @frankywahl made their first contribution in https://github.com/samber/lo/pull/181
- @quexer made their first contribution in https://github.com/samber/lo/pull/732
- @alexandear made their first contribution in https://github.com/samber/lo/pull/745
- @juliazadorozhnaya made their first contribution in https://github.com/samber/lo/pull/760
- @sethisernhagen made their first contribution in https://github.com/samber/lo/pull/761
- @RelicOfTesla made their first contribution in https://github.com/samber/lo/pull/755
- @urisimchoni made their first contribution in https://github.com/samber/lo/pull/774
- @LikimiaD made their first contribution in https://github.com/samber/lo/pull/799
- @veeceey made their first contribution in https://github.com/samber/lo/pull/796
Full Changelog: https://github.com/samber/lo/compare/v1.52.0...v1.53.0
v1.52.0
Thrilled to announce the latest release of samber/lo!
This version brings major improvements:
- A new
it/sub-package for everything related to theiterpackage added in Go 1.23. Big up to @NathanBaulch for its help on this - A new documentation -> lo.samber.dev
- Lots of micro fixes and performance improvements
- Better code quality with many more linters
✨ A good introduction to streams in Go !
- fix(chunk): Copy chunk in a new slice by @samber in https://github.com/samber/lo/pull/648
- fix(zipx): fix the max length calculation by @samber in https://github.com/samber/lo/pull/649
- fix(retry): fix potential race condition in debounce callback by @samber in https://github.com/samber/lo/pull/650
- feature: add Mode function with tests and documentation by @ghosx in https://github.com/samber/lo/pull/644
- add FilterKeys for map by @rasha108bik in https://github.com/samber/lo/pull/631
- feat: adding FilterValues and fix FilterKeys signature by @samber in https://github.com/samber/lo/pull/661 https://github.com/samber/lo/pull/662
- fix: more consistent panic strings by @NathanBaulch in https://github.com/samber/lo/pull/678
- fix: minor example issues by @NathanBaulch in https://github.com/samber/lo/pull/676
- feat: preserve type alias in DropByIndex and WithoutBy by @NathanBaulch in https://github.com/samber/lo/pull/675
- feat: adding hassuffix + hasprefix by @samber in https://github.com/samber/lo/pull/680
- Added Cut, CutPrefix, CutSuffix by @xelavopelk in https://github.com/samber/lo/pull/666
- Add TrimXXX helpers by @samber in https://github.com/samber/lo/pull/683
- fix(string): fix division by zero by @samber in https://github.com/samber/lo/pull/684
- fix: avoid recover() if possible by @NathanBaulch in https://github.com/samber/lo/pull/685
- fix: panic when passing -1 to Drop by @NathanBaulch in https://github.com/samber/lo/pull/688
- perf: avoid Keyify twice in Trim by @NathanBaulch in https://github.com/samber/lo/pull/689
- feat: new iter package by @NathanBaulch in https://github.com/samber/lo/pull/672
- feat: from slice to map with index passed by @mabrarov in https://github.com/samber/lo/pull/697
- feat: from slice/iterator to map with index passed by @mabrarov in https://github.com/samber/lo/pull/698
- feat(generator): deprecate lo.Generator in favor of go "iter" package by @samber in https://github.com/samber/lo/pull/700
- perf: optimization of map access by @mabrarov in https://github.com/samber/lo/pull/692
- perf: optimize map access everywhere by @NathanBaulch in https://github.com/samber/lo/pull/693
- fix(tests): fix flaky time-based tests by @samber in https://github.com/samber/lo/pull/699
- lint: unit test improvements by @NathanBaulch in https://github.com/samber/lo/pull/674
- lint: fix CI warnings and avoid named return parameters by @NathanBaulch in https://github.com/samber/lo/pull/682
- lint: enable 7 more linters by @NathanBaulch in https://github.com/samber/lo/pull/686
- lint: enable gofumpt extra rules by @NathanBaulch in https://github.com/samber/lo/pull/690
- Style/rename internal rand by @samber in https://github.com/samber/lo/pull/701
- lint: Apply testifylint linter recommendations by @NathanBaulch in https://github.com/samber/lo/pull/669
- Style add golangci config by @samber in https://github.com/samber/lo/pull/670
- chore: minor whitespace fixes by @NathanBaulch in https://github.com/samber/lo/pull/677
- New documentation for "lo" 🎨 by @samber in https://github.com/samber/lo/pull/703
- doc: add it/mutable/parallel sub-package to llms.txt by @samber in https://github.com/samber/lo/pull/707
- docs: lots of various doc improvements by @samber in https://github.com/samber/lo/pull/706
- docs: adding go playground examples to it/ package by @samber in https://github.com/samber/lo/pull/708
- docs: Fix the Markdown syntax that is not displaying correctly by @mengxunQAQ in https://github.com/samber/lo/pull/658
- doc: add examples for find.go by @samber in https://github.com/samber/lo/pull/681
- docs: Fix Product and ProductBy documentation by @markhildreth-gravity in https://github.com/samber/lo/pull/647
- chore(deps-dev): bump typescript from 5.6.3 to 5.9.3 in /docs by @dependabot[bot] in https://github.com/samber/lo/pull/704
- docs: grammar improvements by @NathanBaulch in https://github.com/samber/lo/pull/673
- chore(deps): bump actions/setup-go from 5 to 6 by @dependabot[bot] in https://github.com/samber/lo/pull/695
- chore(deps): bump github.com/stretchr/testify from 1.11.0 to 1.11.1 by @dependabot[bot] in https://github.com/samber/lo/pull/663
- chore(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/samber/lo/pull/659
- chore(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.0 by @dependabot[bot] in
- @markhildreth-gravity made their first contribution in https://github.com/samber/lo/pull/647
- @rasha108bik made their first contribution in https://github.com/samber/lo/pull/631
- @xelavopelk made their first contribution in https://github.com/samber/lo/pull/666
- @mabrarov made their first contribution in https://github.com/samber/lo/pull/692
Full Changelog: https://github.com/samber/lo/compare/v1.51.0...v1.52.0
v1.51.0
- Fixed the error in the usage example of lo.Latest in readme.md by @ghosx in https://github.com/samber/lo/pull/627
- feat(assertions): add
AssertandAssertfby @your-diary in https://github.com/samber/lo/pull/638
- docs: Add a more precise description to the Ellipsis function by @mengxunQAQ in https://github.com/samber/lo/pull/635
- docs: Fix description for LastOrEmpty and LastOr by @vaihtovirta in https://github.com/samber/lo/pull/636
- docs: fix wrong variable name for mutable map example by @sunjayaali in https://github.com/samber/lo/pull/637
- fix(ci): correct cleanup deps - remove all *_test.go files using find by @d-enk in https://github.com/samber/lo/pull/630
- Revert "chore(deps): bump golang.org/x/text from 0.22.0 to 0.24.0" by @samber in https://github.com/samber/lo/pull/626
- chore(deps): bump golang.org/x/text from 0.22.0 to 0.24.0 by @dependabot in https://github.com/samber/lo/pull/625
- chore(deps): bump golangci/golangci-lint-action from 7 to 8 by @dependabot in https://github.com/samber/lo/pull/628
- @ghosx made their first contribution in https://github.com/samber/lo/pull/627
- @mengxunQAQ made their first contribution in https://github.com/samber/lo/pull/635
- @vaihtovirta made their first contribution in https://github.com/samber/lo/pull/636
- @your-diary made their first contribution in https://github.com/samber/lo/pull/638
Full Changelog: https://github.com/samber/lo/compare/v1.50.0...v1.51.0
v1.50.0
Here is the 50th minor version !! 🔥🥂
- Implemented GroupByMap by @maryum375 in https://github.com/samber/lo/pull/443
- feat: Add NthOr and NthOrEmpty functions by @edvardsanta in https://github.com/samber/lo/pull/611
- feat: adding FilterMapToSlice by @samber in https://github.com/samber/lo/pull/623
- feat(mutable): adding Map, MapI, Filter, FilterI by @samber in https://github.com/samber/lo/pull/577
- Add ElementsMatch, ElementsMatchBy by @senago in https://github.com/samber/lo/pull/589
- Perf(slice): Optimize iteration function parameters and add test cases by @shuqingzai in https://github.com/samber/lo/pull/587
- Preallocate result in FilterMap by @renbou in https://github.com/samber/lo/pull/622
- docs: modify mutable.shuffle example code and Go Playground links by @ebina4yaka in https://github.com/samber/lo/pull/595
- fix: Issue 605 (README for Ternary() by @peterhoward42 in https://github.com/samber/lo/pull/606
- docs: add play link for ChunkEntries example in README by @oswaldom-code in https://github.com/samber/lo/pull/600
- doc: update CoalesceXXX demo and result by @jialeicui in https://github.com/samber/lo/pull/594
- docs: fix typo in readme by @ahmedabdou14 in https://github.com/samber/lo/pull/620
- chore(deps): bump golang.org/x/text from 0.21.0 to 0.22.0 by @dependabot in https://github.com/samber/lo/pull/590
- chore(deps): bump golang.org/x/text from 0.22.0 to 0.24.0 by @dependabot in https://github.com/samber/lo/pull/618
- chore(deps): bump golangci/golangci-lint-action from 6 to 7 by @dependabot in https://github.com/samber/lo/pull/616
- @maryum375 made their first contribution in https://github.com/samber/lo/pull/443
- @shuqingzai made their first contribution in https://github.com/samber/lo/pull/587
- @ebina4yaka made their first contribution in https://github.com/samber/lo/pull/595
- @jialeicui made their first contribution in https://github.com/samber/lo/pull/594
- @peterhoward42 made their first contribution in https://github.com/samber/lo/pull/606
- @edvardsanta made their first contribution in https://github.com/samber/lo/pull/611
- @ahmedabdou14 made their first contribution in https://github.com/samber/lo/pull/620
- @renbou made their first contribution in https://github.com/samber/lo/pull/622
Full Changelog: https://github.com/samber/lo/compare/v1.49.1...v1.50.0
v1.49.1
- fix(product + productby): fix empty slice behavior by @samber in https://github.com/samber/lo/pull/584
Full Changelog: https://github.com/samber/lo/compare/v1.49.0...v1.49.1
v1.49.0
- feat: add SampleBy and SamplesBy by @bramvandewalle in https://github.com/samber/lo/pull/516
- feat: Add IsNotNil by @haoxins in https://github.com/samber/lo/pull/523
- feat: Implement ChunkMap Function (#533) by @oswaldom-code in https://github.com/samber/lo/pull/538
- feat: Add NewThrottle by @Lee-Minjea in https://github.com/samber/lo/pull/427
- feat: adding FilterSliceToMap by @samber in https://github.com/samber/lo/pull/581
- feat: add
ProductandProductByfunctions by @JohnDevitt in https://github.com/samber/lo/pull/566
- @bramvandewalle made their first contribution in https://github.com/samber/lo/pull/516
- @oswaldom-code made their first contribution in https://github.com/samber/lo/pull/538
- @Lee-Minjea made their first contribution in https://github.com/samber/lo/pull/427
Full Changelog: https://github.com/samber/lo/compare/v1.48.0...v1.49.0
v1.48.0
- feat: add (Min|Max)Index(By) by @aria3ppp in https://github.com/samber/lo/pull/569
- feat: add UniqMap by @nicklaus-dev in https://github.com/samber/lo/pull/527
- feat: add CrossJoin function by @JohnDevitt in https://github.com/samber/lo/pull/567
- feat: Implement CoalesceOrEmptySlice Function by @chg1f in https://github.com/samber/lo/pull/542
- feat: adding WithoutNth by @samber in https://github.com/samber/lo/pull/575
- feat: deprecate lo.Reverse and move it to lom.Reverse by @samber in https://github.com/samber/lo/pull/576
- feat: deprecate lo.Shuffle and move it to lom.Shuffle by @samber in https://github.com/samber/lo/commit/699707a0db372bc44ca5619b6ca61c15f5dc1de6#comments
- feat: adding lo.BufferWithContext by @samber in https://github.com/samber/lo/pull/580
- feat: add SliceToSet by @nicklaus-dev in https://github.com/samber/lo/pull/514
- feat: add WithoutBy by @nicklaus-dev in https://github.com/samber/lo/pull/515
- feat: add lom.Fill by @samber
- fix: change examples for MapKeys and MapValues by @luxcgo in https://github.com/samber/lo/pull/341
- fix: order of GroupBy and PartitionBy by @liyishuai in https://github.com/samber/lo/pull/572
- refactor RandomString function by @pigwantacat in https://github.com/samber/lo/pull/524
- @luxcgo made their first contribution in https://github.com/samber/lo/pull/341
- @haoxins made their first contribution in https://github.com/samber/lo/pull/522
- @muya made their first contribution in https://github.com/samber/lo/pull/521
- @NathanBaulch made their first contribution in https://github.com/samber/lo/pull/519
- @jiz4oh made their first contribution in https://github.com/samber/lo/pull/535
- @guyareco2 made their first contribution in https://github.com/samber/lo/pull/537
- @pigwantacat made their first contribution in https://github.com/samber/lo/pull/524
- @snamiki1212 made their first contribution in https://github.com/samber/lo/pull/541
- @dependabot made their first contribution in https://github.com/samber/lo/pull/554
- @JasonnnW3000 made their first contribution in https://github.com/samber/lo/pull/571
- @liyishuai made their first contribution in https://github.com/samber/lo/pull/572
- @aria3ppp made their first contribution in https://github.com/samber/lo/pull/569
- @sunjayaali made their first contribution in https://github.com/samber/lo/pull/544
- @SnowOnion made their first contribution in https://github.com/samber/lo/pull/543
- @nicklaus-dev made their first contribution in https://github.com/samber/lo/pull/527
- @JohnDevitt made their first contribution in https://github.com/samber/lo/pull/567
- @chg1f made their first contribution in https://github.com/samber/lo/pull/542
Full Changelog: https://github.com/samber/lo/compare/v1.47.0...v1.48.0
v1.47.0
- feat: Improve Substring by @liujundezhanghao in https://github.com/samber/lo/pull/496
- doc: Wrong method reference and output in readme by @ColeZia in https://github.com/samber/lo/pull/497
- doc: Fix documentation for Duration3 by @gecko655 in https://github.com/samber/lo/pull/502
- feat: add FromSlicePtr by @mash in https://github.com/samber/lo/pull/217
- feat: adding FromSlicePtrOr by @samber in https://github.com/samber/lo/pull/506
- feat: Keys+Values: accept multiple maps (vaargs) - Adding UniqKeys+UniqValues by @shivamrazorpay in https://github.com/samber/lo/pull/503
- doc: Update foreachwhile readme.md by @Sianao in https://github.com/samber/lo/pull/508
- @liujundezhanghao made their first contribution in https://github.com/samber/lo/pull/496
- @ColeZia made their first contribution in https://github.com/samber/lo/pull/497
- @gecko655 made their first contribution in https://github.com/samber/lo/pull/502
- @mash made their first contribution in https://github.com/samber/lo/pull/217
- @shivamrazorpay made their first contribution in https://github.com/samber/lo/pull/503
Full Changelog: https://github.com/samber/lo/compare/v1.46.0...v1.47.0
v1.46.0
- fix: chunk memory leak, bug fix by @mihir20 in https://github.com/samber/lo/pull/491
- feat: add WaitForWithContext by @ccoVeille in https://github.com/samber/lo/pull/480
- add ForEachCondition implement by @Sianao in https://github.com/samber/lo/pull/485
- @mihir20 made their first contribution in https://github.com/samber/lo/pull/491
- @ccoVeille made their first contribution in https://github.com/samber/lo/pull/480
- @Sianao made their first contribution in https://github.com/samber/lo/pull/485
Full Changelog: https://github.com/samber/lo/compare/v1.45.0...v1.46.0
v1.45.0
- perf: preallocate in Assign by @pmalek in https://github.com/samber/lo/pull/484
- feat: adding EarliestBy and LatestBy functions by @timych in https://github.com/samber/lo/pull/489
- @pmalek made their first contribution in https://github.com/samber/lo/pull/484
- @timych made their first contribution in https://github.com/samber/lo/pull/489
Full Changelog: https://github.com/samber/lo/compare/v1.44.0...v1.45.0