-
Notifications
You must be signed in to change notification settings - Fork 178
First stab at API life cycle #1316
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
Changes from 2 commits
54f019c
a921089
44a4f18
4fe854d
8c5d39a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,6 +27,7 @@ Label directories are directories that follow a naming convention: an upper case | |
|
||
- `TARGET`, constructed from the configuration value `target.extra_labels` and the name of the targets. | ||
- `FEATURE`, constructed from the configuration value `target.features`. | ||
- `FEATURE_EXPERIMENTAL_API`, constructed from the configuration value `target.features`. | ||
- `COMPONENT`, controlled from the configuration value `target.components`. | ||
- `TOOLCHAIN`, controlled completely by the toolchain used to build. | ||
|
||
|
@@ -68,6 +69,22 @@ The feature labeled directories are used for software that implements functional | |
|
||
In the above example, `mbed compile` includes files in directories named `FEATURE_BLE`, and not directories such as `FEATURE_STORAGE` or `FEATURE_CRYTOCELL310`. | ||
|
||
### Experimental directories | ||
|
||
By default, Mbed OS doesn't compile [experimental APIs](). You can override this behaviour by explicitly including "EXPERIMENTAL_API" in `mbed_app.json`: | ||
|
||
``` | ||
{ | ||
“target_overrides” : { | ||
“*” : { | ||
“target.features_add” : [“EXPERIMENTAL_API”] | ||
} | ||
} | ||
} | ||
|
||
``` | ||
<!--so for a specific one, or does this now allow me to use all experimental APIs in one giant go?--> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it's worth having each set of experimental APIs having its own feature switch as well. So, for example, in order to use PSA, you would need to add both the EXPERIMENTAL_API and PSA features toggles. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think that's a decision for @bulislaw There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We discussed this ages ago, if I remember correctly, the consensus was behind "case by case". That is if the feature would have it's own flag it should be there hidden behind the master experimantal flag, so that when the API is stabilised no changes to the application are needed.
iriark01 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Component directories | ||
|
||
The component labeled directories are used for software that implements funtionality. They are within label directories primarily because we don't expect every program to use this software, and including this software in every build would needlessly increase build time. The configuration value `target.components` entirely controls the set of directories the `COMPONENT` label type includes. The following is a shortened version of an example `targets.json`: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is a common misconcaption:
So when the API is deprecated it will be available to the users until next major release when it will be removed. The marking as "deprecated" can happen in minor relase.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So do we have four phases, or a clarification for the three?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think 3 phases: Experimental, Stable, Deprecated; after the last one the API is removed in next major release. Deprecated should say that API is marked by deletion and its usage will generate a warning, it'll be removed in next major release. Marking API as deprecated is not a breaking change as the code using this API will continue to work until the next major release.