JCarrillo.AOT.Core 1.1.4

Prefix Reserved
dotnet add package JCarrillo.AOT.Core --version 1.1.4
                    
NuGet\Install-Package JCarrillo.AOT.Core -Version 1.1.4
                    
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="JCarrillo.AOT.Core" Version="1.1.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="JCarrillo.AOT.Core" Version="1.1.4" />
                    
Directory.Packages.props
<PackageReference Include="JCarrillo.AOT.Core" />
                    
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 JCarrillo.AOT.Core --version 1.1.4
                    
#r "nuget: JCarrillo.AOT.Core, 1.1.4"
                    
#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 JCarrillo.AOT.Core@1.1.4
                    
#: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=JCarrillo.AOT.Core&version=1.1.4
                    
Install as a Cake Addin
#tool nuget:?package=JCarrillo.AOT.Core&version=1.1.4
                    
Install as a Cake Tool

JCarrillo.AOT.Core: Infraestructura para Baja Latencia y Native AOT

NuGet Version License GitHub Repository Documentation

Biblioteca de infraestructura de alto rendimiento diseñada específicamente para entornos restrictivos en .NET (como compilación Native AOT y sistemas con tolerancia crítica a la latencia de recolección de basura). Garantiza un perfil de cero asignaciones en el Heap (0 B Allocated) en las rutas calientes de ejecución de consultas y sincronización.

Garantía de Cero Asignaciones y Compatibilidad con Native AOT: Esta biblioteca elimina el uso de reflexión en tiempo de ejecución, la emisión dinámica de código y el despacho dinámico de interfaces en las rutas calientes de ejecución. Todo el procesamiento está estructurado mediante genéricos estáticos y inlining en tiempo de compilación.


Directorio de Documentación

Para acceder a la arquitectura y especificaciones detalladas de cada módulo, consulte las siguientes guías del repositorio:

Navegación de Documentación: Si está visualizando este paquete en NuGet.org, tenga en cuenta que los enlaces locales relativos (como docs/README.md) podrían no resolverse de forma correcta en el navegador. Se recomienda acceder a la documentación completa e interactiva de forma directa en el Repositorio de GitHub.


Módulos y Componentes de la Biblioteca

1. ValueLINQ: Consultas Fluent en Pila

Motor de consultas síncrono diseñado para entornos Native AOT.

  • Abstracción en Stack: Sustituye delegados y lambdas tradicionales (Func<T, bool>) por estructuras genéricas que implementan interfaces específicas (IWhereDelegado, ISelectDelegado), facilitando al compilador el inlining del código del usuario directamente en el bucle de iteración.
  • Motores Eager y Delay: Proporciona dos motores de procesamiento: el motor ansioso (ValueLINQStruct<T>, ValueLINQRefStruct<T>) respaldado por ValueLINQStateManager<T> y arenas de memoria, y el motor perezoso (ValueLINQDelayStruct<T, TEnumerator> en .NET 9+) que evalúa la canalización directamente sobre la pila. Ambos motores disponen de materializadores públicos (ToList, ToArray, ToListStandard, ToArrayStandard) que aseguran la liberación determinista de recursos en bloques finally.
  • Gestión de Estados y Arenas: En el motor eager, administra buffers en tablas particionadas por (tipo T, arena) con asignación en $O(1)$, aislamiento multihilo mediante SpinLock por ranura y reciclaje automático de tablas en pool para eliminar asignaciones en heap (0 B medido en régimen estacionario).
  • Devolución Segura: Todos los operadores están encapsulados en bloques try-finally que aseguran la devolución automática de los buffers al ArrayPool en caso de excepciones durante la iteración.

2. Colecciones Rentadas (Pooled Collections)

Estructuras optimizadas para mitigar la presión sobre el recolector de basura (GC) mediante el reciclaje de memoria física.

  • PooledList<T> y PooledArray<T>: Colecciones de tipo record struct que administran buffers del pool de arrays e integran validación dinámica de boxing en su método Dispose().
  • PooledListRef<T> y PooledArrayRef<T>: Variantes ref struct confinadas a la pila por diseño de compilador, omitiendo validaciones en ejecución y logrando un rendimiento superior de entre el 18% y 32% (medido) en CPU.

3. Extensiones: SemaphoreLock y Detección de Boxing

Utilidades de diagnóstico de bajo nivel y primitivas de exclusión mutua de alta velocidad.

  • SemaphoreLock: Estructura en pila que envuelve SemaphoreSlim permitiendo ámbitos using var seguros. Cuenta con una ruta rápida (Fast-Path) con Wait(0) que elude la asignación de la máquina de estados del compilador, y una ruta lenta optimizada con PoolingAsyncValueTaskMethodBuilder para reciclar tareas.
  • Detección de Boxing: BoxingExtensions.ValidarNoBoxeado valida en tiempo de ejecución que el struct reside en los límites físicos de la pila de memoria del hilo actual (mediante P/Invoke a GetCurrentThreadStackLimits de kernel32.dll en Windows), lanzando una excepción si detecta que la estructura se encuentra en el heap.

Resultados de Benchmarks

  • Entorno: Windows 11, CPU AMD Ryzen 9 3950X, .NET SDK 10.0.301, runtime .NET 10.0.9 (medido).
  • Harness: BenchmarkDotNet v0.15.8, compilación en modo Release.

1. Desempeño en Native AOT 10.0 (Consultas Fluent a escala $N = 1000$)

En la prueba Where_Select (filtrar y proyectar en cadena), la resolución dinámica de interfaces de LINQ estándar sufre una regresión de rendimiento en .NET 10.0. ValueLINQ, al estar resuelto de forma estática en compilación, mantiene un perfil de latencia estable:

  • Standard LINQ: 11,946.24 ns (11.9 µs) (medido) | Heap Allocated: 144 B (medido)
  • ValueLINQStruct: 1,522.53 ns (1.5 µs) (medido) | Heap Allocated: 0 B (medido) (7.84x más rápido)
  • ValueLINQRefStruct: 1,504.89 ns (1.5 µs) (medido) | Heap Allocated: 0 B (medido) (7.93x más rápido)
  • ValueLINQDelay (net9+): 626.07 ns (0.6 µs) (medido) | Heap Allocated: 0 B (medido) (23.07x más rápido)

2. Población en Bloque vs Inserción Unitaria ($N = 1000$)

Comparativa entre la población iterativa (que adquiere $O(N)$ locks) y la población en bloque (Añadir(ReadOnlySpan<T>) que ejecuta un único lock $O(1)$ con copia vectorial):

  • ValueLINQStruct (Población Unitaria): 32,838.03 ns (medido) | Heap: 0 B (medido)
  • ValueLINQStruct (Población en Bloque): 178.29 ns (medido) | Heap: 0 B (medido) (184x más rápido)
  • List<int> (Población en Bloque): 231.76 ns (medido) | Heap: 4,056 B (medido) (ValueLINQ es 35% más rápido y sin allocations)

Información Adicional: Para ver todas las comparativas detalladas de iteración, concatenación y sobrecarga de params en múltiples runtimes, consulte el Reporte de Benchmarks Completo.


Metodología de Desarrollo

Este proyecto se desarrolla en pareja humano-IA con roles definidos y verificación cruzada:

  • Diseño y arquitectura: humanos. Cada decisión estructural (sistema de tokens generacionales, particionado de tablas, modelo de concurrencia, contratos de API) se origina y aprueba por el mantenedor.
  • Implementación: mixta. El código de producción se escribe principalmente a mano; la IA implementa piezas concretas bajo especificación y revisión del mantenedor.
  • Verificación adversarial: los tests, las revisiones de concurrencia y la documentación se elaboran con asistencia de IA instruida para refutar el código, no para confirmarlo.
  • Regla invariante: ninguna contribución — humana o asistida — se integra sin pasar la suite completa en los tres target frameworks (net8.0/net9.0/net10.0). Las cifras de rendimiento publicadas se miden con BenchmarkDotNet; nunca se estiman.
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on JCarrillo.AOT.Core:

Package Downloads
JCarrillo.AOT.Net.Socket

High-performance, zero-allocation low-level socket library optimized for Native AOT and Trimming in .NET.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.4 105 9/10/2026
1.1.3 99 9/10/2026
1.1.2 126 7/3/2026
1.1.1 112 7/3/2026
1.1.0 116 7/3/2026
1.0.3 165 6/21/2026
1.0.2 121 6/20/2026
1.0.1 119 6/20/2026
1.0.0 114 6/19/2026