Garyon 0.3.3

.NET 5.0 .NET Core 3.1 .NET Standard 2.0
dotnet add package Garyon --version 0.3.3
NuGet\Install-Package Garyon -Version 0.3.3
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="Garyon" Version="0.3.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Garyon --version 0.3.3
#r "nuget: Garyon, 0.3.3"
#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.
// Install Garyon as a Cake Addin
#addin nuget:?package=Garyon&version=0.3.3

// Install Garyon as a Cake Tool
#tool nuget:?package=Garyon&version=0.3.3

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
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48 net481
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.1

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net5.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages (13)

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.

RoseLynn.Testing

Additional tools for testing Roslyn-based analyzers.

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.3.3 85 2/26/2023
0.3.2 1,050 1/7/2023
0.3.1.3 140 1/3/2023
0.3.1.2 148 1/2/2023
0.3.1.1 162 1/1/2023
0.3.0.1 148 12/29/2022
0.2.7 1,580 1/16/2022
0.2.6.1 441 12/3/2021
0.2.6 190 12/3/2021
0.2.5 5,154 11/24/2021
0.2.4 4,667 7/23/2021
0.2.3 4,651 7/4/2021
0.2.2 264 2/6/2021
0.2.1 388 1/7/2021
0.2.0 327 1/7/2021
0.1.1 383 12/18/2020
0.1.0 351 12/9/2020

Extensions:
- FileInfo, DirectoryInfo, FileSystemInfo
- IAsyncEnumerableExtensions.ToListAsync
- IDictionaryExtensions.ValueOrDefault(TKey?, TValue?)
- IListExtensions.AddRangeAsync
- AssemblyExtensions

Additions:
- ThrowHelper<TException>
- CodedEnumInfo (via CodeAttribute)
- EnumHelpers contains Parse and GetValues that
 are missing from .NET Standard 2.0 and 2.1

Breaking changes:
- Removed ISetExtensions
- Moved ArraySorting to Garyon.Extensions.ArrayExtensions from
 Garyon.Extensions