All Projects → danielcrenna → TypeKitchen

danielcrenna / TypeKitchen

Licence: Apache-2.0 license
TypeKitchen is a set of small libraries for fast metaprogramming in .NET Standard.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to TypeKitchen

parquet-dotnet
🐬 Apache Parquet for modern .Net
Stars: ✭ 199 (+1321.43%)
Mutual labels:  dotnet-standard
XDP-Firewall
An XDP firewall that is capable of filtering specific packets based off of filtering rules specified in a config file. IPv6 is supported!
Stars: ✭ 129 (+821.43%)
Mutual labels:  fast
pnpcore
The PnP Core SDK is a modern .NET SDK designed to work for Microsoft 365. It provides a unified object model for working with SharePoint Online and Teams which is agnostic to the underlying API's being called
Stars: ✭ 169 (+1107.14%)
Mutual labels:  dotnet-standard
react-redux-fork
React Redux, but just up to 98x faster. (Forked from 6.0) Make React Redux great again!
Stars: ✭ 62 (+342.86%)
Mutual labels:  fast
colorify
Colorify - C# .Net Console Library with Text Format: colors, alignment and lot more [ Win+Mac+Linux ]
Stars: ✭ 49 (+250%)
Mutual labels:  dotnet-standard
MayMeow.Cryptography
🔐 Cryptography library for .NET
Stars: ✭ 12 (-14.29%)
Mutual labels:  dotnet-standard
greptile
Fast grep implementation in python, with recursive search and replace
Stars: ✭ 17 (+21.43%)
Mutual labels:  fast
ormsgpack
Msgpack serialization/deserialization library for Python, written in Rust using PyO3 and rust-msgpack. Reboot of orjson. msgpack.org[Python]
Stars: ✭ 88 (+528.57%)
Mutual labels:  fast
natural
Fastest Framework for NodeJS. Written in pure ES6+
Stars: ✭ 30 (+114.29%)
Mutual labels:  fast
framework
Cygnite PHP Framework- A Modern Toolkit For Web Developers
Stars: ✭ 43 (+207.14%)
Mutual labels:  fast
pipedrive-dotnet
Pipedrive.net is an async .NET Standard client for pipedrive.com
Stars: ✭ 31 (+121.43%)
Mutual labels:  dotnet-standard
hash-wasm
Lightning fast hash functions using hand-tuned WebAssembly binaries
Stars: ✭ 382 (+2628.57%)
Mutual labels:  fast
gologger
A concurrent, fast queue/service worker based filesystem logging system perfect for servers with concurrent connections
Stars: ✭ 16 (+14.29%)
Mutual labels:  fast
DiffEqPhysics.jl
A library for building differential equations arising from physical problems for physics-informed and scientific machine learning (SciML)
Stars: ✭ 46 (+228.57%)
Mutual labels:  fast
better-serializer
General serializer for PHP. An alternative to JmsSerializer.
Stars: ✭ 27 (+92.86%)
Mutual labels:  fast
hyperlink
Very fast link checker for CI.
Stars: ✭ 85 (+507.14%)
Mutual labels:  fast
wotpp
A small macro language for producing and manipulating strings.
Stars: ✭ 75 (+435.71%)
Mutual labels:  fast
Waveshare.EPaperDisplay
.Net Core Library to show images on Waveshare E-Paper Displays
Stars: ✭ 17 (+21.43%)
Mutual labels:  dotnet-standard
Warframe.NET
Under rewrite: Collection of Warframe libraries for C# developers.
Stars: ✭ 18 (+28.57%)
Mutual labels:  dotnet-standard
FastHttpClient
封装OkHttp3,对外提供了POST请求、GET请求、上传文件、下载文件、https请求、cookie管理等功能
Stars: ✭ 60 (+328.57%)
Mutual labels:  fast

TypeKitchen

TypeKitchen is a small library for fast meta-programming in .NET.

TypeKitchen was built on the premise that there are only so many actions that are useful to take with types at runtime. However, rather than standardize on a single library that performs all of these actions well, there are myriad libraries available on NuGet, each taking a different approach with varying levels of performance, in terms of quality, speed, and memory use.

xkcd

TypeKitchen replaces these libraries with a concise API to perform the following meta-programming tasks:

Common Tasks

  • Field and Property Access: getting and setting data members by name, including private members and anonymous types
  • Method Call Invocation: calling methods on runtime types, when you know the arguments at runtime, and even when you don't
  • Object Activation: creating new instances of types, typically because Activator.CreateInstance is too slow
  • Object Pooling: when you want to avoid over-allocating memory that will be garbage collected later
  • Type Resolution: when you want to describe how object instances should be created, and manage their lifetime, in a deferred fashion (i.e. inversion of control / dependency injection)
  • Wire Serialization: when you want a fast and non-allocating wire format for serializing/deserializing runtime types

Less Common Tasks

  • Templating: when you want to create string templates based on data in C# objects, and may want to limit what code can be executed in those templates to a strict DSL or set of types
  • Snippets: when you want to write adhoc C# code, and have it compile and execute at runtime without requiring application downtime or reflection overhead
  • Weaving: when you want to inject custom code before or after methods, even if they live outside your own code
  • Duck Casting: when you have a type or method, and you want to call it as if it were an implementation of a interface, when it isn't

Rare / Advanced Tasks

  • Composition: when you want to build up a type at runtime to implement various members declared in other types, or provided inline
  • Flyweight Factory: when you want to represent one or more views of a piece of data, but do not want to materialize those views
  • MSIL Helpers: when you want to see the IL of a compiled Expression or DynamicMethod, or want to code-generate calls to ILGenerator that would produce a given method body
  • Coverage: when you need to walk compiled bytecode to determine paths through other code, such as when building code coverage or visualization tools
Logo

Logo is from Font Awesome, and is under a CC BY 4.0 License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].