-
-
Notifications
You must be signed in to change notification settings - Fork 190
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Module versioning #821
Comments
Go Modules work like this:
|
You mean Bar and Baz resolve to 1.3 right? How would the version be specified? only in the project or other manifest file or in the module path as is the case in Go? |
No, they resolve to 1.5 since Bar needs 1.5+. Different major versions are considered distinct libraries. |
Module would be defined in manifest.json / project.json. A simple scheme is saying
Ideally look up if there is some standardized way to do the above. |
Things like this should be considered: https://www.lucidchart.com/techblog/2017/03/15/package-management-stop-using-version-ranges/ |
Maybe also have a look at what Zig si doing. They have introduced their package manager recently (I havent looked at it yet). |
I am not really looking at a package manager. I think downloading dependencies using other means is fine. Because of how C3 libraries work (essentially zip files with some metadata) they're easy to just drop manually into any project - no package manager needed. The only thing that's necessary is to determine how to select a package if you have dropped two libraries of the same type into your dependencies. Basically "what does that mean" when you then want to include a library. Because we're not doing package dependency resolution for pulling in packages, we're essentially only about selection. So say that you have your code, and then you drop in So for example it could work like this:
|
I like this actually. Package managers are a nightmare. Thanks for the explanations. |
Consider some versioning scheme for various elements in the build/manifests:
Possible design:
(example: A needs 1, 2, B needs 2, 3 => pick 2, A needs 1, 2, B needs 3, 4 => error)
The text was updated successfully, but these errors were encountered: