Skip to content

Planning: versioning semantics #38

@LB--

Description

@LB--

All libraries will use semantic versioning

Dependencies must be specified in the project JSON, mapping versions to internal names to be used in the code. For example:

"dependencies":
{
    "libblah":
    {
        "name": "blahlib", //code uses "libblah" but compiler searches for "blahlib"
        "location": ["../deps/"],
        "version": "1.6+.21", //exact major 1, minimum minor 6, if minor is 6 minimum patch 21
        "exclude versions": ["1.6.22"]
    },
    "very-common-library":
    {
        "name": "libcommon",
        "version": "1+",
        "exclude versions": ["3+"]
    },
    "LB/somelib":
    {
        "name": "LB/somelib", //slashes are allowed - handling is different per system
        "location": [null, "https://github.com/LB--/somelib.git"], //check standard places first, fallback to github
        "version": "1.0+"
    }
}

All dependencies are optional until proven required by the code. This allows the code to determine which dependencies are actually required while also not directly requesting dependencies deep inside the code in an obscure location.

TODO: what about dynamically loading libraries at runtime?

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions