ANcpLua.Roslyn.Utilities provides utilities for building Roslyn analyzers and source generators.
What’s New in v1.42
Performance namespace — seven zero-allocation primitives for netstandard2.0:
BitHelpers — PopCount, LeadingZeroCount, Log2, RoundUpToPowerOf2, rotations
AsciiSet — 128-bit bitmap for O(1) character membership
AsciiHelpers — branchless EqualsIgnoreCase, TrimWhiteSpace, IsAscii
SpanHelpers — Count, ContainsAny, IndexOfAny, IsWhiteSpace for spans
IntegerParser — TryParseInt32/TryParseInt64 from ReadOnlySpan<char> and ReadOnlySpan<byte>
SpanTokenizer — ref struct allocation-free tokenizer with foreach support
MemoryHelpers — AsBytes, Cast, GetReference wrappers for MemoryMarshal
Directory restructure — projects moved from ANcpLua.Roslyn.Utilities/ to src/ subfolder.
What’s New in v1.19
Expanded Guard API - Comprehensive argument validation:
- Collections:
NoDuplicates() for duplicate detection
- File System:
FileExists(), DirectoryExists(), ValidFileName(), ValidPath(), ValidExtension(), NormalizedExtension()
- Type Validation:
DefinedEnum(), NotNullableType(), AssignableTo<T>(), AssignableFrom<T>()
- Member Validation:
NotNullWithMember(), MemberNotNull() for object + member validation
- Numeric:
NotZero, NotNegative, Positive, NotGreaterThan, NotLessThan, LessThan, GreaterThan (int/long/double/decimal)
- Double-specific:
NotNaN(), Finite() for floating-point edge cases
- Unreachable Code:
Unreachable(), Unreachable<T>() with caller info capture
All numeric methods use [MethodImpl(AggressiveInlining)] for hot paths.
What’s New in v1.18
API cleanup - Tightened public surface, renamed methods for clarity:
Guard.NotNullOr* renamed to Guard.NotNullOrElse* with new lazy Func<T> overloads
IndentedStringBuilder.Indent()/Outdent() made private (use BeginBlock())
- Helper extensions reorganized:
NullableExtensions, ObjectExtensions, TryExtensions
- Redundant nullability attributes and operators removed
Install
Layer 0 Package: This package cannot depend on ANcpLua.NET.Sdk (circular
dependency). Uses Microsoft.NET.Sdk with built-in polyfills.
Packages
Features
Quick Example