v3.2.0
Features
- add Saturate for floating point types (#60) #68 (Oliver Booth)
- add string.EnsureEndsWith and string.EnsureStartsWith #68 (Oliver Booth)
- add IEnumerable.Grep() #68 (Oliver Booth)
- add TextReader.EnumerateLines/Async #68 (Oliver Booth)
- add IEnumerable.ConcatOne #68 (Oliver Booth)
- add LowestCommonMultiple for built-in integer types #68 (Oliver Booth)
- expose ComplexSqrt to all frameworks #68 (Oliver Booth)
- pack README.md in nupkg #68 (Oliver Booth)
- add MathUtility.Bias (#60) #68 (Oliver Booth)
- add double overload for Bias (#60) #68 (Oliver Booth)
- add MathUtility.SmoothStep (#60) #68 (Oliver Booth)
- Add MathUtility.ExponentialDecay (#60) #68 (Oliver Booth)
- add MathUtility.Sigmoid (#60) #68 (Oliver Booth)
- add MathUtility.Sawtooth (#60) #68 (Oliver Booth)
- add MathUtility.Pulse (resolves #60) #68 (Oliver Booth)
Bug Fixes
- tests: fix incorrect timezone offset for DST #68 (Oliver Booth)
- accept ReadOnlySpan not Span for search needle #68 (Oliver Booth)
- use intrinsic convention for ToVector3 #68 (Oliver Booth)
- DoS: specify timeout in Regex ctor #68 (Oliver Booth)
- use ArgumentNullException throw helper for .NET >=6 #68 (Oliver Booth)
- test: fix Clear unit test not creating the temp directory #68 (Oliver Booth)
- fixed Stream.ReadSingle returning wrong type #68 (Oliver Booth)
- fix incorrect float/double being written for netstandard2.1 #68 (Oliver Booth)
- write float, not double, in Stream.WriteSingle #68 (Oliver Booth)
- test: fix incorrect date being returned for .NET Standard 2.1 #68 (Oliver Booth)
- test: import X10D.Core for NextSingle to work on < net6.0 #68 (Oliver Booth)
- expose internals to X10D.Tests project #68 (Oliver Booth)
- fix bug introduced by d29663f #68 (Oliver Booth)
- rename DebugEx to DebugUtility #68 (Oliver Booth)
- suppress CA1000 #68 (Oliver Booth)
- CLSCompliant(false) for X10D.Unity #68 (Oliver Booth)
- suppress .NET analyzer for test project #68 (Oliver Booth)
- test: fix ref as of bc3dedf #68 (Oliver Booth)
- test: remove invalid namespace imports #68 (Oliver Booth)
- fix SSE2 implementation of PackInt32 #68 (Oliver Booth)
- test: assert ArgumentNullException only for .NET < 6 #68 (Oliver Booth)
- test: assert vertex count against Polygon.Empty #68 (Oliver Booth)
Documentation
- bump version in README to 3.2.0 #68 (Oliver Booth)
Styles
- remove unused using directive #68 (Oliver Booth)
- use explicit type for Vector128 #68 (Oliver Booth)
- test: segment methods to partials #68 (Oliver Booth)
- update branding #68 (Oliver Booth)
- cluster throw helpers together to reduce branch repetition #68 (Oliver Booth)
- test: remove throws of NotImplementedException #68 (Oliver Booth)
- remove redundant else branches #68 (Oliver Booth)
- cleanup DictionaryExtensions #68 (Oliver Booth)
Code Refactoring
- remove Polyhedron.IsConvex #68 (Oliver Booth)
- remove TODOs (resolves #71) #68 (Oliver Booth)
- move old exception messages from Resources.resx (#27) #68 (Oliver Booth)
- move exception messages to resource file (#27) #68 (Oliver Booth)
Performance Improvements
- sourcegen: cache and compile regex. pass timeout #68 (Oliver Booth)
- use UnsafeUtility for Unity<->System conversions #68 (Oliver Booth)
- exit early if TryGetNonEnumeratedCount is 0 #68 (Oliver Booth)
- lazily yield additional value #68 (Oliver Booth)
- remove redundant 0 check in Sqrt #68 (Oliver Booth)
- remove redundant 6k ± 1 check in IsPrime #68 (Oliver Booth)
- accept ReadOnlySpan in WriteInternal #68 (Oliver Booth)
- remove local method, exclude coverage for default arm #68 (Oliver Booth)
- fix performance of intrisics #68 (Oliver Booth)
Tests
- update test project dependencies #68 (Oliver Booth)
- cover Color.Deconstruct #68 (Oliver Booth)
- 100% coverage on EnumerableExtensions #68 (Oliver Booth)
- update X10D.Unity.Tests to 2021.3.21f1 #68 (Oliver Booth)
- add tests for GetIso8601WeekOfYear #68 (Oliver Booth)
- 100% coverage for TimeSpanParser.TryParse #68 (Oliver Booth)
- cover Span overloads of CountSubstring #68 (Oliver Booth)
- 100% coverage on Enumerable and String methods in Text namespace #68 (Oliver Booth)
- bring coverage to 94% for RuneExtensions #68 (Oliver Booth)
- use fixed point of reference for Age tests #68 (Oliver Booth)
- exclude "packing magic" properties from coverage #68 (Oliver Booth)
- 100% coverage on Wrap for all types #68 (Oliver Booth)
- 100% coverage on MultiplicativePersistence #68 (Oliver Booth)
- add tests for Point.IsOnLine and PointF.IsOnLine #68 (Oliver Booth)
- test Equals(object) for various Drawing types #68 (Oliver Booth)
- run tests for .NET 7, 6, and Core 3.1 #68 (Oliver Booth)
- 100% coverage on stream Read/Write methods #68 (Oliver Booth)
- test RuneExtensions for .NET >= 5 #68 (Oliver Booth)
- bring coverage to 100% for integer Unpack (#70) #68 (Oliver Booth)
- add tests for CorrectBoolean (#73) #68 (Oliver Booth)
- add tests for ReverseElements (#73) #68 (Oliver Booth)
- add tests for Span.Count #68 (Oliver Booth)
- bring coverage to 100% for X10D.Collections.SpanExtensions #68 (Oliver Booth)
- bring coverage to 100% for AddOrUpdate #68 (Oliver Booth)
- add unit tests for ServiceCollectionExtensions #68 (Oliver Booth)
- bring coverage to 100% for Collections, Linq, Math, and Text #68 (Oliver Booth)
- 100% coverage on Reflection extensions #68 (Oliver Booth)
- cover null input for IsIPv4 and IsIPv6 #68 (Oliver Booth)
- add unit tests for Span.Contains(Enum) (#73) #68 (Oliver Booth)
- add tests for ReadOnlySpan.Pack (#73) #68 (Oliver Booth)
- add tests for integer Pack (#73) #68 (Oliver Booth)
- 100% coverage on IntrinsicUtility (#73) #68 (Oliver Booth)
- 100% coverage on RandomExtensions #68 (Oliver Booth)
- bring coverage to 100% for Drawing #68 (Oliver Booth)
- exclude uncoverable Age overload from coverage #68 (Oliver Booth)
- add tests for MathUtility.Lerp #68 (Oliver Booth)
Builds
- nupkg: add PackageReleaseNotes to csproj #68 (Oliver Booth)
- ci: update checkout and setup-dotnet actions #68 (Oliver Booth)
- nupkg: use MSBuildProjectDirectory and go up 1 level #68 (Oliver Booth)
- remove Debug properties in test csproj #68 (Oliver Booth)
- output debug symbols for all projects (#75) #68 (Oliver Booth)
- partial revert 58c333a (#75)) #68 (Oliver Booth)
- partial revert 58c333a (#75) #68 (Oliver Booth)
- conditionally reference dotCover (fixes #75) #68 (Oliver Booth)
Continuous Integration
- upm: automate upm branch update (resolves #69) #68 (Oliver Booth)
- upm: update package.json in upm branch (#69) #68 (Oliver Booth)
- dotnet: run framework-specific tests separately #68 (Oliver Booth)
- exclude default arm of Rune.Repeat from coverage #68 (Oliver Booth)
- exclude uncoverable projects from coverage #68 (Oliver Booth)
- exclude cpu-arch support providers from coverage #68 (Oliver Booth)
- upload dotnet pack artifacts #68 (Oliver Booth)
- skip redundant build steps #68 (Oliver Booth)
- specify configuration for build steps #68 (Oliver Booth)
- only commit if working tree contains changes #68 (Oliver Booth)
- suppress uncoverable lines in StreamExtensions #68 (Oliver Booth)
- add CI version info in dotnet build #68 (Oliver Booth)
Commits
- f0781e5: Directly return SpanSplitEnumerator instance (Oliver Booth) #68
- 2431a07: Un-nest SpanSplitEnumerator (Oliver Booth) #68
- 3c5cecf: Fix CA1028 violation (Oliver Booth) #68
- 0aeb6ff: Remove unused using directive (Oliver Booth) #68
- 1c0c06f: Only create Shared random for .NET < 6 (Oliver Booth) #68
- e38c384: Suppress CA5394 (Oliver Booth) #68
- c27334b: Fix CA1307 violations (Oliver Booth) #68
- 398b0c5: Fix CA2225 violations (Oliver Booth) #68
- deb1f2e: Fix CA1602 violations (Oliver Booth) #68
- 7a1ecc6: Fix CA1305 violations (Oliver Booth) #68
- 00d784e: Don't make exception throwing optional (Oliver Booth) #68
- f1815ca: Suppress CA1805 in .editorconfig (Oliver Booth) #68
- f3b40d3: Remove in modifier from SpanSplitEnumerator ctor (Oliver Booth) #68
- 8dfe6d5: Fix CS8600 and CS8602 (Oliver Booth) #68
- aeef084: Mark X10D.DSharpPlus as not CLS-compliant (Oliver Booth) #68
- 7776138: Remove calls to no-longer-existing Clear(bool) (Oliver Booth) #68
- fe0b364: [ci skip] Target .NET 7 for source validator (Oliver Booth) #68
- 0489260: [ci skip] [github actions] Update unity-test-runner 2.1.0 (Oliver Booth) #68
- b09b228: Update project to 2021.3.14f1 (Oliver Booth) #68
- af622a8: Allow for minor differentiation in equality test (Oliver Booth) #68
- da5c350: Add edge case for WaitForTimeSpan unit test (Oliver Booth) #68
- c8d2a5c: Call .ConfigureAwait(false) (Oliver Booth) #68
- 0ba7781: Fix StackOverflow in FromCircle (Oliver Booth) #68
- 9c2f77b: Remove invalid DirectoryInfo.Clear test (Oliver Booth) #68
- e02fd3b: Add IReadOnlyList.IndexOf (Oliver Booth) #68
- b60fdc4: Add IReadOnlyList.Slice (Oliver Booth) #68
- 9d6dbaa: Add Quaternion.ToAxisAngle and Quaternion.ToVector3 (Oliver Booth) #68
- 941f3ac: [ci skip] Condense switch statement for IsPrime (Oliver Booth) #68
- a53cb12: Use n&1 rather than n%2 for integer IsEven check (Oliver Booth) #68
- 9349ead: Update DSharpPlus 4.3.0 stable (Oliver Booth) #68
- None #68 (Oliver Booth)
- d14ecde: revert DebugType:None (Oliver Booth) #68
- fdc9e64: Remove trailing whitespace in QuaternionExtensions (Oliver Booth) #68
- 94a841b: Allow null input in TimeSpanParser.TryParse (Oliver Booth) #68
- ce255a8: [ci skip] Fix workflow badge link (Oliver Booth) #68
- 8ff3447: [ci skip] Actually fix badge link (Oliver Booth) #68
- 35591b0: Add ReadOnlySpan overload for TimeSpanParser (Oliver Booth) #68
- ea51adc: Cache Singleton instance on Awake (Oliver Booth) #68
- 384ec3f: [ci skip] Set ContinuousIntegrationBuild to true for CI builds (Oliver Booth) #68
- eadb66f: Add MathUtility.ScaleRange (Oliver Booth) #68
- 6cd7d8d: Add DiscordClient.GetUserOrNullAsync (Oliver Booth) #68
- a076a61: Add DiscordGuild.GetMemberOrNullAsync (Oliver Booth) #68
- 17ad195: [ci skip] Fix workflow link in shield (Oliver Booth) #68
- c6849a0: [ci skip] style=flat-square for shields.io badges (Oliver Booth) #68
- d9cf9c8: Add Nullable.TryGetValue (resolves #61) (Oliver Booth) #68
- ba7329f: [ci skip] Remove trailing whitespace on line 10 (Oliver Booth) #68
- d461c46: Rewrite TimeSpanParserTests (Oliver Booth) #68
- 2aab9e8: Use .NET 7 SDK for solution (Oliver Booth) #68
- 6221414: [ci skip] Use .NET 7 SDK for solution (Oliver Booth) #70
- ca1b1cc: Add GreatestCommonFactor for built-in integer types (Oliver Booth) #68
- f0bce29: Fix CS1574 in ListExtensions (Oliver Booth) #68
- 795d696: Add GammaToLinear and LinearToGamma (#60) (Oliver Booth) #68
- 81f1a7c: Inline Lerp/InverseLerp expression in ScaleRange (Oliver Booth) #68
- d1454a1: [ci skip] Add unit tests for ScaleRange (Oliver Booth) #68
- 3fc2e72: Add Random.NextFrom([ReadOnly]Span) (Oliver Booth) #68
- 55a2e99: Update project to 2021.3.19f1 (Oliver Booth) #68
- 3607034: [X10D.Unity] Add tests for Color(32).Deconstruct (Oliver Booth) #68
- f5b88e5: [github actions] Use .NET 7 (Oliver Booth) #70
- d1959f4: [ci skip] Add unit tests for IsOnLine (Oliver Booth) #68
- db2def1: Add Wrap for built-in numeric types (#60) (Oliver Booth) #68
- 3ef6cf2: Fix xmldoc for decimal.Sqrt (Oliver Booth) #68
- 7a6dbef: [ci skip] Fix null-check precondition for WhereNot (Oliver Booth) #68
- 041181c: Add IEnumerable<T?>.WhereNotNull() (Oliver Booth) #68
- 799bc77: Add IsEmpty/IsWhiteSpace and IsNullOrEmpty/WhiteSpace for string (Oliver Booth) #68
- 1e98e69: Initial commit with SIMD implementation and some other specialization methods (RealityProgrammer) #70
- ba8c0c6: Merge branch 'oliverbooth:main' into main (RealityProgrammer) #70
- e1a7ac0: Added SpanExtensions and the reinterpret between Unity's structs to System.Numerics structs (RealityProgrammer) #70
- 862d3ad: Merge branch 'main' of https://github.com/RealityProgrammer/X10D (RealityProgrammer) #70
- 4300e35: Replace stackalloc and ToArray combination to array initialization directly (RealityProgrammer) #70
- a808cab: Optimize DictionaryExtensions and handle CodeAnalysis errors (RealityProgrammer) #70
- 5e4044f: Code fixup, fast Int8 packing (RealityProgrammer) #70
- 6f343cd: Fast Int16 packing (RealityProgrammer) #70
- dc8b263: Fast Int32, Int64 packing (RealityProgrammer) #70
- e176f65: Commit git's untracked files (RealityProgrammer) #70
- a685d6e: Merge branch 'develop' into main (Oliver Booth) #70
- b251f88: Optimize Rune.Repeat(int) when UTF8 sequence length is 1 or 2 and reformat some intrinsic code (RealityProgrammer) #70
- d41bdc8: Merge branch 'main' of https://github.com/RealityProgrammer/X10D (RealityProgrammer) #70
- 0c9623b: Add missing XML documentations (RealityProgrammer) #70
- 1651f0e: Software fallback implementation for methods in IntrinsicExtensions (RealityProgrammer) #70
- ec8e60c: Rephrase note message (RealityProgrammer) #70
- 8b8aeb3: Fix source validator's code reports, remove 95% of AdvSimd implementation to prevent future consequences (RealityProgrammer) #70
- 77b0a8c: Move some intrinsic methods around, reimplement RuneExtensions.Repeat(Rune, Int32) (RealityProgrammer) #70
- 0bf4d7b: Again, fix source validator reports (RealityProgrammer) #70
- 44165b3: Move exception message to the right resource resx (RealityProgrammer) #70
- c6fdea1: [ci skip] Format changelog (Oliver Booth) #68
- 7fbbb6e: [ci skip] Document changes introduced with PR #68 (Oliver Booth) #68
- 9edab4d: [ci skip] ... I mean PR #70 (Oliver Booth) #68
- cb80d19: [ci skip] Fix xmldoc for SpanExtensions.Contains (Oliver Booth) #68
- 167a55e: [ci skip] Remove redundant unsafe method modifiers (Oliver Booth) #68
- 136382a: [ci skip] Revert 167a55e (Oliver Booth) #68
- ea26b5a: Use explicit type where non-evident in SpanExtensions (Oliver Booth) #68
- e00a673: i is for I will scream at these changes (Oliver Booth) #68
- 3b85419: Add MinMax and MinMaxBy (resolves #72) (Oliver Booth) #68
- 9b5cc9f: [ci skip] Reference #72 in changelog (Oliver Booth) #68
- 9c85272: [ci skip] feat: add workflow files as solution items (Oliver Booth) #68
- 100% coverage on Circle and CircleF #68 (Oliver Booth)
- e0bdaad: style/perf: reduce complexity of MinMax and MinMaxBy (Oliver Booth) #68
- 34d1f85: [ci skip] ci(upm): output package.json instead of print to stdout (Oliver Booth) #68
- 4dd31ec: [ci skip] style: reformat & cleanup solution (Oliver Booth) #68
- f5b53cd: [ci skip] test: remove netstandard2.1 from test csproj (Oliver Booth) #68
- 12d2e10: [ci skip] docs: mention ArgumentNullException for Grep (Oliver Booth) #68
- 4f3f791: [ci skip] test: assert ArgumentNullException from Grep (Oliver Booth) #68
- 7681040: [ci skip] style(test): suppress IteratorNeverReturns warning (Oliver Booth) #68
- 006523d: [ci skip] perf: convert Count to for loop with index access (Oliver Booth) #68
- 33c5361: fix/perf: return zero vector for identity quaternion (Oliver Booth) #68
- 38112f0: [ci skip] style: remove trailing whitespace (Oliver Booth) #68
- 4cd669a: [ci skip] fix(test): force enumeration of lazy enumerable (Oliver Booth) #68
- b406b4d: [ci skip] docs: update copyright year in LICENSE.md (Oliver Booth) #68
- dd1a423: [ci skip] docs: do england more gooder (Oliver Booth) #68
- 3cb4590: [ci skip] docs: use C# 10 "where feasible" (Oliver Booth) #68
- 9ee99d7: [ci skip] style: upgrade projects to C# 11 (Oliver Booth) #68
- 369882c: [ci skip] style: remove unused using directives (Oliver Booth) #68
- 4152c28: [ci skip] style: restrict scope of pragma suppression (Oliver Booth) #68
- f293f24: [ci skip] style: remove unused using directives (Oliver Booth) #68
- 3f47a4e: [ci skip] test: rename Pack8Bit to PackByte (Oliver Booth) #68
- ce1c2e8: [ci skip] docs(style): update branding (Oliver Booth) #68
- 6eb74c1: [ci skip] style: add social embed branding export (Oliver Booth) #68
- 83f9737: [ci skip] docs(repo): add tailored README for X10D.Unity (Oliver Booth) #68
- 51ae070: [ci skip] fix(docs): -y (Oliver Booth) #68
- 4cfa7fe: [ci skip] fix(docs): fix CONTRIBUTING.md link (Oliver Booth) #68
- 1500287: [ci skip] fix(docs): rename master -> main (Oliver Booth) #68
- ee0df8c: [ci skip] docs: vertically center Unity branding (Oliver Booth) #68
- e5ec06c: [ci skip] test: output debug symbols (Oliver Booth) #68
- 427563b: [ci skip] test: CollectCoverage:true (Oliver Booth) #68
- bfd3a56: [ci skip] ci: enable .NET analyzers for all projects (Oliver Booth) #68
- ceaa254: docs/perf: throw for null input (Oliver Booth) #68
- 2bfe0b2: [ci skip] ci: add trace logging for upm package.json generator (Oliver Booth) #68
- a093e91: [ci skip] ci: cd upm before git diff (Oliver Booth) #68
- fb20e4d: [ci skip] ci: copy artifacts before git diff (Oliver Booth) #68
- 2439b3a: [ci skip] style(ci): remove redundant empty line (Oliver Booth) #68
- 303617a: [ci skip] ci: cd upm for each successive step (Oliver Booth) #68
- b806e50: [ci skip] style: remove unused using directives (Oliver Booth) #68
- 0e64819: [ci skip] docs: add Pulse to CHANGELOG (Oliver Booth) #68