{"id":30352455,"url":"https://github.com/fluxnull/accsv","last_synced_at":"2026-02-08T21:31:56.511Z","repository":{"id":310175032,"uuid":"1038902214","full_name":"fluxnull/accsv","owner":"fluxnull","description":"A high-performance lexer/parser for the ACCSV data format.","archived":false,"fork":false,"pushed_at":"2025-08-16T09:10:36.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-16T09:27:01.415Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluxnull.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}},"created_at":"2025-08-16T03:41:27.000Z","updated_at":"2025-08-16T07:46:59.000Z","dependencies_parsed_at":"2025-08-16T09:27:02.970Z","dependency_job_id":"1c93a173-8861-4431-91a8-f876f39b70c0","html_url":"https://github.com/fluxnull/accsv","commit_stats":null,"previous_names":["fluxnull/accsv"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/fluxnull/accsv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluxnull%2Faccsv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluxnull%2Faccsv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluxnull%2Faccsv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluxnull%2Faccsv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluxnull","download_url":"https://codeload.github.com/fluxnull/accsv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluxnull%2Faccsv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29244653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T21:00:43.743Z","status":"ssl_error","status_checked_at":"2026-02-08T20:59:20.374Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2025-08-19T00:27:59.803Z","updated_at":"2026-02-08T21:31:56.492Z","avatar_url":"https://github.com/fluxnull.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ACCSV: ASCII Control Character Separated Values\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Version](https://img.shields.io/badge/Version-4.0.0-blue.svg)](https://github.com/yourusername/accsv/releases/tag/v4.0.0)\n[![Build Status](https://img.shields.io/badge/Build-Passing-green.svg)](https://github.com/yourusername/accsv/actions)\n\nA rediscovery of ASCII control characters for robust, collision-proof tabular data storage. Fixes CSV's delimiter hell with `US` (0x1F) for fields and `RS` (0x1E) for records. Simple, fast, no escaping needed.\n\n## Manifesto: Looking Back to Move Forward\n\nFor 50+ years, CSV/TSV have sucked due to delimiter collisions leading to quoting/escaping nightmares. ASCII's control chars like US/RS/GS were built for this—non-printable, zero collision risk. We forgot 'em; ACCSV brings 'em back for speed and simplicity.\n\nThis ain't new invention; it's overlooked genius from 1963. Challenge: What other simple fixes have we ignored?\n\n## File Specifications\n\n### ACCSV Data File (`.accsv`)\n\nPure record stream.\n\n| Property | Specification |\n|----------|--------------|\n| **Field Separator** | `US` (0x1F) |\n| **Record Terminator** | `RS` (0x1E) |\n| **Header Flag** | Optional `SUB` (0x1A) at byte 0 indicates first record is header. |\n| **Cosmetic Newline** | Optional LF/CRLF after RS (ignored by parsers). |\n| **Encoding** | Agnostic; app handles byte interpretation. |\n\n### Manifest/Index File (`.accsv.midx`)\n\nHybrid: Readable metadata + binary index.\n\n- **[Meta]** section: Key-value pairs (e.g., `Path = file.accsv`, `Algorithm = SHA256`, `Digest = hash`).\n- **[IDX]** section: Binary follows.\n\nBinary structure (little-endian):\n\n| Part | Size | Type | Description |\n|------|------|------|-------------|\n| Magic | 8 | char[8] | `ACSVIDX1` |\n| Version | 2 | uint16_t | e.g., 0x0100 |\n| Reserved | 6 | uint8_t[6] | Zeros |\n| Record Count | 8 | uint64_t | Total records |\n| Offsets | N*8 | uint64_t[] | Byte offsets per record |\n\n## Command-Line Tool: `accsv`\n\nHigh-perf CLI for parsing/indexing. Subcommands like git.\n\nUsage: `accsv \u003ccommand\u003e [options]`\n\nCommands:\n- `index \u003cfile.accsv\u003e`: Create `.accsv.midx`.\n- `count [file.accsv]`: Record count (fast with index).\n- `view [file.accsv]`: Human-readable output (tabs/newlines).\n- `slice \u003cfile.accsv\u003e \u003cstart\u003e [end]`: Extract range (-ah adds header).\n\nFull help: `accsv --help`\n\n## Core C Library API (`accsv.h`)\n\nPublic interface:\n\n```c\n#ifndef ACCSV_H\n#define ACCSV_H\n\n#include \u003cstdio.h\u003e\n#include \u003cstdint.h\u003e\n#include \u003cstddef.h\u003e\n\ntypedef struct { const char* start; size_t length; } AccsvFieldView;\ntypedef struct { AccsvFieldView* fields; size_t field_count; } AccsvRecordView;\ntypedef struct AccsvParser AccsvParser;\ntypedef struct AccsvIndex AccsvIndex;\n\nAccsvParser* accsv_parser_new(FILE* stream);\nconst AccsvRecordView* accsv_parser_next_record(AccsvParser* parser);\nvoid accsv_parser_free(AccsvParser* parser);\nint accsv_parser_has_header(const AccsvParser* parser);\n\nAccsvIndex* accsv_index_load(const char* midx_path);\nvoid accsv_index_free(AccsvIndex* index);\nuint64_t accsv_index_get_record_count(const AccsvIndex* index);\nint accsv_parser_seek(AccsvParser* parser, const AccsvIndex* index, uint64_t record_number);\n\nint accsv_parser_in_error_state(const AccsvParser* parser);\nconst char* accsv_parser_get_error(const AccsvParser* parser);\n\n#endif\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluxnull%2Faccsv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluxnull%2Faccsv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluxnull%2Faccsv/lists"}