All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
4.0.0 - Unreleased
- X10D: Add support for generic math interfaces.
- X10D: Added extension methods for
DateOnly, for parity withDateTimeandDateTimeOffset. - X10D: Added math-related extension methods for
BigInteger. - X10D: Added
Queue<T>.EnqueueAllandQueue<T>.DequeueAll. - X10D: Added
Stack<T>.PushAllandStack<T>.PopAll. - X10D: Added
Span<T>.Replace(T, T). - X10D: Added
CountDigitsfor integer types. - X10D: Added
IEnumerable<T>.Except(T). - X10D: Added
Progress<T>.OnProgressChanged([T]). - X10D: Added
TextWriter.WriteNoAlloc(int[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
TextWriter.WriteNoAlloc(uint[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
TextWriter.WriteNoAlloc(long[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
TextWriter.WriteNoAlloc(ulong[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
TextWriter.WriteLineNoAlloc(int[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
TextWriter.WriteLineNoAlloc(uint[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
TextWriter.WriteLineNoAlloc(long[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
TextWriter.WriteLineNoAlloc(ulong[, ReadOnlySpan<char>[, IFormatProvider]]). - X10D: Added
Range.GetEnumerator(andRangeEnumerator), implementing Python-esqueforloops in C#. - X10D: Added
string.ConcatIf. - X10D: Added
string.MDBold,string.MDCode,string.MDCodeBlock([string]),string.MDHeading(int),string.MDItalic,string.MDLink,string.MDStrikeOut, andstring.MDUnderlinefor Markdown formatting. - X10D: Added Span overloads which complement
char.Repeatandstring.Repeat.
- X10D: Fixed XMLDoc for
Line3Dto read "single-precision floating-point" instead of "32-bit signed integer".
- X10D: DateTime.Age(DateTime) and DateTimeOffset.Age(DateTimeOffset) parameter renamed from asOf to referenceDate.
- X10D: Methods which accepted the
Endiannessenum as an argument have been replaced with explicit BigEndian/LittleEndian methods. - X10D:
Stream.GetHash<>andStream.TryWriteHash<>now throw ArgumentException in lieu of TypeInitializationException. - X10D:
char.IsEmojino longer allocates for .NET 7+. - X10D:
string.Repeatis now more efficient.
- X10D: Removed
IEnumerable<T>.ConcatOne- this functionality already exists withAppend. - X10D: Removed
Endiannessenum. - X10D: Removed
Span<T>.Replace(T, T)for .NET 8 target. - X10D: Removed .NET Standard 2.1 target.
- X10D: Removed extensions for
Progress<T>. These are already provided byObservable.FromEventPattern. - X10D.Hosting: Removed .NET Standard 2.1 target.
- X10D.DSharpPlus: Complete sunset of library. This library will not be updated to support DSharpPlus v5.0.0 (#83).
- X10D.Unity: Complete sunset of library. This library will not be updated effective immediately (#86).
3.3.1 - 2023-08-21
- X10D: Fixed
decimal.TryWriteBigEndianBytesanddecimal.TryWriteLittleEndianBytes. - X10D.Hosting: Fixed
AddHostedSingletonnot accepting an interface as the service type.
3.3.0 - 2023-08-21
- X10D.Hosting: Added support for service/implementation registration with
AddHostedSingleton.
3.2.2 - 2023-06-05
- X10D.DSharpPlus: Added support for new usernames. See https://discord.com/blog/usernames
ERRONEOUS RELEASE.
3.2.0 - 2023-04-03
- Added new library X10D.DSharpPlus.
- Added new library X10D.Hosting.
- Added .NET 7 target.
- X10D: Added
IntrinsicExtensionsandIntrinsicUtilitywhich offer methods for vectors inSystem.Runtime.Instrinsics. (#70) - X10D: Added
MathUtility.Bias(float, float)andMathUtility.Bias(double, double). - X10D: Added
MathUtility.ExponentialDecay(float, float, float)andMathUtility.ExponentialDecay(double, double, double). - X10D: Added
MathUtility.InverseLerp(float, float, float)andMathUtility.InverseLerp(double, double, double). - X10D: Added
MathUtility.Pulse(float, float, float)andMathUtility.Pulse(double, double, double). - X10D: Added
MathUtility.Sawtooth(float)andMathUtility.Sawtooth(double). - X10D: Added
MathUtility.ScaleRange(float, float, float, float, float)andMathUtility.ScaleRange(double, double, double, double, double) - X10D: Added
MathUtility.Sigmoid(float)andMathUtility.Sigmoid(double). - X10D: Added
MathUtility.SmoothStep(float, float, float)andMathUtility.SmoothStep(double, double, double). - X10D: Added
Circle,CircleF,Cuboid,Ellipse,EllipseF,Line3D,Line,LineF,Polygon,PolygonF,Polyhedron, andSphere, to complement System.Drawing structs such asPointandRectangle. - X10D: Added
Color.Deconstruct()- with optional alpha parameter. - X10D: Added
Color.GetClosestConsoleColor(). - X10D: Added
DateTime.GetIso8601WeekOfYear()andDateTimeOffset.GetIso8601WeekOfYear(). - X10D: Added
DirectoryInfo.Clear(). - X10D: Added
double.LinearToGamma([gamma])andfloat.LinearToGamma([gamma]). (#60) - X10D: Added
double.GammaToLinear([gamma])andfloat.GammaToLinear([gamma]). (#60) - X10D: Added
GreatestCommonFactorfor built-in integer types. - X10D: Added
IEnumerable<T>.ConcatOne(T). - X10D: Added
IEnumerable<T>.CountWhereNot(Func<T, bool>). - X10D: Added
IEnumerable<T>.FirstWhereNot(Func<T, bool>). - X10D: Added
IEnumerable<T>.FirstWhereNotOrDefault(Func<T, bool>). - X10D: Added
IEnumerable<T>.LastWhereNot(Func<T, bool>). - X10D: Added
IEnumerable<T>.LastWhereNotOrDefault(Func<T, bool>). - X10D: Added
IEnumerable<T>.MinMax()andIEnumerable<T>.MinMaxBy(). (#72) - X10D: Added
IEnumerable<T>.WhereNot(Func<T, bool>). - X10D: Added
IEnumerable<T>.WhereNotNull(). - X10D: Added
IEnumerable<string>.Grep(string[, bool]). - X10D: Added
IList<T>.RemoveRange(Range). - X10D: Added
IList<T>.Swap(IList<T>). (#62) - X10D: Added
IReadOnlyList<T>.IndexOf(T[, int[, int]]). - X10D: Added
IReadOnlyList<T>.Slice(int[, int]]). - X10D: Added
LowestCommonMultiplefor built-in integer types. - X10D: Added
Wrap(T[, T])for built-in numeric types. (#60) - X10D: Added
Nullable<T>.TryGetValue(out T). (#61) - X10D: Added
Point.IsOnLine(LineF),Point.IsOnLine(PointF, PointF), andPoint.IsOnLine(Vector2, Vector2). - X10D: Added
PointF.IsOnLine(LineF),PointF.IsOnLine(PointF, PointF), andPointF.IsOnLine(Vector2, Vector2). - X10D: Added
Point.ToSize(). - X10D: Added
Point.ToSizeF(). - X10D: Added
Point.ToVector2(). - X10D: Added
PointF.Round([float]). - X10D: Added
PointF.ToSizeF(). - X10D: Added
PointF.ToVector2()for .NET < 6. - X10D: Added
PopCount()for built-in integer types. - X10D: Added
Quaternion.ToAxisAngle(out float, out float). - X10D: Added
Quaternion.ToVector3(). - X10D: Added
Random.NextFrom(Span<T>)andRandom.NextFrom(ReadOnlySpan<T>). - X10D: Added
ReadOnlySpan<char>.CountSubstring(char). - X10D: Added
ReadOnlySpan<char>.CountSubstring(ReadOnlySpan<char>[, StringComparison]). - X10D: Added
ReadOnlySpan<char>.ToTimeSpan(). - X10D: Added
ReadOnlySpan<T>.Split(T). - X10D: Added
ReadOnlySpan<T>.Split(ReadOnlySpan<T>). - X10D: Added
RoundUpToPowerOf2()for built-in integer types. - X10D: Added
Saturate()for built-in floating-point types. - X10D: Added
Size.ToPoint(). - X10D: Added
Size.ToPointF(). - X10D: Added
Size.ToVector2(). - X10D: Added
Span<char>.CountSubstring(char). - X10D: Added
Span<char>.CountSubstring(Span<char>[, StringComparison]). - X10D: Added
Span<T>.Split(T). - X10D: Added
Span<T>.Split(Span<T>). - X10D: Added
string.CountSubstring(char). - X10D: Added
string.CountSubstring(string[, StringComparison]). - X10D: Added
string.EnsureStartsWith()andstring.EnsureEndsWith(). - X10D: Added
string.IsEmpty(). - X10D: Added
string.IsWhiteSpace(). - X10D: Added
string.IsNullOrEmpty(). - X10D: Added
string.IsNullOrWhiteSpace(). - X10D: Added
TextReader.EnumerateLines()andTextReader.EnumerateLinesAsync(). - X10D: Added
TimeSpan.TryParse(ReadOnlySpan<char>, out TimeSpan). - X10D: Added
Quaternion.Multiply(Vector3)- this functions as an equivalent to Unity'sQuaternion * Vector3operator. - X10D: Added
Vector2.Deconstruct(). - X10D: Added
Vector2.IsOnLine(LineF),Vector2.IsOnLine(PointF, PointF), andVector2.IsOnLine(Vector2, Vector2). - X10D: Added
Vector2.Round([float]). - X10D: Added
Vector2.ToPointF(). - X10D: Added
Vector2.ToSizeF(). - X10D: Added
Vector3.Deconstruct(). - X10D: Added
Vector3.Round([float]). - X10D: Added
Vector4.Deconstruct(). - X10D: Added
Vector4.Round([float]). - X10D:
ComplexSqrtis now exposed for all frameworks. - X10D.Unity: Added
DebugUtility, which mimicsUnityEngine.Debugwhile offering more useful primitive drawing methods. - X10D.Unity: Added
System.Drawing.Color.ToUnityColor(). - X10D.Unity: Added
System.Drawing.Color.ToUnityColor32(). - X10D.Unity: Added
Color.Deconstruct()- with optional alpha parameter. - X10D.Unity: Added
Color.GetClosestConsoleColor(). - X10D.Unity: Added
Color.ToSystemDrawingColor(). - X10D.Unity: Added
Color32.Deconstruct()- with optional alpha parameter. - X10D.Unity: Added
Color32.GetClosestConsoleColor(). - X10D.Unity: Added
Color32.ToSystemDrawingColor(). - X10D.Unity: Added
Point.ToUnityVector2(). - X10D.Unity: Added
Point.ToUnityVector2Int(). - X10D.Unity: Added
PointF.ToUnityVector2(). - X10D.Unity: Added
Rect.ToSystemRectangleF(). - X10D.Unity: Added
RectInt.ToSystemRectangle(). - X10D.Unity: Added
RectInt.ToSystemRectangleF(). - X10D.Unity: Added
Rectangle.ToUnityRect(). - X10D.Unity: Added
Rectangle.ToUnityRectInt(). - X10D.Unity: Added
RectangleF.ToUnityRect(). - X10D.Unity: Added
Size.ToUnityVector2(). - X10D.Unity: Added
Size.ToUnityVector2Int(). - X10D.Unity: Added
SizeF.ToUnityVector2(). - X10D.Unity: Added
Vector2.Deconstruct(). - X10D.Unity: Added
Vector2.IsOnLine(LineF),Vector2.IsOnLine(PointF, PointF), andVector2.IsOnLine(Vector2, Vector2). - X10D.Unity: Added
Vector2Int.IsOnLine(LineF),Vector2Int.IsOnLine(PointF, PointF),Vector2Int.IsOnLine(Vector2, Vector2), andVector2Int.IsOnLine(Vector2Int, Vector2Int). - X10D.Unity: Added
Vector2.Round([float]). - X10D.Unity: Added
Vector2.ToSystemPointF(). - X10D.Unity: Added
Vector2.ToSystemSizeF(). - X10D.Unity: Added
Vector2Int.Deconstruct(). - X10D.Unity: Added
Vector2Int.ToSystemPoint(). - X10D.Unity: Added
Vector2Int.ToSystemSize(). - X10D.Unity: Added
Vector2Int.ToSystemVector(). - X10D.Unity: Added
Vector2Int.WithX(). - X10D.Unity: Added
Vector2Int.WithY(). - X10D.Unity: Added
Vector3.Deconstruct(). - X10D.Unity: Added
Vector3.Round([float]). - X10D.Unity: Added
Vector3Int.Deconstruct(). - X10D.Unity: Added
Vector3Int.ToSystemVector(). - X10D.Unity: Added
Vector3Int.WithX(). - X10D.Unity: Added
Vector3Int.WithY(). - X10D.Unity: Added
Vector3Int.WithZ(). - X10D.Unity: Added
Vector4.Deconstruct(). - X10D.Unity: Added
Vector4.Round([float]) - X10D.Unity: Added
WaitForFramesyield instruction. - X10D.Unity: Added
WaitForKeyDownyield instruction. - X10D.Unity: Added
WaitForKeyUpyield instruction. - X10D.Unity: Added
WaitForSecondsNoAllocyield instruction. - X10D.Unity: Added
WaitForSecondsRealtimeNoAllocyield instruction. - X10D.Unity: Added
WaitForTimeSpanNoAllocyield instruction. - X10D.Unity: Added
WaitForTimeSpanRealtimeNoAllocyield instruction.
- X10D:
T[].Clearwill now correctly clear the specified range of elements by using the GetOffsetAndLength method. - X10D:
Stream.ReadSingle(Endianness)now returns a float instead of a double. - X10D: Fixed
Stream.ReadDouble(Endianness),Stream.ReadSingle(Endianness),Stream.WriteDouble(double, Endianness),Stream.WriteSingle(float, Endianness)writing and reading the wrong endianness.
- X10D: Performance for integer
Unpackhas been dramatically improved using vector parallelization. (#70) - X10D: Performance for
MemberInfo.HasCustomAttributehas been improved. (#70) - X10D: Performance for
Rune.Repeathas been improved. (#70) - X10D:
TimeSpanParser.TryParsenow accepts a nullable string, and returns false if this input is null or empty. - X10D.Unity:
Singleton<T>now caches instance where possible. - X10D.Unity: Conversions between equivalent structures in
System.NumericsandUnityEnginenow make use of "unsafe" reinterpretation, rather than constructing new instances. (#70)
3.1.0 - 2022-05-13
- Reintroduced Unity support
- X10D: Added
Color.Inverted(). (#54) - X10D: Added
Color.WithA(). (#55) - X10D: Added
Color.WithB(). (#55) - X10D: Added
Color.WithG(). (#55) - X10D: Added
Color.WithR(). (#55) - X10D: Added
ICollection<T>.ClearAndDisposeAll(). - X10D: Added
ICollection<T>.ClearAndDisposeAllAsync(). - X10D: Added
IEnumerable<T>.For(). (#50) - X10D: Added
IEnumerable<T>.ForEach(). (#50) - X10D: Added
IEnumerable<T>.DisposeAll(). - X10D: Added
IEnumerable<T>.DisposeAllAsync(). - X10D: Added
char.IsEmoji. - X10D: Added
ReadOnlySpan<T>.Count(Predicate<T>). - X10D: Added
Rune.IsEmoji. - X10D: Added
Span<T>.Count(Predicate<T>). - X10D: Added
string.IsEmoji. - X10D: Added
Vector2.WithX(). (#56) - X10D: Added
Vector2.WithY(). (#56) - X10D: Added
Vector3.WithX(). (#56) - X10D: Added
Vector3.WithY(). (#56) - X10D: Added
Vector3.WithZ(). (#56) - X10D: Added
Vector4.WithX(). (#56) - X10D: Added
Vector4.WithY(). (#56) - X10D: Added
Vector4.WithZ(). (#56) - X10D: Added
Vector4.WithW(). (#56) - X10D.Unity: Added
Singleton<T>class. - X10D.Unity: Added
Color.Inverted(). (#54) - X10D.Unity: Added
Color.WithA(). (#55) - X10D.Unity: Added
Color.WithB(). (#55) - X10D.Unity: Added
Color.WithG(). (#55) - X10D.Unity: Added
Color.WithR(). (#55) - X10D.Unity: Added
Color32.Inverted(). (#54) - X10D.Unity: Added
Color32.WithA(). (#55) - X10D.Unity: Added
Color32.WithB(). (#55) - X10D.Unity: Added
Color32.WithG(). (#55) - X10D.Unity: Added
Color32.WithR(). (#55) - X10D.Unity: Added
Component.GetComponentsInChildrenOnly<T>(). - X10D.Unity: Added
GameObject.GetComponentsInChildrenOnly<T>(). - X10D.Unity: Added
GameObject.LookAt(GameObject[, Vector3]). - X10D.Unity: Added
GameObject.LookAt(Transform[, Vector3]). - X10D.Unity: Added
GameObject.LookAt(Vector3[, Vector3]). - X10D.Unity: Added
GameObject.SetLayerRecursively(int). (#57) - X10D.Unity: Added
GameObject.SetParent(GameObject[, bool]). - X10D.Unity: Added
GameObject.SetParent(Transform[, bool]). - X10D.Unity: Added
System.Numerics.Quaternion.ToUnityQuaternion(). - X10D.Unity: Added
Quaternion.ToSystemQuaternion(). - X10D.Unity: Added
Random.NextColorArgb(). - X10D.Unity: Added
Random.NextColor32Argb(). - X10D.Unity: Added
Random.NextColorRgb(). - X10D.Unity: Added
Random.NextColor32Rgb(). - X10D.Unity: Added
Random.NextRotation(). - X10D.Unity: Added
Random.NextRotationUniform(). - X10D.Unity: Added
Random.NextUnitVector2(). - X10D.Unity: Added
Random.NextUnitVector3(). - X10D.Unity: Added
Transform.LookAt(GameObject[, Vector3]). - X10D.Unity: Added
Transform.SetParent(GameObject[, bool]). - X10D.Unity: Added
System.Numerics.Vector2.ToUnityVector(). - X10D.Unity: Added
System.Numerics.Vector3.ToUnityVector(). - X10D.Unity: Added
System.Numerics.Vector4.ToUnityVector(). - X10D.Unity: Added
Vector2.ToSystemVector(). - X10D.Unity: Added
Vector3.ToSystemVector(). - X10D.Unity: Added
Vector4.ToSystemVector(). - X10D.Unity: Added
Vector2.WithX(). (#56) - X10D.Unity: Added
Vector2.WithY(). (#56) - X10D.Unity: Added
Vector3.WithX(). (#56) - X10D.Unity: Added
Vector3.WithY(). (#56) - X10D.Unity: Added
Vector3.WithZ(). (#56) - X10D.Unity: Added
Vector4.WithX(). (#56) - X10D.Unity: Added
Vector4.WithY(). (#56) - X10D.Unity: Added
Vector4.WithZ(). (#56) - X10D.Unity: Added
Vector4.WithW(). (#56)
3.0.0 - 2022-04-30
In the midst of writing these release notes, I may have missed some important changes. If you notice an API change that is not documented here, please open an issue!
- Added
T.AsArrayValue(). - Added
T.AsEnumerableValue(). - Added
T.RepeatValue(int). - Added
T.ToJson([JsonSerializerOptions]). - Added
string.FromJson([JsonSerializerOptions]). - Added
T[].AsReadOnly(). - Added
T[].Clear([Range])andT[].Clear(int, int). - Added
DateTime.IsLeapYear(). - Added
DateTimeOffset.IsLeapYear(). - Added
Endiannessenum. - Added
FileInfo.GetHash<T>(). - Added
FileInfo.TryWriteHash<T>(Span<byte>, out int). - Added
IComparable<T>.Clamp(T, T)- this supersedesClampdefined for hard-coded numeric types. (#24) - Added
IComparable<T1>.GreaterThan(T2). (#22) - Added
IComparable<T1>.GreaterThanOrEqualTo(T2). (#22) - Added
IComparable<T1>.LessThan(T2). (#22) - Added
IComparable<T1>.LessThanOrEqualTo(T2). (#22) - Added
IComparable<T1>.Max(T). (#23) - Added
IComparable<T1>.Min(T). (#23) - Added
IDictionary<TKey, TValue>.AddOrUpdate() - Added
IEnumerable<TSource>.Product()andIEnumerable<TSource>.Product<TResult>(Func<TSource>, TResult)for all built-in numeric types, computing the product of all (optionally transformed) elements. - Added
IList<T>.Fill(T)andIList<T>.Fill(T, int, int). - Added
IPAddress.IsIPv4()andIPAddress.IsIPv6(). - Added
IReadOnlyList<byte>.Pack8Bit(). - Added
IReadOnlyList<byte>.Pack16Bit(). - Added
IReadOnlyList<byte>.Pack32Bit(). - Added
IReadOnlyList<byte>.Pack64Bit(). - Added
MemberInfo.HasCustomAttribute<T>()andMemberInfo.HasCustomAttribute(Type). - Added
defaultValueoverload forMemberInfo.SelectFromCustomAttribute<TAttr, TReturn>(). - Added
Random.Next<T>()(returns a random field from a specified enum type). - Added
Random.NextByte([byte[, byte]]). - Added
Random.NextColorArgb(), returning a random color in RGB space, including random alpha. - Added
Random.NextColorRgb(), returning a random color in RGB space with alpha 255. - Added
Random.NextDouble(double[, double]). - Added
Random.NextInt16([short[, short]]). - Added
Random.NextSingle(float[, float]). (#34) - Added
Random.NextUnitVector2(). - Added
Random.NextUnitVector3(). - Added
Random.NextRotation(). - Added
Rune.Repeat(int). - Added
byte.IsEven(). - Added
byte.IsOdd(). - Added
byte.IsPrime(). - Added
byte.UnpackBits(). - Added
byte.RangeTo(byte),byte.RangeTo(short),byte.RangeTo(int), andbyte.RangeTo(long). - Added
int.Mod(int). - Added
int.RangeTo(int), andint.RangeTo(long). - Added
int.UnpackBits(). - Added
long.Mod(long). - Added
long.RangeTo(long). - Added
long.UnpackBits(). - Added
sbyte.IsEven(). - Added
sbyte.IsOdd(). - Added
sbyte.IsPrime(). - Added
sbyte.Mod(sbyte). - Added
short.IsEven(). - Added
short.IsOdd(). - Added
short.Mod(short). - Added
short.RangeTo(short),short.RangeTo(int), andshort.RangeTo(long). - Added
short.UnpackBits(). - Added
string.IsPalindrome(). - Added
Stream.GetHash<T>(). - Added
Stream.TryWriteHash<T>(Span<byte>, out int). - Added
Stream.ReadInt16([Endian]). - Added
Stream.ReadInt32([Endian]). - Added
Stream.ReadInt64([Endian]). - Added
Stream.ReadUInt16([Endian]). - Added
Stream.ReadUInt32([Endian]). - Added
Stream.ReadUInt64([Endian]). - Added
Stream.Write(short, [Endian]). - Added
Stream.Write(int, [Endian]). - Added
Stream.Write(long, [Endian]). - Added
Stream.Write(ushort, [Endian]). - Added
Stream.Write(uint, [Endian]). - Added
Stream.Write(ulong, [Endian]). - Added
TimeSpan.Ago(). - Added
TimeSpan.FromNow(). - Added
TimeSpanParser.TryParsewhich supersedesTimeSpanParser.Parse. - Added
Sqrt()andComplexSqrt()for all built-in decimal types. - Added
All()andAny()forSpan<T>andReadOnlySpan<T>, mimicking the corresponding methods inSystem.Linq. - Added
Sign()for built-in numeric types. For unsigned types, this never returns -1. - Added
Type.Implements<T>()andType.Implements(Type). (#25) - Added
Type.Inherits<T>()andType.Inherits(Type). (#25) - Added
DigitalRootfunction for built-in integer types. - Added
Factorialfunction for built-in integer types. - Added
HostToNetworkOrderandNetworkToHostOrderforshort,int, andlong. - Added
IsLeapYearfunction forDateTimeandDateTimeOffset, as well as built-in numeric types. - Added
MultiplicativePersistencefunction for built-in integer types. - Added
RotateLeftandRotateRightfor built-in integer types. - Added trigonometric functions for built-in numeric types,
including
Acos(),Asin(),Atan(),Atan2(),Cos(),Sin(),Tan()(#49) - Added time-related extension methods for built-in numeric types,
including
Milliseconds(),Seconds(),Minutes(),Hours(),Days(), andWeeks().Ticks()is also available, but only for integers; not floating point. - Added
StringBuilderReader(inheritingTextReader) which allows reading from aStringBuilderwithout consuming the underlying string. - Added extension methods for
System.Decimal.
- Updated to .NET 6. (#45)
- Methods defined to accept
byte[]have been changed acceptIReadOnlyList<byte>. - Extension methods are now defined in appropriate child namespaces to reduce the risk of name collisions. (#7)
char[].Random(int),char[].Random(int, int),IEnumerable<char>.Random(int), andIEnumerable<char>.Random(int, int)have been redefined asRandom.NextString(IReadOnlyList<char>, int).IComparable<T>.Between(T, T)has been redefined asIComparable<T1>.Between(T2, T3, [InclusiveOptions])to allow comparison of disparate yet comparable types, and also offers inclusivity options.DateTimeextensions now wrapDateTimeOffsetextensions.DateTime.ToUnixTimestamp([bool])has been redefined asDateTime.ToUnixTimeMilliseconds()andDateTime.ToUnixTimeSeconds().Dictionary<T1, T2>.ToGetParameters(),IDictionary<T1, T2>.ToGetParameters(), andIReadOnlyDictionary<T1, T2>.ToGetParameters(), has been redefined asIEnumerable<KeyValuePair<T1, T2>>.ToGetParameters().Dictionary<T1, T2>.ToConnectionString(),IDictionary<T1, T2>.ToConnectionString(), andIReadOnlyDictionary<T1, T2>.ToConnectionString(), has been redefined asIEnumerable<KeyValuePair<T1, T2>>.ToConnectionString().IList<T>.OneOf([Random])andIEnumerable<T>.OneOf([Random])have been redefined asRandom.NextFrom<T>(IEnumerable<T>)to fall in line with the naming convention ofSystem.Random. (#21)IList<T>.Shuffle([Random])now uses a Fisher-Yates shuffle implementation.IList<T>.Shuffle([Random])has been repurposed to shuffle the list in place, rather than returning a new enumerable.IEnumerable<T>.Shuffle([Random])has been renamed toIEnumerable<T>.Shuffled([Random])to avoid confusion withIList<T>.Shuffle([Random]).
Random.CoinToss()has been redefined asRandom.NextBoolean()to fall in line with the naming convention ofSystem.Random.Random.OneOf<T>(T[])andRandom.OneOf<T>(IList<T>)have been redefined asRandom.NextFrom<T>(IEnumerable<T>)to fall in line with the naming convention ofSystem.Random.Enum.Next([bool])andEnum.Previous([bool])have been redefined. asEnum.Next(),Enum.Previous(),Enum.NextUnchecked(),Enum.PreviousUnchecked(). TheUncheckedvariants of these methods do not perform index validation, and will throwIndexOutOfRangeExceptionwhen attempting to access an invalid index. The checked variants will perform a modulo to wrap the index.- Seperated
string.WithAlternative(string, [bool])tostring.WithEmptyAlternative(string)andstring.WithWhiteSpaceAlternative(string). string.AsNullIfEmpty()andstring.AsNullIfWhiteSpace()now accept a nullablestring.IEnumerable<byte>.GetString([Encoding])has been renamed toIReadOnlyList<byte>.ToStringand itsEncodingparameter has been made non-optional.- Fixed a bug where
IEnumerable<KeyValuePair<K,V>>.ToConnectionString()would not sanitize types with customToString()implementation. (#20) Renamedstring.Random(int[, Random])tostring.Randomize(int[, Random]). - Redefined
char[].Random(int),char[].Random(int, Random),IEnumerable<char>.Random(int), andIEnumerable<char>.Random(int, Random), asRandom.NextString(IReadOnlyList<char>, int). - Improved performance for:
string.IsLower()string.IsUpper()string.Reverse()TimeSpanParser
- Indefinitely suspended Unity support, until such a time that Unity can be updated to a newer version of .NET. See: https://forum.unity.com/threads/unity-future-net-development-status.1092205/
- Removed
bool.And(bool). - Removed
bool.NAnd(bool). - Removed
bool.NOr(bool). - Removed
bool.Not(bool). - Removed
bool.Or(bool). - Removed
bool.ToByte(). - Removed
bool.ToInt16(). - Removed
bool.ToInt64(). - Removed
bool.XNOr(). - Removed
bool.XOr(). - Removed
IConvertible.To<T>([IFormatProvider]). (#13) - Removed
IConvertible.ToOrDefault<T>([IFormatProvider]). (#13) - Removed
IConvertible.ToOrDefault<T>(out T, [IFormatProvider]). (#13) - Removed
IConvertible.ToOrNull<T>([IFormatProvider]). (#13) - Removed
IConvertible.ToOrNull<T>(out T, [IFormatProvider]). (#13) - Removed
IConvertible.ToOrOther<T>(T, [IFormatProvider]). (#13) - Removed
IConvertible.ToOrOther<T>(out T, T, [IFormatProvider]). (#13) - Removed
IEnumerable<T>.Split(int)- this functionality is now provided by .NET in the form of theChunkmethod. See: https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.chunk?view=net-6.0. - Removed
MemberInfo.GetDefaultValue()(useSelectFromCustomAttribute()instead). - Removed
MemberInfo.GetDescription()(useSelectFromCustomAttribute()instead). - Removed
int.ToBoolean(). - Removed
long.ToBoolean(). - Removed
short.ToBoolean(). - Removed
uint.ToBoolean(). - Removed
ushort.ToBoolean(). - Removed
ulong.ToBoolean(). - Removed
WaitHandle.WaitOneAsync(). For suspensions of execution during asynchronous operations, favourTaskCompletionSourceorTaskCompletionSource<T>. See: https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskcompletionsource?view=net-6.0 and https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskcompletionsource-1?view=net-6.0
2.6.0 - 2020-10-20
- Add
string.AsNullIfEmpty().- Returns the current string, or
nullif the current string is null or empty.
- Returns the current string, or
- Add
string.AsNullIfWhiteSpace().- Returns the current string, or
nullif the current string is null, empty, or consists of only whitespace.
- Returns the current string, or
- Add
string.Reverse().- Reverses the current string.
- Add
string.WithAlternative().- Returns the current string, or an alternative value if the current string is null or empty, or optionally if the current string consists of only whitespace.
- n/a
- n/a
2.5.0 - 2020-07-15
WaitHandle.WaitOneAsync().- Wraps
WaitHandle.WaitOneas aTask.
- Wraps
- Add support for Unity 2019.4.3f1.
- Add
GameObject.LookAt(GameObject).- Rotates the Transform on the current GameObject so that it faces the Transform on another GameObject.
- Add
GameObject.LookAt(Transform).- Rotates the Transform on the current GameObject so that it faces another transform.
- Add
Transform.LookAt(GameObject)- Rotates the current Transform so that it faces the Transform on another GameObject.
- Add
Vector3.Round([float]).- Returns a rounded Vector3 by calling
float.Round()on each component.
- Returns a rounded Vector3 by calling
- Add
Vector3.WithX(float).- Returns a Vector3 with a new X component value.
- Add
Vector3.WithY(float).- Returns a Vector3 with a new Y component value.
- Add
Vector3.WithZ(float).- Returns a Vector3 with a new Z component value.
- Add
Vector3.WithXY(float, float).- Returns a Vector3 with new X and Y component values.
- Add
Vector3.WithXZ(float, float).- Returns a Vector3 with new X and Z component values.
- Add
Vector3.WithYZ(float, float).- Returns a Vector3 with new Y and Z component values.
- Add
BetterBehavior(experimental wrapper overMonoBehaviour).
- Add
- n/a
- n/a
2.2.0 - 2020-04-21
-
Add
string.ChangeEncoding(Encoding, Encoding).- Converts this string from one encoding to another.
-
Add
string.IsLower().- Determines if all alpha characters in this string are considered lowercase.
-
Add
string.IsUpper().- Determines if all alpha characters in this string are considered uppercase.
-
Various extension methods with regards to reflection:
GetDefaultValueandGetDefaultValue<T>- gets the value stored in the member'sDefaultValueattribute.GetDescription- gets the value stored in the member'sDescriptionattribute.SelectFromCustomAttribute<T1, T2>- Internally callsGetCustomAttribute<T1>and passes it to aFunc<T1, T2>so that specific members may be selected.
- n/a
- n/a
2.1.0 - 2020-04-18
- Add
bool bool.And(bool).- Performs logical AND.
- Add
bool bool.Or(bool).- Performs logical OR.
- Add
bool bool.Not(bool).- Performs logical NOT.
- Add
bool bool.XOr(bool).- Performs Logical XOR.
- Add
bool bool.NAnd(bool).- Performs logical NAND.
- Add
bool bool.NOr(bool).- Performs logical NOR.
- Add
bool bool.XNOr(bool).- Performs logical XNOR.
- Add
byte bool.ToByte().- 1 if
true, 0 otherwise.
- 1 if
- Add
short bool.ToInt16().- 1 if
true, 0 otherwise.
- 1 if
- Add
long bool.ToInt64().- 1 if
true, 0 otherwise.
- 1 if
- n/a
- n/a
2.0.0 - 2020-04-18
- Add
IEnumerable<T>.Split(int).- Performs the same operation as the previously defined
IEnumerable<byte>.Chunkify(int), except now accepts any typeT.
- Performs the same operation as the previously defined
- Fix
DateTime.Last(DayOfWeek)implementation.- Now returns the correct date/time for a given day of the week.
- Remove
IEnumerable<byte>.Chunkify(int).- Replaced by a method of the same behaviour
IEnumerable<T>.Split(int).
- Replaced by a method of the same behaviour
Earlier versions of this package are undocumented and unlisted from package results.