원문 캡처 · github.com
원문 캡처 · github.com

NanoYaml은 YAML 1.2.2의 엄격한 하위 집합을 따르는 설정 형식과 C#용 직렬화·역직렬화 라이브러리다. 제작자는 설정 파일부터 원격 데이터 전송과 저장까지 빠르고 가벼운 형식이 필요한 경우를 대상으로 하며, NanoYaml 파일은 YAML 1.1과 1.2.2에서도 유효하다고 설명한다.

라이브러리는 .NET 8 이상을 대상으로 하는 단일 파일 NanoYaml.cs로도 사용할 수 있다. 제작자가 공개한 벤치마크에서는 SharpYaml보다 처리량이 최대 10배를 넘을 수 있다고 주장한다. 이는 프로젝트가 제시한 비교 결과다.

패키지는 다음 명령으로 설치한다.

bash
dotnet add package NanoYaml

레코드, 클래스, 구조체와 속성 또는 필드를 직렬화하거나 역직렬화할 수 있다. 문자열뿐 아니라 span, reader, writer, 스트림도 지원한다. 스트림과 바이트 span은 BOM 없는 UTF-8을 사용한다.

NanoYaml에는 Strict와 Compatible 프로필이 있다. 직렬화기는 항상 Strict 형식으로 출력한다. 역직렬화기는 문서 앞부분에 %TAG ! nanoyaml:0.1.0:이 있으면 Strict 모드로, 없으면 Compatible 모드로 읽는다. DeserializerParams.ParsingMode로 자동 판별을 덮어쓸 수도 있다.

엄격한 하위 집합이므로 모든 YAML 문서를 바로 역직렬화할 수 있는 것은 아니다. NanoYaml이 비엄격 문서를 거부하면 다른 YAML 파서로 먼저 읽은 뒤 NanoYaml으로 직렬화하라고 안내한다.