gedcomkit 0.1.11

A byte-preserving GEDCOM document model: decoding, parsing, readings, version conversion, plausibility checks, and the GEDZIP container, for GEDCOM 5.5 through 7.x.
Documentation
# gedcomkit: the standalone GEDCOM interop library. It deliberately contains
# no application-specific extension vocabulary or interface state. The name
# was checked on crates.io, npm, and PyPI before the initial release.
[package]
name = "gedcomkit"
version = "0.1.11"
description = "A byte-preserving GEDCOM document model: decoding, parsing, readings, version conversion, plausibility checks, and the GEDZIP container, for GEDCOM 5.5 through 7.x."
edition = "2024"
# The true minimum, not the workspace's toolchain: a parser library is a leaf
# dependency people build on older compilers. Raised only when a change
# actually needs a newer feature (currently: edition 2024, `slice::as_chunks`).
rust-version = "1.88"
# The crate carries its own license so it can leave the (unlicensed)
# application workspace. AGPL-3.0-or-later, the user's call (2026-09-07):
# the LICENSE text sits beside this file, and the sole copyright holder can
# always grant other terms separately.
license = "AGPL-3.0-or-later"
repository = "https://gitlab.com/timrs2998/gedcomkit"
keywords = ["gedcom", "genealogy", "parser", "family-tree", "gedzip"]
categories = ["parser-implementations", "encoding"]
readme = "README.md"
include = [
    "/src/**",
    "/tests/**",
    "/fixtures/vendored/**",
    "/Cargo.toml",
    "/Cargo.lock",
    "/README.md",
    "/LICENSE",
    "/CHANGELOG.md",
]

[package.metadata.docs.rs]
all-features = true

[features]
# The GEDZIP container. On by default because the format is part of GEDCOM 7;
# turn it off (`default-features = false`) and the parser core has no
# dependencies at all.
default = ["gedzip"]
gedzip = ["dep:flate2"]
# Serialization of the read-only views, for callers that send them somewhere —
# a webview, a JSON API. Off by default: a parser needs no serializer.
serde = ["dep:serde"]
# TypeScript definitions of those same serialized shapes (`ts_rs::TS` on every
# type `serde` serializes), for a caller that generates its frontend's types
# from them rather than writing them by hand. Off by default, and meant for a
# build step or a test rather than a shipped binary.
ts = ["serde", "dep:ts-rs"]
# Generates a deterministic synthetic tree of any size, for performance and
# stress fixtures. Off by default: nothing an application ships needs it.
fixture = []

[dependencies]
# `rust_backend` keeps deflate in pure Rust, so no system zlib is needed.
flate2 = { version = "1.1.2", default-features = false, features = ["rust_backend"], optional = true }
serde = { version = "1", features = ["derive"], optional = true }
# MIT; its default `serde-compat` reads the serde attributes, so the
# definitions follow the JSON the `serde` feature writes.
ts-rs = { version = "12.0.1", optional = true }

[lints.rust]
unsafe_code = "forbid"

[lints.clippy]
pedantic = "warn"
nursery = "warn"