Skip to content

Conversation

@lum1n0us
Copy link
Contributor

before publish a release

  • manually change the content of config_common.cmake
  • or pass the new version by cmake -DWAMR_VERSION_MAJOR=XXX -DWAMR_VERSION_MINOR=YYY -DWAMR_VERSION_PATCH=ZZZ ...

@lum1n0us lum1n0us force-pushed the semantic_version branch 2 times, most recently from db890e8 to 0c490a2 Compare August 12, 2022 01:25
@lum1n0us lum1n0us mentioned this pull request Aug 12, 2022
@lum1n0us lum1n0us force-pushed the semantic_version branch 3 times, most recently from 246d3d3 to b72ae9f Compare August 15, 2022 00:58
@yamt
Copy link
Contributor

yamt commented Aug 15, 2022

what's included in our public api and what's not?

@lum1n0us
Copy link
Contributor Author

what's included in our public api and what's not?

WASM_RUNTIME_API_EXTERN void
wasm_runtime_get_version(uint32_t *major, uint32_t *minor, uint32_t *patch);

@yamt
Copy link
Contributor

yamt commented Aug 15, 2022

what's included in our public api and what's not?

WASM_RUNTIME_API_EXTERN void
wasm_runtime_get_version(uint32_t *major, uint32_t *minor, uint32_t *patch);

my question was about the following.

https://semver.org/#semantic-versioning-specification-semver

Software using Semantic Versioning MUST declare a public API. This API could be declared in the code itself or exist strictly in documentation. However it is done, it SHOULD be precise and comprehensive.

@lum1n0us
Copy link
Contributor Author

what's included in our public api and what's not?

WASM_RUNTIME_API_EXTERN void
wasm_runtime_get_version(uint32_t *major, uint32_t *minor, uint32_t *patch);

my question was about the following.

https://semver.org/#semantic-versioning-specification-semver

Software using Semantic Versioning MUST declare a public API. This API could be declared in the code itself or exist strictly in documentation. However it is done, it SHOULD be precise and comprehensive.

thansk for reminding. IIUC wasm_runtime_get_version is the API the question about and the API the semantic versioning required.

@lum1n0us lum1n0us force-pushed the semantic_version branch 2 times, most recently from 7c67fb6 to 89da5c7 Compare August 16, 2022 01:48
@lum1n0us lum1n0us marked this pull request as ready for review August 16, 2022 01:48
@yamt
Copy link
Contributor

yamt commented Aug 16, 2022

what's included in our public api and what's not?

WASM_RUNTIME_API_EXTERN void
wasm_runtime_get_version(uint32_t *major, uint32_t *minor, uint32_t *patch);

my question was about the following.
https://semver.org/#semantic-versioning-specification-semver

Software using Semantic Versioning MUST declare a public API. This API could be declared in the code itself or exist strictly in documentation. However it is done, it SHOULD be precise and comprehensive.

thansk for reminding. IIUC wasm_runtime_get_version is the API the question about and the API the semantic versioning required.

i think we are talking past each other.
wasm_runtime_get_version is not my concern.

to maintain semantic version properly, it's necessary to declare what kind of compatibility we guarantee to users. it's called "public api." (i think it's a semantic version term)
we bump our major version when we made incompatible changes to our public api.

  • do we care ABI? or only care API?
  • we occasionally breaks the ABI of wasm_export.h. (eg. whenever we extend RuntimeInitArgs) does it warrant a major bump?
  • how about wasm_c_api.h?
  • how about AoT runtime ABI?

## Legacy versions

All legacy versions(tags) will keep their current status. We treat the first releasing,
_WAMR-11-28-2019_, as the version 1.0.0, and so on.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the point to assign semver to old releases?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just in case somebody is interested in why our next release would be 1.20.0

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, we won't change any existing release names or links.

There are three parts in the new version string:

- _major_. WAMR only changes _major_ when APIs are modified in an incompatible way.
APIs includes: `wasm_export.h`, `wasm_c_api.h`, _sections in AOT files_, and so on.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APIs includes: wasm_export.h, wasm_c_api.h

does this mean ABI changes are not relevant?

sections in AOT files

what do you mean?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Our APIs do not just include headers but also AOT internal structures, like section headers, offsets, fields, and so on.
  • Both ABI and API matter.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both ABI and API matter.

it's confusing because all legacy releases below share the major 1, while there were actually abi-breaking changes.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my suggestion is

  • simply start from 1.0.0
  • just say "pre-1.0.0 releases don't follow semver convention"

before publish a release
- manually change the content of config_common.cmake
- or pass new version by `cmake -DWAMR_VERSION_MAJOR=XXX -DWAMR_VERSION_MINOR=YYY -DWAMR_VERSION_PATCH=ZZZ ...`

There is [a table](doc/legacy_versions.md) which semantic version string a legacy release should have

Now, `iwasm --version` is able to return the version number, like "Wasm-Micro-Runtime v1.20.0".
@wenyongh wenyongh merged commit 717e8a4 into bytecodealliance:main Aug 18, 2022
loganek pushed a commit to loganek/wasm-micro-runtime that referenced this pull request Aug 31, 2022
Use the semantic versioning (https://semver.org) to replace the current date
versioning system, which is more general and is requested by some developers,
e.g. issue bytecodealliance#1357.

There are three parts in the new version string:
- major. Any incompatible modification on ABIs and APIs will lead to an increment
  in the value of major, which mainly includes: AOT calling conventions, AOT file
  format, wasm_export.h, wasm_c_api.h, and so on.
- minor. It represents new features, including MVP/POST-MVP features, libraries,
  WAMR private ones, and so one.
- patch. It represents patches.

The new version will start from 1.0.0. Update the help info and version showing for
iwasm and wamrc.
@bonifaido
Copy link
Contributor

So the next release will be cut according to SemVer? When can we expect it?

@wenyongh
Copy link
Collaborator

@bonifaido We have created the new release WAMR-1.0.0, hope it is helpful to you, thanks.

@bonifaido
Copy link
Contributor

This is great! Thank you!

@lum1n0us lum1n0us deleted the semantic_version branch October 1, 2022 11:41
vickiegpt pushed a commit to vickiegpt/wamr-aot-gc-checkpoint-restore that referenced this pull request May 27, 2024
Use the semantic versioning (https://semver.org) to replace the current date
versioning system, which is more general and is requested by some developers,
e.g. issue bytecodealliance#1357.

There are three parts in the new version string:
- major. Any incompatible modification on ABIs and APIs will lead to an increment
  in the value of major, which mainly includes: AOT calling conventions, AOT file
  format, wasm_export.h, wasm_c_api.h, and so on.
- minor. It represents new features, including MVP/POST-MVP features, libraries,
  WAMR private ones, and so one.
- patch. It represents patches.

The new version will start from 1.0.0. Update the help info and version showing for
iwasm and wamrc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants