Skip to content

Commit

Permalink
done
Browse files Browse the repository at this point in the history
  • Loading branch information
leandromoh committed Nov 19, 2023
1 parent 6f305da commit e66b503
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 10 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ Even the focus of this library being data mapping to objects (classes, structs,

## RecordParser is a Zero Allocation Writer/Reader Parser for .NET Core

1. It supports .NET 6, 7 and .NET Standard 2.1
1. It supports .NET 6, 7, 8 and .NET Standard 2.1
2. It has minimal heap allocations because it does intense use of [Span](https://docs.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp-all-about-span-exploring-a-new-net-mainstay) type, a .NET type designed to have high-performance and reduce memory allocations [(see benchmark)](/Benchmark.md)
3. It is even more performant because the relevant code is generated using [expression trees](https://docs.microsoft.com/dotnet/csharp/expression-trees), which once compiled is fast as handwriting code
4. It supports parse for ANY type: classes, structs, records, arrays, tuples etc.
4. It supports parse for **ANY** type: classes, structs, records, arrays, tuples etc
5. It supports to map values for properties, fields, indexers, etc.
6. It does not do [boxing](https://docs.microsoft.com/dotnet/csharp/programming-guide/types/boxing-and-unboxing) for structs.
7. It is flexible: you can choose the most convenient way to configure each of your parsers: indexed or sequential configuration
Expand Down Expand Up @@ -58,6 +58,8 @@ Third Party Benchmarks

*ㅤyou can use a "string pool" to avoid creating multiple instances of strings with same content.

NOTE: MOST EXAMPLES USE TUPLES FOR SIMPLICITY. PARSER ACTUALLY WORKS FOR ANY TYPE (CLASSES, STRUCTS, RECORDS, ARRAYS, TUPLES, ETC)

## Fixed Length Reader
There are 2 flavors for mapping: indexed or sequential.

Expand Down
4 changes: 2 additions & 2 deletions RecordParser.Benchmark/RecordParser.Benchmark.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net7.0</TargetFrameworks>
<LangVersion>10</LangVersion>
<TargetFrameworks>net8.0</TargetFrameworks>
<LangVersion>latest</LangVersion>
<!--<DefineConstants>TEST_ALL</DefineConstants>-->
</PropertyGroup>

Expand Down
4 changes: 2 additions & 2 deletions RecordParser.Test/RecordParser.Test.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net7.0</TargetFrameworks>
<LangVersion>11</LangVersion>
<TargetFrameworks>net8.0</TargetFrameworks>
<LangVersion>latest</LangVersion>
<IsPackable>false</IsPackable>
</PropertyGroup>

Expand Down
8 changes: 4 additions & 4 deletions RecordParser/RecordParser.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

<PropertyGroup>
<PackageId>RecordParser</PackageId>
<TargetFrameworks>netstandard2.1;net6.0;net7.0</TargetFrameworks>
<LangVersion>10</LangVersion>
<TargetFrameworks>netstandard2.1;net6.0;net7.0;net8.0</TargetFrameworks>
<LangVersion>latest</LangVersion>
<Authors>Leandro Fernandes Vieira (leandromoh)</Authors>
<Description>
RecordParser is a expression tree based parser that helps you to write maintainable parsers with high-performance and zero allocations, thanks to Span type.
Expand All @@ -14,7 +14,7 @@
<PackageProjectUrl>https://github.com/leandromoh/RecordParser</PackageProjectUrl>
<RepositoryUrl>https://github.com/leandromoh/RecordParser</RepositoryUrl>
<PackageTags>tsv parser performance csv mapper file flat reader dotnet-core span flatfile expression-tree delimited fixedlength</PackageTags>
<Version>2.2.1</Version>
<Version>2.3.0</Version>
<PackageReleaseNotes>
https://github.com/leandromoh/RecordParser/blob/master/release_notes.md
</PackageReleaseNotes>
Expand All @@ -38,7 +38,7 @@

<PropertyGroup Condition="
( '$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Release') AND
( '$(TargetFramework)' == 'net5.0' OR '$(TargetFramework)' == 'net6.0' OR '$(TargetFramework)' == 'net7.0') AND
( '$(TargetFramework)' == 'net6.0' OR '$(TargetFramework)' == 'net7.0' OR '$(TargetFramework)' == 'net8.0') AND
( '$(Platform)' == 'AnyCPU') ">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
Expand Down

0 comments on commit e66b503

Please sign in to comment.