mirror of
https://github.com/radareorg/radare2.git
synced 2025-01-10 07:21:55 +00:00
38 lines
1.6 KiB
Markdown
38 lines
1.6 KiB
Markdown
|
# API/ABI/CMD Stability in R2
|
||
|
|
||
|
Since r2-5.6.0 the development model has changed in order to provide a reliable
|
||
|
way to push updates without the need to recompile the plugins, tools and api
|
||
|
bindings.
|
||
|
|
||
|
In order to achieve this, the contributions need to follow some new rules in
|
||
|
order to be merged, so we ensure that binaries keep stable.
|
||
|
|
||
|
As it's said, odd version numbers are development versions that are only available
|
||
|
in `git` form. The releases are always a pair number (0, 2, 4, 6, 8).
|
||
|
|
||
|
When `X.Y.9` is reached, it's time to merge all the pull requests tagged for
|
||
|
the next big release, the .9 versions are always the most unstable as they focus
|
||
|
on quick development in order to make all the breaking changes needed to
|
||
|
introduce new features or simplify the usage of some apis.
|
||
|
|
||
|
What you **CANNOT** do between X.Y.0 and X.Y.8:
|
||
|
|
||
|
* Add, remove or rename public functions, structs or enums
|
||
|
* Change function signature (adding or removing arguments)
|
||
|
* Add, remove or reorder fields in structs
|
||
|
* Remove or change r2 commands (must be documented in release)
|
||
|
|
||
|
What you **CAN** do between X.Y.0 and X.Y.8:
|
||
|
|
||
|
* Change internal structs or functions (static)
|
||
|
* Add new r2 commands
|
||
|
* Extend r2 commands with new arguments, not breaking previous behaviour)
|
||
|
* Fix memleaks, race conditions, bugs, improve performance, usability, documentation, etc
|
||
|
* Add breaking code under `#if R2_XY0` to be removed when .9 arrives
|
||
|
* Use `R_DEPRECATE` to tag everything that will be removed when .9 is reached
|
||
|
|
||
|
What you **MUST** do in X.Y.9:
|
||
|
|
||
|
* Remove everything marked as `R_DEPRECATE` or `R2_XY0`. Use `git grep` to find them out
|
||
|
* Anything that was forbidden
|