{"id":13438304,"url":"https://github.com/luaposix/luaposix","last_synced_at":"2025-04-13T04:00:03.816Z","repository":{"id":41168885,"uuid":"1523340","full_name":"luaposix/luaposix","owner":"luaposix","description":"Lua bindings for POSIX APIs","archived":false,"fork":false,"pushed_at":"2025-02-16T20:33:37.000Z","size":4272,"stargazers_count":547,"open_issues_count":27,"forks_count":130,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-13T03:59:51.467Z","etag":null,"topics":["lua","lua-binding","luajit","luaposix","luarocks","posix","posix-apis"],"latest_commit_sha":null,"homepage":"luaposix.github.io/luaposix","language":"C","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/luaposix.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.old","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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-03-24T23:02:16.000Z","updated_at":"2025-03-31T12:04:39.000Z","dependencies_parsed_at":"2024-06-18T13:46:26.805Z","dependency_job_id":"f5debefa-bb9d-4711-93f4-675548149f79","html_url":"https://github.com/luaposix/luaposix","commit_stats":{"total_commits":1022,"total_committers":66,"mean_commits":"15.484848484848484","dds":0.4452054794520548,"last_synced_commit":"7fa72b4fb1cd4a388e40ea32e21d1080ca954ca9"},"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luaposix%2Fluaposix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luaposix%2Fluaposix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luaposix%2Fluaposix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luaposix%2Fluaposix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luaposix","download_url":"https://codeload.github.com/luaposix/luaposix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248661706,"owners_count":21141450,"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":["lua","lua-binding","luajit","luaposix","luarocks","posix","posix-apis"],"created_at":"2024-07-31T03:01:04.407Z","updated_at":"2025-04-13T04:00:03.773Z","avatar_url":"https://github.com/luaposix.png","language":"C","funding_links":[],"categories":["C","资源","Resources"],"sub_categories":["File system and OS"],"readme":"luaposix\n========\n\nBy the [luaposix project][github]\n\n[![License](https://img.shields.io/:license-mit-blue.svg)](https://mit-license.org)\n[![workflow status](https://github.com/luaposix/luaposix/actions/workflows/spec.yml/badge.svg?branch=master)](https://github.com/luaposix/luaposix/actions)\n[![codecov.io](https://codecov.io/github/luaposix/luaposix/coverage.svg?branch=master)](https://codecov.io/github/luaposix/luaposix?branch=master)\n\nThis is a POSIX binding for [LuaJIT][], [Lua][] 5.1, 5.2, 5.3 and 5.4; like\nmost libraries it simply binds to C APIs on the underlying system, so it\nwon't work on non-POSIX systems. However, it does try to detect the\nlevel of POSIX conformance of the underlying system and bind only\navailable APIs.\n\nFor a while, luaposix contained support for curses functionality too,\nbut now that has its own [lcurses][] repository again, where it is being\nmaintained separately.\n\nluaposix is released under the [MIT license][mit] (the same license as\nLua itsef).  There is no warranty.\n\n[github]: https://github.com/luaposix/luaposix \"luaposix repository\"\n[lcurses]: https://github.com/lcurses/lcurses \"lcurses repository\"\n[lua]: https://www.lua.org/ \"The Lua Project\"\n[luajit]: https://luajit.org/ \"The LuaJIT Project\"\n[mit]: https://mit-license.org \"MIT license\"\n\n\nInstallation\n------------\n\nThe simplest and best way to install luaposix is with [LuaRocks][]. To\ninstall the latest release (recommended):\n\n```bash\n    luarocks install luaposix\n```\n\nTo install current git master (for testing, before submitting a bug\nreport for example):\n\n```bash\n    luarocks install http://raw.github.com/luaposix/luaposix/master/luaposix-git-1.rockspec\n```\n\nThe best way to install without [LuaRocks][], is to call the bundled\n`build-aux/luke` command, as shown in the `build` section of the\nincluded rockspec file, from a freshly cloned working copy.\n\nNote that you'll be responsible for providing dependencies if you choose\nnot to let [LuaRocks][] handle them for you, though you can find a list\nof minimal dependencies in the rockspec file.\n\nIf you are repackaging or redistributing [luaposix][github], it is better\nto start from a [release tarball][releases], because the [master][github]\ndevelopment branch is branch is unstable, and sometimes breaks subtly, or\ndoes not build at all, or provides experimental new APIs that end up\nbeing removed prior to the next official release.\n\nNote that there are full logs of complete builds for every commit in\n[Github Actions][actions], which you can compare with your progress if you\nget stuck.\n\n[luarocks]: http://www.luarocks.org \"Lua package manager\"\n[releases]: http://github.com/luaposix/luaposix/releases\n[actions]: https://github.com/luaposix/luaposix/actions\n\n\nUse\n---\n\nThe library is split into submodules according to the POSIX header file\nAPI declarations, which you can require individually:\n\n```lua\n    local unistd = require 'posix.unistd'\n```\n\nThe authoritative online POSIX reference is published at [SUSv3][].\n\n[susv3]: http://www.opengroup.org/onlinepubs/007904875/toc.htm\n\n\nDocumentation\n-------------\n\nThe latest release of this library is [documented in LDoc][github.io].\nPre-built HTML files are included in the release, and contain links to\nthe appropriate [SUSv3][] manual pages.\n\n[github.io]: http://luaposix.github.io/luaposix\n\n\nExample code\n------------\n\nSee the example program `tree.lua`, along with the many small\nexamples in the generated documentation and BDD `specs/*_spec.yaml`.\n\nFor a complete application, see the [GNU Zile][].\n\n[GNU Zile]: http://git.savannah.gnu.org/cgit/zile.git/log/?h=lua \"A cut-down Emacs clone\"\n\n\nBugs reports and code contributions\n-----------------------------------\n\nThese libraries are maintained by their users.\n\nPlease make bug reports and suggestions as [GitHub issues][issues].\nPull requests are especially appreciated.\n\nBut first, please check that your issue has not already been reported by\nsomeone else, and that it is not already fixed on [master][github] in\npreparation for the next release (See Installation section above for how\nto temporarily install master with [LuaRocks][]).\n\nThere is no strict coding style, but please bear in mind the following\npoints when proposing changes:\n\n0. Follow existing code. There are a lot of useful patterns and\n   avoided traps there.\n\n1. 8-character indentation using TABs in C sources; 3-character\n   indentation using SPACEs in Lua sources.\n\n2. Simple strings are easiest to type using single-quote delimiters\n   saving double-quotes for where a string contains apostrophes.\n\n3. Save horizontal space by only using SPACEs where the parser requires\n   them.\n\n4. Use vertical space to separate out compound statements to help the\n   coverage reports discover untested lines.\n\n5. Prefer explicit string function calls over object methods, to mitigate\n   issues with monkey-patching in caller environment. \n\n6. No non-POSIX APIs; no platform-specific code. When wrapping APIs\n   introduced in POSIX 2001 or later, add an appropriate #if. If your\n   platform isn't quite POSIX, you may find a gnulib module to bridge\n   the gap. If absolutely necessary, use luke feature tests.\n\n7. Thin wrappers: although some existing code contradicts this, wrap\n   POSIX APIs in the simplest way possible. If necessary, more\n   convenient wrappers can be added in Lua (posix.lua).\n\n[issues]: http://github.com/luaposix/luaposix/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluaposix%2Fluaposix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluaposix%2Fluaposix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluaposix%2Fluaposix/lists"}