{"id":22360238,"url":"https://github.com/yitzchak/trivial-package-locks","last_synced_at":"2026-02-07T16:02:02.324Z","repository":{"id":63822011,"uuid":"439678267","full_name":"yitzchak/trivial-package-locks","owner":"yitzchak","description":"A standard interface to the various package lock implementations of Common Lisp.","archived":false,"fork":false,"pushed_at":"2025-11-24T10:38:53.000Z","size":28,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-27T23:08:39.297Z","etag":null,"topics":["common-lisp","package-lock"],"latest_commit_sha":null,"homepage":"","language":"Common Lisp","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/yitzchak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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},"funding":{"github":"yitzchak"}},"created_at":"2021-12-18T17:42:49.000Z","updated_at":"2025-11-24T10:38:50.000Z","dependencies_parsed_at":"2024-12-04T15:32:38.026Z","dependency_job_id":"1c80fe66-eb59-4826-bb6d-3565e0a528e0","html_url":"https://github.com/yitzchak/trivial-package-locks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yitzchak/trivial-package-locks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yitzchak%2Ftrivial-package-locks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yitzchak%2Ftrivial-package-locks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yitzchak%2Ftrivial-package-locks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yitzchak%2Ftrivial-package-locks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yitzchak","download_url":"https://codeload.github.com/yitzchak/trivial-package-locks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yitzchak%2Ftrivial-package-locks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29199519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T14:35:27.868Z","status":"ssl_error","status_checked_at":"2026-02-07T14:25:51.081Z","response_time":63,"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":["common-lisp","package-lock"],"created_at":"2024-12-04T15:30:16.397Z","updated_at":"2026-02-07T16:02:02.280Z","avatar_url":"https://github.com/yitzchak.png","language":"Common Lisp","funding_links":["https://github.com/sponsors/yitzchak"],"categories":[],"sub_categories":[],"readme":"# trivial-package-locks\n\nA standard interface to the various package lock implementations. Currently\nsupported implementations are ACL, CLISP, CMUCL, ECL and SBCL. On all other\nimplementations the following functions are exported but will evaluate to a\nNOOP where appropriate.\n\n## Package Locks Interface\n\nImplementations that support this interface will have the keyword \n`:package-locks` present in `*features*`.\n\n```common-lisp\n(package-locked-p \u0026optional (package *package*)) =\u003e lock-state\n(setf (package-locked-p \u0026optional (package *package*)) new-lock-state)\n```\n\nAccesses the lock state of a package. `t` indicates that the package is\nlocked and `nil` indicates that it is not locked.\n\n```common-lisp\n(without-package-locks \u0026body body) =\u003e results\n```\n\nDisables the checking of package locks during the evaluation of `body`.\nFor implementations that do not have the ability to disable all package\nlocks via a dynamic variable `(list-all-packages)` will be used to unlock\neach package before the evaluation of `body` and then relock each package\nthat was locked after the evaluation of `body`. For implementations that\ndo not have package locks but have some other mechanism to prevent changes\nto the kernel that mechanism will be disabled.\n\n```common-lisp\n(with-unlocked-packages (\u0026rest packages) \u0026body body) =\u003e results\n```\n\nUnlocks and relocks each of the named `packages` around the evaluation of\n`body`.\n\n```common-lisp\n(with-locked-packages (\u0026rest packages) \u0026body body) =\u003e results\n```\n\nLocks and then unlocks each of the named `packages` around the evaluation of\n`body`.\n\n## Implementation Packages Interface\n\nImplementations that support this interface will have the keyword \n`:implementation-packages` present in `*features*`. Currently ACL and SBCL\nare the only implementations that support this interface.\n\n```common-lisp\n(package-implementation-packages (\u0026optional (package *package*)) =\u003e packages\n(setf (package-implementation-packages \u0026optional (package *package*)) packages)\n```\n\nAccesses the list of packages that are considered implementation packages of\n`package`.\n\n```common-lisp\n(package-implements-package-p (implementation-package \n                               \u0026optional (package *package*)) =\u003e state\n(setf (package-implements-package-p implementation-package\n                                    \u0026optional (package *package*))\n      new-state)\n```\n\nAccess the implementation state of an individual package.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyitzchak%2Ftrivial-package-locks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyitzchak%2Ftrivial-package-locks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyitzchak%2Ftrivial-package-locks/lists"}