{"id":15366597,"url":"https://github.com/turbomack/unix-recursive","last_synced_at":"2026-01-20T15:32:18.025Z","repository":{"id":54248364,"uuid":"337888220","full_name":"turboMaCk/unix-recursive","owner":"turboMaCk","description":"Fast and flexible primitives for recursive file system IO on Posix systems","archived":false,"fork":false,"pushed_at":"2021-03-01T17:48:24.000Z","size":237,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-15T00:05:42.061Z","etag":null,"topics":["filesystem","haskell","unix"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/turboMaCk.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-11T00:06:34.000Z","updated_at":"2021-12-03T10:19:52.000Z","dependencies_parsed_at":"2022-08-13T10:00:37.866Z","dependency_job_id":null,"html_url":"https://github.com/turboMaCk/unix-recursive","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turboMaCk%2Funix-recursive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turboMaCk%2Funix-recursive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turboMaCk%2Funix-recursive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turboMaCk%2Funix-recursive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/turboMaCk","download_url":"https://codeload.github.com/turboMaCk/unix-recursive/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247495503,"owners_count":20948062,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["filesystem","haskell","unix"],"created_at":"2024-10-01T13:19:16.159Z","updated_at":"2026-01-20T15:32:18.018Z","avatar_url":"https://github.com/turboMaCk.png","language":"Haskell","readme":"# Unix Recursive\n\n![build](https://github.com/turboMaCk/unix-recursive/workflows/Test/badge.svg?branch=main\u0026event=push)\n\nBlazingly fast functions for recursive file system operations.\nUtilizing lazy IO for constant space \u0026 computation efficiant bindigns to Posix [`dirstream`](https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/dirstream.h;h=8303f07fab6f6efaa39e51411ef924e712d995e0;hb=fa39685d5c7df2502213418bead44e9543a9b9ec) api.\n\n## Comparision with other libraries:\n\nTests were performed on relatively modern consumer grade HW with relatively modern consumer grade M.2 SSD drive.\nAll done on binaries compiled with optimization that are listing the same directory\nwith 1,705,184 items.\n\n### [this lib] Unix Recursive `RawFilePath`/ByteString\n\n![](docs/unix-recursive-bytestring.png)\n\n- [source](bin/unix-recursive-bytestring.hs)\n\n### [this lib] Unix Recursive `FilePath`/String\n\n![](docs/unix-recursive-string.png)\n\n- [source](bin/unix-recursive-string.hs)\n\n### [alternative] Dir Traverse (`FilePath`/String is the only option)\n\n![](docs/dir-traverse.png)\n\n- [source](bin/dir-traverse.hs)\n- [lib](https://hackage.haskell.org/package/dir-traverse)\n\n### [alternative] Dirstream (`Filesystem.Path` is the only option)\n\n![](docs/dirstream.png)\n\n- [source](bin/dirstream.hs)\n- [lib](https://hackage.haskell.org/package/dirstream)\n\n## Testing performance\n\nCabal flag `bin` is being used for building the example binaries that can be used for measurement.\n\n```\nmake bin\n```\n\nor to build and run one of the binaries:\n\n```\n$ stack build --flag unix-recursive:bin --exec \"unix-recursive-bytestring-bin ${path-to-directory}\"\n```\n\n## Hacking\n\nThis project uses the \"Perfect Haskell Preprocessor\" (PHP) for generating haskell source from meta module hs.\nSee [`gen`](gen) directory and [`MakeFile`](MakeFile) before you start hackking on stuff.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturbomack%2Funix-recursive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fturbomack%2Funix-recursive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturbomack%2Funix-recursive/lists"}