Sep 0.1.0-preview.5

This is a prerelease version of Sep.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Sep --version 0.1.0-preview.5
NuGet\Install-Package Sep -Version 0.1.0-preview.5
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="Sep" Version="0.1.0-preview.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sep --version 0.1.0-preview.5
#r "nuget: Sep, 0.1.0-preview.5"
#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 Sep as a Cake Addin
#addin nuget:?package=Sep&version=0.1.0-preview.5&prerelease

// Install Sep as a Cake Tool
#tool nuget:?package=Sep&version=0.1.0-preview.5&prerelease

Sep - Possibly the World's Fastest .NET CSV Parser

Build Status NuGet

<img align="right" width="128px" height="128px" src="Icon.png">

Modern, minimal, blazing fast, zero allocation¹, reading and writing of separated values (csv, tsv etc.). Cross-platform, trimmable and AOT/NativeAOT compatible.

.NET 7+ only as using Generic Math, ref struct and other .NET 7+/C# 11 features.

¹ After creation and first few rows both for reading/parsing and writing/formatting.

var text = """
           A;B;C;D;E;F
           Sep;🚀;1;1.2;0.1;0.5
           CSV;✅;2;2.2;0.2;1.5
           """;

using var reader = Sep.Reader().FromText(text);  // Infers separator 'Sep' from header
using var writer = reader.Sep.Writer().ToText(); // Writer defined from reader 'Sep'
                                                 // Use .FromFile(...)/ToFile(...) for files
var idx = reader.Header.IndexOf("B");
var nms = new[] { "E", "F" };

foreach (var readRow in reader)           // Read one row at a time
{
    var a = readRow["A"].Span;            // Column as ReadOnlySpan<char>
    var b = readRow[idx].ToString();      // Column to string (allocates new string per call)
    var c = readRow["C"].Parse<int>();    // Parse any T : ISpanParsable<T>
    var d = readRow["D"].Parse<float>();  // Parse float/double fast via csFastFloat
    var s = readRow[nms].Parse<double>(); // Parse multiple columns as Span<T>
                                          // - Sep handles array allocation and reuse
    foreach (ref var v in s) { v *= 10; }

    using var writeRow = writer.NewRow(); // Start new row. Row written on Dispose.
    writeRow["A"].Set(a);                 // Set by ReadOnlySpan<char>
    writeRow["B"].Set(b);                 // Set by string
    writeRow["C"].Set($"{c * 2}");        // Set via InterpolatedStringHandler, no allocs
    writeRow["D"].Format(d / 2);          // Format any T : ISpanFormattable
    writeRow[nms].Format(s);              // Format multiple columns directly
}

var expected = """
               A;B;C;D;E;F
               Sep;🚀;2;0.6;1;5
               CSV;✅;4;1.1;2;15
               """;
Assert.AreEqual(expected, writer.ToString());

// Above example code is for demonstration purposes only.
// Short names and repeated constants are only for demonstration.
Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on Sep:

Repository Stars
DataDog/dd-trace-dotnet
.NET Client Library for Datadog APM
JasonBock/Rocks
A mocking library based on the Compiler APIs (Roslyn + Mocks)
Version Downloads Last updated
0.5.0 502 4/15/2024
0.4.6 1,252 4/4/2024
0.4.5 703 3/28/2024
0.4.4 738 3/20/2024
0.4.3 748 3/10/2024
0.4.2 172 3/8/2024
0.4.1 74 3/8/2024
0.4.0 9,090 1/1/2024
0.4.0-preview.1 94 12/23/2023
0.3.0 823,119 11/18/2023
0.2.7 3,086 10/12/2023
0.2.6 452 9/27/2023
0.2.5 252 9/14/2023
0.2.4 231 9/8/2023
0.2.3 257 9/5/2023
0.2.2 475,311 8/10/2023
0.2.1 148 8/10/2023
0.2.0 931 8/7/2023
0.2.0-preview.3 101 7/29/2023
0.1.0 635 5/30/2023
0.1.0-rc.1 86 5/26/2023
0.1.0-preview.8 75 5/26/2023
0.1.0-preview.7 93 5/8/2023
0.1.0-preview.6 90 4/24/2023
0.1.0-preview.5 97 3/19/2023
0.1.0-preview.4 104 12/31/2022
0.1.0-preview.3 106 12/4/2022
0.1.0-preview.2 130 3/21/2022
0.1.0-preview.1 134 1/28/2022