Escorp.Atom 0.10.2

dotnet add package Escorp.Atom --version 0.10.2
                    
NuGet\Install-Package Escorp.Atom -Version 0.10.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Escorp.Atom" Version="0.10.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Escorp.Atom" Version="0.10.2" />
                    
Directory.Packages.props
<PackageReference Include="Escorp.Atom" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Escorp.Atom --version 0.10.2
                    
#r "nuget: Escorp.Atom, 0.10.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Escorp.Atom@0.10.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Escorp.Atom&version=0.10.2
                    
Install as a Cake Addin
#tool nuget:?package=Escorp.Atom&version=0.10.2
                    
Install as a Cake Tool

Atom Framework

Высокопроизводительная библиотека на .NET для построения современных приложений с минимальными аллокациями памяти и поддержкой NativeAOT/Trimming.

Основные возможности

  • Zero-allocation API через Span<T>, ReadOnlySpan<T> и пулинг объектов
  • Thread-safe примитивы синхронизации и конкурентные коллекции
  • NativeAOT-ready — все компоненты совместимы с компиляцией AOT
  • Source generators для автоматизации boilerplate-кода

Модули

Модуль Назначение
Buffers Пулы объектов, ObjectPool<T>, атрибут [Pooled]
Collections SparseArray<T>, расширения коллекций
Threading Locker, RateLimiter, Sequencer, Signal, Wait
Text ValueStringBuilder, JSON-контексты, форматирование
Algorithms Алгоритмы поиска подстрок (KMP, Boyer-Moore, Rabin-Karp, Z, Aho-Corasick)
Distribution Определение ОС, работа с терминалом и процессами
IO Консольные команды, базовый Stream для NativeAOT
Architect Компонентная модель, реактивные свойства, билдеры

Быстрый старт

Пулинг объектов

using Atom.Buffers;

// Создание пула
var pool = ObjectPool<StringBuilder>.Create(() => new StringBuilder(1024));

// Аренда и возврат
var sb = pool.Rent();
try
{
    sb.Append("Hello, Atom!");
    Console.WriteLine(sb.ToString());
}
finally
{
    pool.Return(sb, static x => x.Clear());
}

Высокопроизводительный StringBuilder

using Atom.Text;

using var builder = new ValueStringBuilder(256);
builder.Append("User: ")
       .Append(42)
       .Append(", Status: ")
       .Append(true);

Console.WriteLine(builder.ToString());

Ограничение частоты запросов

using Atom.Threading;

var limiter = new RateLimiter(limit: 10, rate: TimeSpan.FromSeconds(1));

for (int i = 0; i < 50; i++)
{
    await limiter.CallAsync(() => Console.WriteLine($"Request {i}"));
}

Алгоритмы поиска подстрок

using Atom.Algorithms.Text;

var algorithm = new BoyerMooreAlgorithm();
var text = "The quick brown fox jumps over the lazy dog";
var pattern = "fox";

bool found = algorithm.Contains(text, pattern, StringComparison.Ordinal);
int count = algorithm.CountOf(text, "the", StringComparison.OrdinalIgnoreCase);

Разрежённый массив

using Atom.Collections;

var sparse = new SparseArray<int>(capacity: 100);
sparse[0] = 42;
sparse[50] = 100;

foreach (var value in sparse)
{
    Console.WriteLine(value); // Итерация только по установленным значениям
}

sparse.Release(clearArray: true); // Возврат памяти в пул

Требования

  • .NET 8.0+ / .NET 10.0 (рекомендуется)
  • C# 12+ (preview features)

Сборка

dotnet build Atom.slnx

Тестирование

dotnet test Atom.slnx

Документация

Подробная документация по каждому модулю находится в соответствующих README.md файлах внутри директорий модулей.

Лицензия

См. файл LICENSE в корне репозитория

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on Escorp.Atom:

Package Downloads
Escorp.Atom.Debug

Package Description

Escorp.Atom.Media

Package Description

Escorp.Atom.Web

Package Description

Escorp.Atom.IO.Compression

Package Description

Escorp.Atom.Net

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.10.2 134 4/3/2026
0.10.1 111 4/2/2026
0.10.0 125 1/14/2026
0.9.9 144 1/9/2026
0.9.8 539 12/11/2025
0.9.7 469 12/9/2025
0.9.6 446 12/8/2025
0.9.5 434 12/5/2025
0.9.4 174 11/30/2025
0.9.3 204 11/27/2025
0.9.2 302 11/14/2025
0.9.1 262 11/14/2025
0.9.0 346 11/13/2025
0.8.8 202 10/12/2025
0.8.7 226 9/6/2025
0.8.6 255 9/5/2025
0.8.5 263 4/9/2025
0.8.4 254 4/8/2025
0.8.3 229 4/7/2025
0.8.2 231 4/6/2025
Loading failed