Ecng.Collections
1.0.285
dotnet add package Ecng.Collections --version 1.0.285
NuGet\Install-Package Ecng.Collections -Version 1.0.285
<PackageReference Include="Ecng.Collections" Version="1.0.285" />
<PackageVersion Include="Ecng.Collections" Version="1.0.285" />
<PackageReference Include="Ecng.Collections" />
paket add Ecng.Collections --version 1.0.285
#r "nuget: Ecng.Collections, 1.0.285"
#:package Ecng.Collections@1.0.285
#addin nuget:?package=Ecng.Collections&version=1.0.285
#tool nuget:?package=Ecng.Collections&version=1.0.285
Ecng.Collections
Thread-safe collections, specialized data structures, and collection utilities for high-performance scenarios.
Thread-Safe Collections
All synchronized collections provide thread-safe operations with internal locking.
SynchronizedDictionary
Thread-safe wrapper around Dictionary<TKey, TValue>.
var dict = new SynchronizedDictionary<int, string>();
// Thread-safe operations
dict[1] = "one";
dict.Add(2, "two");
if (dict.TryGetValue(1, out var value))
Console.WriteLine(value); // "one"
// Manual locking for compound operations
using (dict.EnterScope())
{
if (!dict.ContainsKey(3))
dict.Add(3, "three");
}
SynchronizedList
Thread-safe list with notification support.
var list = new SynchronizedList<string>();
list.Add("item1");
list.AddRange(new[] { "item2", "item3" });
// Safe iteration with scope
using (list.EnterScope())
{
foreach (var item in list)
Console.WriteLine(item);
}
CachedSynchronizedList
Thread-safe list that caches its array representation for fast enumeration.
var list = new CachedSynchronizedList<int>();
list.Add(1);
list.Add(2);
list.Add(3);
// Cache is computed once and reused until list changes
int[] cached = list.Cache;
foreach (var item in cached)
Console.WriteLine(item);
// After modification, cache is invalidated
list.Add(4);
int[] newCache = list.Cache; // Recomputed
CachedSynchronizedDictionary
Thread-safe dictionary with cached key/value arrays.
var dict = new CachedSynchronizedDictionary<string, int>();
dict["a"] = 1;
dict["b"] = 2;
// Cached arrays for fast iteration
string[] keys = dict.CachedKeys;
int[] values = dict.CachedValues;
KeyValuePair<string, int>[] pairs = dict.CachedPairs;
SynchronizedSet
Thread-safe HashSet<T> wrapper.
var set = new SynchronizedSet<int>();
set.Add(1);
set.Add(2);
bool added = set.Add(1); // false, already exists
bool contains = set.Contains(1); // true
Specialized Collections
PairSet - Bidirectional Dictionary
Allows lookup by both key and value.
var pairs = new PairSet<int, string>();
pairs.Add(1, "one");
pairs.Add(2, "two");
// Forward lookup (key -> value)
string value = pairs.GetValue(1); // "one"
// Reverse lookup (value -> key)
int key = pairs.GetKey("two"); // 2
// Check existence
bool hasKey = pairs.ContainsKey(1);
bool hasValue = pairs.ContainsValue("one");
// Remove by value
pairs.RemoveByValue("one");
SynchronizedPairSet
Thread-safe version of PairSet.
var pairs = new SynchronizedPairSet<Guid, string>();
var id = Guid.NewGuid();
pairs.Add(id, "session-1");
// Thread-safe bidirectional lookup
if (pairs.TryGetValue(id, out var session))
Console.WriteLine(session);
if (pairs.TryGetKey("session-1", out var foundId))
Console.WriteLine(foundId);
CircularBuffer
Fixed-size buffer that overwrites oldest elements when full.
var buffer = new CircularBuffer<int>(capacity: 3);
buffer.PushBack(1);
buffer.PushBack(2);
buffer.PushBack(3);
// Buffer: [1, 2, 3]
buffer.PushBack(4);
// Buffer: [2, 3, 4] - oldest (1) was overwritten
int front = buffer.Front(); // 2
int back = buffer.Back(); // 4
int second = buffer[1]; // 3
// Remove from ends
buffer.PopFront(); // Removes 2
buffer.PopBack(); // Removes 4
// Convert to array
int[] arr = buffer.ToArray();
// Resize buffer
buffer.Capacity = 5; // Grow
buffer.Capacity = 2; // Shrink (keeps newest elements)
CircularBufferEx
Extended circular buffer with additional operations.
var buffer = new CircularBufferEx<decimal>(100);
// Add elements
buffer.PushBack(1.5m);
buffer.PushBack(2.5m);
// Sum, min, max operations
decimal sum = buffer.Sum;
decimal min = buffer.Min;
decimal max = buffer.Max;
NumericCircularBufferEx
Circular buffer optimized for numeric calculations with running statistics.
var buffer = new NumericCircularBufferEx<double>(100);
for (int i = 0; i < 100; i++)
buffer.PushBack(Math.Sin(i));
// Efficient statistics (computed incrementally)
double sum = buffer.Sum;
double min = buffer.Min;
double max = buffer.Max;
Queue and Stack Extensions
SynchronizedQueue
Thread-safe queue.
var queue = new SynchronizedQueue<Message>();
queue.Enqueue(new Message("hello"));
if (queue.TryDequeue(out var msg))
Process(msg);
SynchronizedStack
Thread-safe stack.
var stack = new SynchronizedStack<int>();
stack.Push(1);
stack.Push(2);
if (stack.TryPop(out var value))
Console.WriteLine(value); // 2
QueueEx / StackEx
Extended queue and stack with additional peek operations.
var queue = new QueueEx<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
int first = queue.PeekFirst(); // 1 (front)
int last = queue.PeekLast(); // 3 (back)
Ordered Channels
BaseOrderedChannel
Base class for ordered message processing with channels.
// Used for ordered async message processing
// See ChannelExtensions for usage patterns
Bit Array Operations
BitArrayWriter / BitArrayReader
Efficient bit-level I/O for binary data.
// Writing bits
var writer = new BitArrayWriter();
writer.Write(true); // 1 bit
writer.Write(42, 8); // 8 bits
writer.WriteInt(1000); // Variable-length int
byte[] data = writer.ToArray();
// Reading bits
var reader = new BitArrayReader(data);
bool flag = reader.Read(); // 1 bit
int value = reader.Read(8); // 8 bits
int number = reader.ReadInt(); // Variable-length int
Collection Interfaces
INotifyList
List that raises events on modifications.
public interface INotifyList<T> : IList<T>
{
event Action<T> Adding;
event Action<T> Added;
event Action<T> Removing;
event Action<T> Removed;
event Action Clearing;
event Action Cleared;
event Action Changed;
}
ISynchronizedCollection
Interface for thread-safe collections.
public interface ISynchronizedCollection<T> : ICollection<T>
{
Lock SyncRoot { get; }
LockScope EnterScope();
}
Extension Methods
using Ecng.Collections;
// Check if collection is empty
IEnumerable<int> items = GetItems();
if (items.IsEmpty())
return;
// Safe first/last
var first = items.FirstOr(defaultValue: -1);
var last = items.LastOr(defaultValue: -1);
// Batch processing
foreach (var batch in items.Batch(100))
ProcessBatch(batch);
// Index lookup
int index = items.IndexOf(x => x > 10);
NuGet
Install-Package Ecng.Collections
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Ecng.Common (>= 1.0.250)
- System.Threading.Channels (>= 8.0.0)
-
net10.0
- Ecng.Common (>= 1.0.250)
-
net6.0
- Ecng.Common (>= 1.0.250)
NuGet packages (8)
Showing the top 5 NuGet packages that depend on Ecng.Collections:
| Package | Downloads |
|---|---|
|
Ecng.Reflection
Ecng system framework |
|
|
Ecng.Security
Ecng system framework |
|
|
Ecng.StringSearch
Ecng system framework |
|
|
Ecng.Roslyn
Ecng system framework |
|
|
Ecng.Backup.Mega
Ecng system framework |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.285 | 1,400 | 2/4/2026 |
| 1.0.284 | 1,968 | 2/1/2026 |
| 1.0.283 | 1,676 | 1/26/2026 |
| 1.0.282 | 867 | 1/22/2026 |
| 1.0.281 | 2,112 | 1/19/2026 |
| 1.0.280 | 838 | 1/19/2026 |
| 1.0.279 | 815 | 1/18/2026 |
| 1.0.278 | 807 | 1/18/2026 |
| 1.0.277 | 1,453 | 1/14/2026 |
| 1.0.276 | 870 | 1/13/2026 |
| 1.0.275 | 821 | 1/13/2026 |
| 1.0.274 | 5,495 | 1/9/2026 |
| 1.0.273 | 6,673 | 1/9/2026 |
| 1.0.272 | 32,754 | 1/4/2026 |
| 1.0.271 | 49,824 | 12/30/2025 |
| 1.0.270 | 52,381 | 12/29/2025 |
| 1.0.269 | 70,865 | 12/26/2025 |
| 1.0.268 | 70,881 | 12/26/2025 |
| 1.0.267 | 70,925 | 12/26/2025 |
| 1.0.266 | 70,935 | 12/26/2025 |
| 1.0.265 | 76,423 | 12/25/2025 |
| 1.0.264 | 77,692 | 12/25/2025 |
| 1.0.263 | 94,397 | 12/22/2025 |
| 1.0.262 | 101,409 | 12/21/2025 |
| 1.0.261 | 109,715 | 12/19/2025 |
| 1.0.260 | 110,385 | 12/19/2025 |
| 1.0.259 | 118,758 | 12/17/2025 |
| 1.0.258 | 133,350 | 12/15/2025 |
| 1.0.257 | 133,247 | 12/15/2025 |
| 1.0.256 | 139,512 | 12/14/2025 |
| 1.0.255 | 160,327 | 12/12/2025 |
| 1.0.254 | 159,638 | 12/12/2025 |
| 1.0.253 | 159,260 | 12/12/2025 |
| 1.0.252 | 159,255 | 12/12/2025 |
| 1.0.251 | 160,008 | 12/12/2025 |
| 1.0.250 | 223,150 | 12/2/2025 |
| 1.0.249 | 223,364 | 12/2/2025 |
| 1.0.248 | 224,147 | 12/2/2025 |
| 1.0.247 | 239,714 | 11/30/2025 |
| 1.0.246 | 242,712 | 11/29/2025 |
| 1.0.245 | 244,878 | 11/28/2025 |
| 1.0.244 | 245,589 | 11/28/2025 |
| 1.0.243 | 249,400 | 11/27/2025 |
| 1.0.242 | 269,146 | 11/24/2025 |
| 1.0.241 | 270,895 | 11/24/2025 |
| 1.0.240 | 275,677 | 11/23/2025 |
| 1.0.239 | 281,087 | 11/22/2025 |
| 1.0.238 | 299,205 | 11/20/2025 |
| 1.0.237 | 322,176 | 11/18/2025 |
| 1.0.236 | 322,851 | 11/18/2025 |
| 1.0.235 | 365,607 | 11/13/2025 |
| 1.0.234 | 398,257 | 11/10/2025 |
| 1.0.233 | 438,907 | 11/1/2025 |
| 1.0.232 | 438,163 | 10/28/2025 |
| 1.0.231 | 438,125 | 10/27/2025 |
| 1.0.230 | 437,990 | 10/27/2025 |
| 1.0.229 | 437,923 | 10/25/2025 |
| 1.0.228 | 488,386 | 10/3/2025 |
| 1.0.227 | 488,447 | 9/28/2025 |
| 1.0.226 | 488,193 | 9/25/2025 |
| 1.0.225 | 512,611 | 8/30/2025 |
| 1.0.224 | 486,788 | 7/13/2025 |
| 1.0.223 | 478,187 | 7/13/2025 |
| 1.0.222 | 478,208 | 7/12/2025 |
| 1.0.221 | 479,548 | 7/8/2025 |
| 1.0.220 | 478,998 | 7/4/2025 |
| 1.0.219 | 478,282 | 7/2/2025 |
| 1.0.218 | 483,168 | 6/16/2025 |
| 1.0.217 | 478,437 | 6/9/2025 |
| 1.0.216 | 478,298 | 6/8/2025 |
| 1.0.215 | 479,944 | 5/21/2025 |
| 1.0.214 | 478,424 | 5/17/2025 |
| 1.0.213 | 480,011 | 5/12/2025 |
| 1.0.212 | 478,340 | 5/12/2025 |
| 1.0.211 | 480,855 | 4/17/2025 |
| 1.0.210 | 483,436 | 3/22/2025 |
| 1.0.209 | 478,313 | 3/20/2025 |
| 1.0.208 | 478,245 | 3/20/2025 |
| 1.0.207 | 478,285 | 3/19/2025 |
| 1.0.206 | 483,478 | 2/26/2025 |
| 1.0.205 | 478,376 | 2/26/2025 |
| 1.0.204 | 486,798 | 2/5/2025 |
| 1.0.203 | 482,298 | 1/21/2025 |
| 1.0.202 | 481,657 | 1/14/2025 |
| 1.0.201 | 480,479 | 1/12/2025 |
| 1.0.200 | 478,937 | 1/10/2025 |
| 1.0.199 | 482,621 | 12/27/2024 |
| 1.0.198 | 479,388 | 11/20/2024 |
| 1.0.197 | 481,894 | 11/18/2024 |
| 1.0.196 | 480,205 | 11/7/2024 |
| 1.0.195 | 479,602 | 10/19/2024 |
| 1.0.194 | 481,447 | 10/12/2024 |
| 1.0.193 | 482,016 | 10/5/2024 |
| 1.0.192 | 483,105 | 9/18/2024 |
| 1.0.191 | 478,392 | 9/17/2024 |
| 1.0.190 | 482,800 | 9/3/2024 |
| 1.0.189 | 478,456 | 9/1/2024 |
| 1.0.188 | 492,552 | 6/12/2024 |
| 1.0.187 | 481,311 | 5/28/2024 |
| 1.0.186 | 482,056 | 5/4/2024 |
| 1.0.185 | 480,728 | 4/23/2024 |
| 1.0.184 | 479,814 | 4/21/2024 |
| 1.0.183 | 478,639 | 4/14/2024 |
| 1.0.182 | 484,004 | 3/28/2024 |
| 1.0.181 | 478,587 | 3/17/2024 |
| 1.0.180 | 482,015 | 2/23/2024 |
| 1.0.179 | 478,609 | 2/23/2024 |
| 1.0.178 | 481,984 | 2/18/2024 |
| 1.0.177 | 478,602 | 2/18/2024 |
| 1.0.176 | 478,661 | 2/16/2024 |
| 1.0.175 | 480,740 | 2/13/2024 |
| 1.0.174 | 480,466 | 2/8/2024 |
| 1.0.173 | 480,918 | 2/5/2024 |
| 1.0.172 | 478,629 | 2/4/2024 |
| 1.0.171 | 481,179 | 1/23/2024 |
| 1.0.170 | 478,756 | 1/23/2024 |
| 1.0.169 | 480,448 | 1/12/2024 |
| 1.0.168 | 483,891 | 1/2/2024 |
| 1.0.167 | 478,980 | 12/29/2023 |
| 1.0.166 | 497,161 | 11/12/2023 |
| 1.0.165 | 890,272 | 11/10/2023 |
| 1.0.164 | 478,935 | 11/10/2023 |
| 1.0.163 | 889,963 | 11/9/2023 |
| 1.0.162 | 890,874 | 11/3/2023 |
| 1.0.161 | 889,795 | 11/1/2023 |
| 1.0.160 | 889,842 | 11/1/2023 |
| 1.0.159 | 915,215 | 9/8/2023 |
| 1.0.158 | 890,260 | 9/8/2023 |
| 1.0.157 | 890,525 | 9/3/2023 |
| 1.0.156 | 890,775 | 8/21/2023 |
| 1.0.155 | 480,184 | 8/14/2023 |
| 1.0.154 | 891,300 | 8/10/2023 |
| 1.0.153 | 930,958 | 6/29/2023 |
| 1.0.152 | 905,370 | 5/27/2023 |
| 1.0.151 | 479,869 | 5/21/2023 |
| 1.0.150 | 479,980 | 5/19/2023 |
| 1.0.149 | 916,365 | 5/8/2023 |
| 1.0.148 | 896,271 | 4/21/2023 |
| 1.0.147 | 941,994 | 4/3/2023 |
| 1.0.146 | 898,450 | 3/13/2023 |
| 1.0.145 | 910,299 | 3/6/2023 |
| 1.0.144 | 892,434 | 2/26/2023 |
| 1.0.143 | 496,362 | 2/21/2023 |
| 1.0.142 | 480,775 | 2/20/2023 |
| 1.0.141 | 482,033 | 2/15/2023 |
| 1.0.140 | 480,793 | 2/14/2023 |
| 1.0.139 | 924,250 | 2/9/2023 |
| 1.0.138 | 497,209 | 2/7/2023 |
| 1.0.137 | 892,300 | 2/4/2023 |
| 1.0.136 | 912,368 | 2/2/2023 |
| 1.0.135 | 908,655 | 1/30/2023 |
| 1.0.134 | 486,813 | 1/18/2023 |
| 1.0.133 | 936,043 | 12/30/2022 |
| 1.0.132 | 894,358 | 12/23/2022 |
| 1.0.131 | 912,770 | 12/12/2022 |
| 1.0.130 | 915,405 | 12/4/2022 |
| 1.0.129 | 892,860 | 12/4/2022 |
| 1.0.128 | 893,589 | 11/30/2022 |
| 1.0.127 | 481,985 | 11/29/2022 |
| 1.0.126 | 482,151 | 11/28/2022 |
| 1.0.125 | 897,083 | 11/18/2022 |
| 1.0.124 | 920,348 | 11/11/2022 |
| 1.0.123 | 893,135 | 11/11/2022 |
| 1.0.122 | 482,227 | 11/10/2022 |
| 1.0.121 | 893,414 | 11/5/2022 |
| 1.0.120 | 894,755 | 11/4/2022 |
| 1.0.119 | 916,861 | 11/1/2022 |
| 1.0.118 | 917,149 | 10/16/2022 |
| 1.0.117 | 900,393 | 9/10/2022 |
| 1.0.116 | 943,969 | 9/8/2022 |
| 1.0.115 | 893,666 | 9/8/2022 |
| 1.0.114 | 482,847 | 9/8/2022 |
| 1.0.113 | 895,994 | 9/4/2022 |
| 1.0.112 | 572,440 | 8/24/2022 |
| 1.0.111 | 903,066 | 8/8/2022 |
| 1.0.110 | 896,739 | 7/26/2022 |
| 1.0.109 | 893,889 | 7/26/2022 |
| 1.0.108 | 946,352 | 7/19/2022 |
| 1.0.107 | 527,910 | 7/18/2022 |
| 1.0.106 | 487,967 | 7/8/2022 |
| 1.0.105 | 898,090 | 6/18/2022 |
| 1.0.104 | 893,907 | 6/6/2022 |
| 1.0.103 | 990,471 | 4/30/2022 |
| 1.0.102 | 894,164 | 4/20/2022 |
| 1.0.101 | 894,216 | 4/10/2022 |
| 1.0.100 | 894,204 | 4/7/2022 |
| 1.0.99 | 894,119 | 4/7/2022 |
| 1.0.98 | 894,301 | 4/2/2022 |
| 1.0.97 | 494,692 | 3/29/2022 |
| 1.0.96 | 486,253 | 3/27/2022 |
| 1.0.95 | 769,509 | 1/24/2022 |
| 1.0.94 | 1,053,154 | 12/29/2021 |
| 1.0.93 | 920,419 | 12/20/2021 |
| 1.0.92 | 893,832 | 12/13/2021 |
| 1.0.91 | 949,950 | 12/6/2021 |
| 1.0.90 | 484,470 | 12/2/2021 |
| 1.0.89 | 921,541 | 11/29/2021 |
| 1.0.88 | 920,130 | 11/22/2021 |
| 1.0.87 | 481,280 | 11/17/2021 |
| 1.0.86 | 921,985 | 11/13/2021 |
| 1.0.85 | 484,728 | 11/10/2021 |
| 1.0.84 | 892,303 | 11/9/2021 |
| 1.0.83 | 543,852 | 11/5/2021 |
| 1.0.82 | 894,042 | 11/4/2021 |
| 1.0.81 | 892,175 | 11/4/2021 |
| 1.0.80 | 892,112 | 11/3/2021 |
| 1.0.79 | 892,341 | 10/30/2021 |
| 1.0.78 | 923,607 | 10/21/2021 |
| 1.0.77 | 892,774 | 10/17/2021 |
| 1.0.76 | 953,536 | 10/14/2021 |
| 1.0.75 | 903,414 | 10/13/2021 |
| 1.0.74 | 892,370 | 10/12/2021 |
| 1.0.73 | 924,015 | 10/11/2021 |
| 1.0.72 | 892,200 | 10/9/2021 |
| 1.0.71 | 927,398 | 10/7/2021 |
| 1.0.70 | 929,453 | 10/7/2021 |
| 1.0.69 | 892,317 | 10/7/2021 |
| 1.0.68 | 481,463 | 10/6/2021 |
| 1.0.67 | 892,443 | 9/28/2021 |
| 1.0.66 | 926,183 | 9/23/2021 |
| 1.0.65 | 894,073 | 9/10/2021 |
| 1.0.64 | 892,190 | 9/9/2021 |
| 1.0.63 | 892,207 | 9/8/2021 |
| 1.0.62 | 892,325 | 9/8/2021 |
| 1.0.61 | 923,086 | 9/6/2021 |
| 1.0.60 | 481,674 | 8/31/2021 |
| 1.0.59 | 481,435 | 8/30/2021 |
| 1.0.58 | 925,384 | 7/31/2021 |
| 1.0.57 | 951,889 | 7/30/2021 |
| 1.0.56 | 892,652 | 7/26/2021 |
| 1.0.55 | 981,230 | 7/5/2021 |
| 1.0.54 | 481,668 | 7/1/2021 |
| 1.0.53 | 954,760 | 6/4/2021 |
| 1.0.52 | 982,449 | 4/26/2021 |
| 1.0.51 | 923,039 | 4/19/2021 |
| 1.0.50 | 1,041,044 | 4/7/2021 |
| 1.0.49 | 922,250 | 4/3/2021 |
| 1.0.48 | 1,070,273 | 3/22/2021 |
| 1.0.47 | 1,004,101 | 3/4/2021 |
| 1.0.46 | 925,424 | 2/26/2021 |
| 1.0.45 | 1,059,384 | 2/2/2021 |
| 1.0.44 | 595,886 | 1/24/2021 |
| 1.0.43 | 482,151 | 1/24/2021 |
| 1.0.42 | 481,764 | 1/23/2021 |
| 1.0.41 | 539,203 | 1/20/2021 |
| 1.0.40 | 892,560 | 1/20/2021 |
| 1.0.39 | 510,241 | 1/18/2021 |
| 1.0.38 | 481,731 | 1/18/2021 |
| 1.0.37 | 919,698 | 1/16/2021 |
| 1.0.36 | 1,009,520 | 12/16/2020 |
| 1.0.35 | 946,969 | 12/14/2020 |
| 1.0.34 | 924,749 | 12/9/2020 |
| 1.0.33 | 894,836 | 12/6/2020 |
| 1.0.32 | 482,143 | 12/2/2020 |
| 1.0.31 | 892,843 | 12/2/2020 |
| 1.0.30 | 921,137 | 12/1/2020 |
| 1.0.29 | 1,081,478 | 11/12/2020 |
| 1.0.29-atestpub | 2,484 | 11/11/2020 |
| 1.0.28 | 922,177 | 10/11/2020 |
| 1.0.27 | 1,003,970 | 9/9/2020 |
| 1.0.26 | 920,734 | 9/3/2020 |
| 1.0.25 | 510,462 | 8/20/2020 |
| 1.0.24 | 976,426 | 8/9/2020 |
| 1.0.23 | 510,737 | 7/28/2020 |
| 1.0.22 | 509,702 | 7/19/2020 |
| 1.0.21 | 536,895 | 7/6/2020 |
| 1.0.20 | 976,873 | 6/6/2020 |
| 1.0.19 | 921,900 | 6/4/2020 |
| 1.0.18 | 538,286 | 5/29/2020 |
| 1.0.17 | 949,078 | 5/21/2020 |
| 1.0.16 | 893,706 | 5/17/2020 |
| 1.0.15 | 947,834 | 5/12/2020 |
| 1.0.14 | 1,002,278 | 5/4/2020 |
| 1.0.13 | 897,777 | 4/24/2020 |
| 1.0.12 | 900,501 | 4/22/2020 |
| 1.0.11 | 893,496 | 4/22/2020 |
| 1.0.10 | 893,524 | 4/21/2020 |
| 1.0.9 | 922,681 | 4/18/2020 |
| 1.0.8 | 509,744 | 4/16/2020 |
| 1.0.7 | 482,552 | 4/16/2020 |
| 1.0.6 | 915,697 | 4/15/2020 |
| 1.0.5 | 918,291 | 4/11/2020 |
| 1.0.4 | 917,190 | 4/3/2020 |
| 1.0.3 | 482,046 | 4/1/2020 |
| 1.0.2 | 904,127 | 3/27/2020 |
| 1.0.1 | 903,134 | 3/22/2020 |
| 1.0.0 | 485,416 | 3/22/2020 |