{"id":23892472,"url":"https://github.com/gregorybchris/myxa","last_synced_at":"2025-02-23T05:43:15.519Z","repository":{"id":270424386,"uuid":"908793536","full_name":"gregorybchris/myxa","owner":"gregorybchris","description":"Compatibility-aware package manager","archived":false,"fork":false,"pushed_at":"2025-01-20T00:19:49.000Z","size":370,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-20T01:25:20.645Z","etag":null,"topics":["compatibility","dependency","management","manager","package","repository","update","upgrade"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gregorybchris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-12-27T01:42:51.000Z","updated_at":"2025-01-20T00:19:51.000Z","dependencies_parsed_at":"2025-01-20T01:22:04.797Z","dependency_job_id":"e089ff69-f046-4f58-bf7f-531804bb1a45","html_url":"https://github.com/gregorybchris/myxa","commit_stats":null,"previous_names":["gregorybchris/myxa"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fmyxa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fmyxa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fmyxa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorybchris%2Fmyxa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregorybchris","download_url":"https://codeload.github.com/gregorybchris/myxa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240275899,"owners_count":19775614,"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":["compatibility","dependency","management","manager","package","repository","update","upgrade"],"created_at":"2025-01-04T13:53:10.060Z","updated_at":"2025-02-23T05:43:15.497Z","avatar_url":"https://github.com/gregorybchris.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/myxa-banner.png\"\u003e\n\n  \u003ch1\u003eMyxa\u003c/h1\u003e\n\n  \u003cp\u003e\n    \u003cstrong\u003eCompatibility-aware package manager\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003chr /\u003e\n\u003c/div\u003e\n\n## About\n\nMyxa has two goals:\n\n1. Enable package maintainers to safely publish packages without breaks\n2. Enable package users to easily upgrade to the latest versions of packages without breaks\n\n### How it works\n\nAlong with package dependencies, Myxa also tracks the type signatures of each function in a package. When a breaking change is detected in a type signature, `myxa publish` will require a major version bump.\n\nFor large packages, most of the time breaking changes only affect a small proportion of users. If a user depends on feature X in their project, but only feature Y breaks, then `myxa update` will safely auto-upgrade, even across major version boundaries.\n\n\u003e Note: Myxa compatibility checks are compile-time only. Runtime compatibility checks, as you might know, are _quite_ difficult.\n\n## Installation\n\nInstall using [uv](https://docs.astral.sh/uv)\n\n```bash\nuv sync\n```\n\n## Usage\n\n```bash\n# Initialize a new package\nmx init \u003cname\u003e \"\u003cdescription\u003e\"\n\n# Show package info\nmx info\n\n# Show package info for a specific version\nmx info --version \u003cversion\u003e\n\n# Add a package dependency\nmx add \u003cdep-name\u003e\n\n# Add a package dependency with a specific version\nmx add \u003cdep-name\u003e --version \u003cversion\u003e\n\n# Remove a package dependency\nmx remove \u003cdep-name\u003e\n\n# Lock the package dependencies\nmx lock\n\n# Update all package dependencies to the highest compatible versions\nmx update\n\n# Check whether there are breaking changes\nmx check\n\n# Check whether there are breaking changes, comparing with a specific version\nmx check --version \u003cversion\u003e\n\n# Check for any changes in a package\nmx diff\n\n# Check for any changes, comparing with a specific version\nmx diff --version \u003cversion\u003e\n\n# Publish to the index\nmx publish\n\n# List all versions of all packages in the index\nmx index\n\n# List all packages in the index\nmx index --no-versions\n\n# List all versions of one package in the index\nmx index --package \u003cpackage_name\u003e\n```\n\n### Local Index\n\nMyxa automatically creates a local package index file where published packages are stored. To keep your index file somewhere else you can use the `MYXA_INDEX` environment variable. The recommended filename is `index.json`.\n\n```bash\nexport MYXA_INDEX=\"path/to/index.json\"\n```\n\n## Unsupported features\n\n### Plan to support\n\n- Type references and recursive types\n- Upgrade across major versions\n\n### Want to support\n\n- Tuples\n- Optional function parameters\n- Dev dependencies/groups/extras\n- Specifying extra indexes in package metadata\n- Integration with actual code\n- Different upgrade behavior for libraries and applications\n- Greater than or equal to constraints\n- Upper bounds\n\n### Will not support\n\n- Semver patch versions\n\n## Package name\n\nMyxa is named after the slime mold _Myxogastria_, the Ancient Greek word μύξα (_myxa_), meaning \"mucus\".\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorybchris%2Fmyxa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregorybchris%2Fmyxa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorybchris%2Fmyxa/lists"}