{"id":21483313,"url":"https://github.com/schveiguy/io","last_synced_at":"2026-01-30T22:11:26.801Z","repository":{"id":44613113,"uuid":"106859425","full_name":"schveiguy/io","owner":"schveiguy","description":"Core I/O functionality","archived":false,"fork":false,"pushed_at":"2023-10-17T18:22:08.000Z","size":253,"stargazers_count":26,"open_issues_count":12,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-12-31T05:10:35.775Z","etag":null,"topics":["dlang","dub","io","nogc","safe"],"latest_commit_sha":null,"homepage":null,"language":"D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schveiguy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2017-10-13T18:25:58.000Z","updated_at":"2025-07-06T09:15:15.000Z","dependencies_parsed_at":"2025-06-10T14:04:03.163Z","dependency_job_id":"51130e28-e7bd-42b7-b4d3-899eda383340","html_url":"https://github.com/schveiguy/io","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/schveiguy/io","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schveiguy%2Fio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schveiguy%2Fio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schveiguy%2Fio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schveiguy%2Fio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schveiguy","download_url":"https://codeload.github.com/schveiguy/io/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schveiguy%2Fio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28920744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T20:25:28.696Z","status":"ssl_error","status_checked_at":"2026-01-30T20:25:13.426Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["dlang","dub","io","nogc","safe"],"created_at":"2024-11-23T12:46:13.404Z","updated_at":"2026-01-30T22:11:26.788Z","avatar_url":"https://github.com/schveiguy.png","language":"D","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"logo.svg\" width=\"200\" alt=\"Logo\"\u003e\n\n## [![Build Status](https://travis-ci.org/MartinNowak/io.svg?branch=master)](https://travis-ci.org/MartinNowak/io) [![Build Status](https://ci.appveyor.com/api/projects/status/affs03kt2k1y48o3/branch/master?svg=true)](https://ci.appveyor.com/project/MartinNowak/io) [![codecov](https://codecov.io/gh/MartinNowak/io/branch/master/graph/badge.svg)](https://codecov.io/gh/MartinNowak/io)\n\n## Documentation [std.io](https://martinnowak.github.io/io/std/io)\n\nIOs are thin, OS-independent abstractions over I/O devices.\n```d\nsize_t write(const scope ubyte[] buffer);\nsize_t read(scope ubyte[] buffer);\n```\n\nIOs support [scatter/gather read/write](https://en.wikipedia.org/wiki/Vectored_I/O).\n```d\nsize_t write(const scope ubyte[][] buffers...);\nsize_t read(scope ubyte[][] buffers...);\n```\n\nIOs are `@safe` and `@nogc`.\n```d\nvoid read() @safe @nogc\n{\n    auto f = File(chainPath(\"tmp\", \"file.txt\"));\n    ubyte[128] buf;\n    f.read(buf[]);\n    // ...\n}\n```\n\nIOs use exceptions for error handling.\n```d\ntry\n    File(\"\");\ncatch (IOException e)\n{}\n```\n\nIOs use unique ownership and are [moveable](https://dlang.org/phobos/std_algorithm_mutation.html#.move) but not copyable (Use [refCounted](https://dlang.org/phobos/std_typecons.html#refCounted) for shared ownership).\n```d\nio2 = io.move;\nassert(io2.isOpen);\nassert(!io.isOpen);\n\nauto rc = refCounted(io2.move);\nauto rc2 = rc;\nassert(rc.isOpen);\nassert(rc2.isOpen);\n```\n\nIOs can be converted to polymorphic interfaces if necessary.\n```d\nInput input = ioObject(io.move);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschveiguy%2Fio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschveiguy%2Fio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschveiguy%2Fio/lists"}