Garyon 0.3.0.1
See the version list below for details.
dotnet add package Garyon --version 0.3.0.1
NuGet\Install-Package Garyon -Version 0.3.0.1
<PackageReference Include="Garyon" Version="0.3.0.1" />
paket add Garyon --version 0.3.0.1
#r "nuget: Garyon, 0.3.0.1"
// Install Garyon as a Cake Addin #addin nuget:?package=Garyon&version=0.3.0.1 // Install Garyon as a Cake Tool #tool nuget:?package=Garyon&version=0.3.0.1
Garyon
A C# library aiming to offer multi-dimensional functionality.
Pre-Release Notice
This project is not yet ready for an actual release. All the code is still in pre-release, thus it might contain bugs, some APIs might be renamed, refactored, reimplemented, or even removed entirely in future releases. Please keep that in mind and always ensure that your implementations are up-to-date after updating the library.
After the initial release, there will be no such issues. All the new APIs will be properly tested, constructed and organized before making it to production.
Why is it here?
Many parts of the standard library are either incomplete or not as well-designed. This library offers further helpers and overall functionality with its code, preventing the user from needing to write commonly found boilerplate code for frequent tasks. Many projects include some utility code that could serve general purpose, and is being reimplemented on a per-project basis, which should not happen. Furthermore, a lot of the boilerplate code is not even nearly as optimized as it could be, while in some projects that need performance, optimizations are either mediocre, or just too in-depth, consuming useful time from actually developing the intended project.
What areas does it cover?
From System.Console
to System.Reflection
, or even custom implementations of common assets, this library can expand virtually every
single area the standard library does not fully cover.
Contribution
Abide to the code style, ensure all additions are properly tested, and include test cases. More information is specifically given under the Quality Control section:
Quality Control
This library aims to offer high-performance utility code, thus everything needs to be properly tested and benchmarked to ensure that it does have a significant improvement over other solutions. This is why the solution contains the
Garyon.QualityControl
Garyon.Benchmarks
Garyon.Tests
projects.
Garyon.QualityControl
is the base project, which the other two depend on. It is meant to contain shared assets between tests and benchmarks.Garyon.Benchmarks
contains the benchmarks that are being run in order to test performance of the functionality that is being provided.Garyon.Tests
contains test cases for each single non-obviously correct function to ensure the utilities are correctly implemented in every case. Every single test must cover all edge cases, to never come across potential regressions.
Performance
To ensure performance is peak, SIMD must be taken into consideration. There are numerous instructions that fall under that category, and offer great performance improvements when used in an impactful amount. Repetitive calls to small functions should be inlined, whereas much less frequently used functions need not be inlined, neither optimized, for long as they do not completely ruin performance.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
NuGet packages (18)
Showing the top 5 NuGet packages that depend on Garyon:
Package | Downloads |
---|---|
RoseLynn
Additional tools for Roslyn-based applications. |
|
RoseLynn.Analyzers
Additional tools for Roslyn-based analyzers. |
|
RoseLynn.CodeFixes
Additional code fix tools for Roslyn-based analyzers. |
|
GDAPI
Package Description |
|
RoseLynn.VS2019
Additional tools for Roslyn-based applications, compatible with VS 2019. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
0.4.1 | 201 | 9/11/2024 | |
0.4.0 | 130 | 9/4/2024 | |
0.3.3 | 830 | 2/26/2023 | |
0.3.2 | 3,894 | 1/7/2023 | |
0.3.1.3 | 326 | 1/3/2023 | |
0.3.1.2 | 323 | 1/2/2023 | |
0.3.1.1 | 338 | 1/1/2023 | |
0.3.0.1 | 309 | 12/29/2022 | |
0.2.7 | 2,304 | 1/16/2022 | |
0.2.6.1 | 658 | 12/3/2021 | |
0.2.6 | 314 | 12/3/2021 | |
0.2.5 | 5,270 | 11/24/2021 | |
0.2.4 | 4,774 | 7/23/2021 | |
0.2.3 | 4,772 | 7/4/2021 | |
0.2.2 | 369 | 2/6/2021 | |
0.2.1 | 565 | 1/7/2021 | |
0.2.0 | 449 | 1/7/2021 | |
0.1.1 | 512 | 12/18/2020 | |
0.1.0 | 471 | 12/9/2020 |
Additions:
- AffixedEnumerable<T>
- SingleOrEnumerable<T>
- EmptyEnumerator<T>
- SingleValueEnumerator<T>
- UnreachableException
- NullGuards
Extensions:
- Tons of Span<T> and ReadOnlySpan<T> extensions
- string.Repeat(int)
- UnaryOperatorExtensions
- AppDomainHelpers
- Several extensions for MemberInfo, FieldInfo and Type
- IEnumeratorExtensions
- IDictionaryExtensions
- More ToCollectionExtensions
- IEnumerable<T>.Uphold
Improvements:
- Documentation for some more components
- Compiled against .NET 5.0, .NET 6.0 and .NET 7.0
Breaking Changes:
- Renamespace TypeValueCounterDictionary into Garyon.Objects from Garyon.Functions
Bugfixes:
- Critical SO bug in IEnumerableExtensions.Concat(params T[])
- Bug in PathUtilities.GetCommonDirectory
Internals:
- Use C# 11.0
- Code style cleanup