{"id":51318690,"url":"https://github.com/netdata/systemd-journal-sdk","last_synced_at":"2026-07-01T10:31:46.543Z","repository":{"id":360072518,"uuid":"1248587834","full_name":"netdata/systemd-journal-sdk","owner":"netdata","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-24T20:08:19.000Z","size":8745,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-24T22:05:35.193Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netdata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-24T20:50:41.000Z","updated_at":"2026-06-24T20:08:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/netdata/systemd-journal-sdk","commit_stats":null,"previous_names":["netdata/systemd-journal-sdk"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/netdata/systemd-journal-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdata%2Fsystemd-journal-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdata%2Fsystemd-journal-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdata%2Fsystemd-journal-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdata%2Fsystemd-journal-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netdata","download_url":"https://codeload.github.com/netdata/systemd-journal-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdata%2Fsystemd-journal-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35003452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-01T10:31:45.792Z","updated_at":"2026-07-01T10:31:46.538Z","avatar_url":"https://github.com/netdata.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# systemd Journal SDK\n\nPure systemd journal file readers, writers, and file-backed `journalctl`\nimplementations for Rust and Go.\n\n## Purpose\n\nThis project provides SDKs that can read and write systemd journal files without\nlinking to libsystemd or other external journal libraries. Files written by one\nlanguage are expected to be readable by the other SDK and by compatible stock\nsystemd tools when the selected field policy and file options target systemd\ncompatibility.\n\n## Performance Contract\n\nCompatibility is necessary but not sufficient. The SDK must also exercise the\njournal format's native performance capabilities.\n\nReader and query APIs must use journal-native structures whenever they answer\nthe request:\n\n- FIELD and DATA hash tables;\n- FIELD hash traversal for field-name enumeration;\n- FIELD DATA chains for unique values;\n- DATA entry arrays and ENTRY arrays for indexed row selection;\n- reusable DATA object identities to avoid repeated `FIELD=value` parsing;\n- mmap-backed slices where supported and safe;\n- lazy decompression and value materialization.\n\nAn implementation that scans all rows, repeatedly parses reusable DATA objects,\ndecompresses irrelevant DATA, or allocates in a hot path when the format exposes\na cheaper path is a regression unless a SOW records measured evidence and an\nexplicit accepted reason.\n\n## Compatibility Scope\n\n- Core readers and writers operate on explicit caller-provided paths, bytes,\n  timestamps, IDs, and options.\n- Writers require explicit machine ID, boot ID, and generated-entry monotonic\n  timestamps; optional host helpers may produce local-host values, but the\n  writer does not choose them implicitly.\n- Writers use journald's `0640` file permission default for newly-created\n  journal files and expose explicit per-language overrides for consumers that\n  need a different mode. POSIX creation modes remain subject to the caller's\n  process umask, matching normal systemd/open semantics.\n- Core runtime paths do not discover host identity, execute external programs,\n  or acquire writer locks implicitly.\n- Systemd/journald compatibility policy, optional host identity discovery, and\n  optional cooperating-writer locks are separate layers.\n- Daemon-only `journalctl` operations are out of scope.\n\n## Languages\n\n- `rust/` - Rust SDK and journalctl implementation.\n- `go/` - Go SDK and journalctl implementation.\n- `experiments/` - retired non-product experiments, currently including the old\n  Python and Node.js implementations.\n\nShared tests, interoperability matrices, corpus evaluation tooling, and\nbenchmarks live under `tests/`.\n\n## Documentation\n\nConsumer documentation lives under `docs/` and is published to the repository\nGitHub wiki. Start with [docs/Home.md](docs/Home.md) for API selection,\nhot-path guidance, production profiles, and wiki publishing details.\n\nThe `documentation/` directory contains project/internal operational notes.\nIt is not the consumer wiki source.\n\n## Rust Package\n\nThe Rust SDK is published as the crates.io package `systemd-journal-sdk`.\nConsumers that want the existing `journal::...` crate path should use a Cargo\ndependency alias:\n\n```toml\n[dependencies]\njournal = { package = \"systemd-journal-sdk\", version = \"0.7.6\" }\n```\n\nAdvanced Rust consumers that need lower-level building blocks can also depend\non the project-prefixed internal packages:\n\n- `systemd-journal-sdk-common`\n- `systemd-journal-sdk-core`\n- `systemd-journal-sdk-registry`\n- `systemd-journal-sdk-log-writer`\n- `systemd-journal-sdk-host` (`journal_host`), the optional local-host\n  identity and monotonic helper crate\n- `systemd-journal-sdk-index`\n- `systemd-journal-sdk-engine`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetdata%2Fsystemd-journal-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetdata%2Fsystemd-journal-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetdata%2Fsystemd-journal-sdk/lists"}