Skip to content

Commit ac90937

Browse files
committed
fix coreversion info and add docs
1 parent 36d99ad commit ac90937

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

docs/dev/cookbook.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,32 @@ context = FileContext(data.file, data, '')
375375
execute_on_main_thread(lambda: UIContext.activeContext().openFileContext(context))
376376
```
377377

378+
## Version Checking
379+
380+
### Checking Binary Ninja version
381+
382+
Plugins often need to check the Binary Ninja version to ensure compatibility or conditionally enable features. Use [`core_version_info()`](https://api.binary.ninja/#binaryninja.core_version_info) and [`CoreVersionInfo`](https://api.binary.ninja/#binaryninja.CoreVersionInfo) for clean version comparisons:
383+
384+
```python
385+
from binaryninja import core_version_info, CoreVersionInfo
386+
387+
# Check minimum version requirement
388+
if core_version_info() >= CoreVersionInfo(5, 1, 8104):
389+
# Use API only available in 5.1.8104 and later
390+
print("New API is available")
391+
else:
392+
# Fall back to older API
393+
print("Using legacy API")
394+
395+
# Parse and compare against a version string
396+
if core_version_info() >= CoreVersionInfo("4.2.0"):
397+
print("Version 4.2.0 or later detected")
398+
399+
# Access individual version components
400+
version = core_version_info()
401+
print(f"Running Binary Ninja {version.major}.{version.minor}.{version.build}-{version.channel}")
402+
```
403+
378404
## Debuging & Logging
379405

380406
### Logging

python/__init__.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,19 @@ class CoreVersionInfo:
127127
Structure representing the Binary Ninja Version.
128128
129129
Use :py:func:`core_version_info` to look up the current version of Binary Ninja loaded.
130+
131+
:Example:
132+
133+
>>> from binaryninja import core_version_info, CoreVersionInfo
134+
>>> # Check if the current version meets minimum requirements for a plugin
135+
>>> if core_version_info() >= CoreVersionInfo(5, 1, 8104):
136+
... print("Using new API available in 5.1.8104 and later")
137+
>>> # Parse and compare against a version string
138+
>>> if core_version_info() >= CoreVersionInfo("4.2.0"):
139+
... print("Version 4.2.0 or later detected")
140+
>>> # Get individual version components
141+
>>> version = core_version_info()
142+
>>> print(f"Running Binary Ninja {version.major}.{version.minor}.{version.build}")
130143
"""
131144

132145
major: int
@@ -151,7 +164,7 @@ def __init__(self, major, minor = None, build = None, channel = None):
151164
self.major = core_version_info.major
152165
self.minor = core_version_info.minor
153166
self.build = core_version_info.build
154-
if core_version_info.channel is not None:
167+
if core_version_info._channel is not None:
155168
self.channel = core_version_info.channel
156169
else:
157170
self.major = major

0 commit comments

Comments
 (0)