ILPack
srm
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ILPack
- Writing to .il file using Reflection.Emit
-
Can you create a MetadataReference for an in-memory assembly?
AssemblyGenerator is from https://github.com/Lokad/ILPack, to solve that exact problem. I 100% agree with you, I don't understand why the save methods were removed, it would have made it much simpler. It also means that at every startup and for every modification I want to make to the assembly I have to rebuild the entire thing instead of modifying a persistent assembly.
srm
-
Writing to .il file using Reflection.Emit
Also, what do you mean by SRM? This? How would a regex engine help here?
-
Regexploit: DoS-Able Regular Expressions
The article touches on DFA based engines and notes that they may not be the fastest in all use cases. To expand on that generally the reason for this would be that the automaton you get from the regular expression has too many states, which can happen for example with very large counters or cases where the state space includes a product of multiple counters due to non-determinism between them (backtracking engines would struggle with the latter case too though).
Something an automata based engine can do (and IIRC re2 does) is that instead of constructing the full DFA, you can construct the much smaller non-deterministic finite automaton (NFA) and perform the product construction on-the-fly while caching states you've seen. However, this only helps if your input doesn't actually visit all those states. A malicious input could target your NFA engine to cause states being constantly kicked out of the cache. The slowdown here is linear though, so you're still better off than with a backtracking engine.
A project I'm working on is the Symbolic Regex Engine (SRM) [1], which uses a symbolic variant of regex derivatives. This technique allows an often-minimal DFA to be constructed lazily. This is similar to NFA based engines, but results in much fewer states thus helping with the cache issue. SRM can also handle some classes of counters natively in how the automaton gets constructed, which can turn a blow-up that would be exponential in a DFA based engine into a linear one.
[1]: https://github.com/AutomataDotNet/srm
What are some alternatives?
firely-net-sdk - The official Firely .NET SDK for HL7 FHIR
hyperscan - High-performance regular expression matching library
Hyperion - Polymorphic serialization for .NET
FileHelpers - The FileHelpers are a free and easy to use .NET library to read/write data from fixed length or delimited records in files, strings or streams
TcpClientIo - TcpClientIo Wrapper of TcpClient what help focus on WHAT you transfer over TCP, not HOW
CsvExport - Very simple CSV-export tool for C#
Ceras - Universal binary serializer for a wide variety of scenarios https://discord.gg/FGaCX4c