Public

nationalsecurityagency/ghidra

Updated: 8/13/2026

Languages

Java86%C++6%HTML4.1%C1.5%Python1.4%Shell0.3%Other0.6%
2 Models30 Tasks

Ghidra is a software reverse engineering (SRE) framework

Harness

1

Mini-SWE-agent
22 / 30

$0.32

5m41s

2

Mini-SWE-agent
21 / 30

$0.20

2m12s

Key Takeaways

  • GLM 5.2 (Fireworks) with Mini-SWE-agent scores 73.33%, compared with 70% for Grok 4.5 with Mini-SWE-agent.
  • Grok 4.5 with Mini-SWE-agent costs $0.20 per test and takes 132.05 seconds, versus $0.32 and 341.16 seconds for GLM 5.2 (Fireworks) with Mini-SWE-agent.

Model Comparison

Accuracy

73.33%

GLM 5.2

70.00%

Grok 4.5

Task outcomes

30 tasks

Both
GLM 5.2 only
Grok 4.5 only
Neither
Not attempted

Cost / test

$0.32

GLM 5.2

$0.20

Grok 4.5

Cost distribution

$0.00$0.86$1.72

Latency

5m 41s

GLM 5.2

2m 12s

Grok 4.5

Latency distribution

0s12m 20s24m 41s

Cost Analysis

Cost / Test vs. Accuracy
ACCURACYCOST

Average Token Use / Test

Token Usage
InputOutputReasoningCache readCache write
GLM 5.2
1.4M
Grok 4.5
324K

Cost is the clearest tradeoff in this comparison. GLM 5.2 leads at 73.33% for $0.32 per test. Grok 4.5 is the lower-cost option at 70.00% for $0.20 per test.

Latency Analysis

Latency vs. Accuracy
ACCURACYLATENCY

Average Response Time / Test

Response Time
GLM 5.2
5m 41s
Grok 4.5
2m 12s

Latency separates several models with similarly strong scores. GLM 5.2 leads at 73.33%, while Grok 4.5 is fastest at 2m 12s with 70.00% accuracy.

Tasks with failures

Models
GLM 5.2
Grok 4.5

Task detail

1014eb0

Issue statement

The legacy pyghidra.gui.get_current_interpreter compatibility API is deprecated, but its deprecation is only emitted manually when called. Mark this public function using the standard runtime deprecation mechanism so introspection tools can discover its deprecation metadata while preserving its delegation behavior. Calling it must still return pyghidra.get_current_interpreter(), and must emit a DeprecationWarning explaining that the function moved to pyghidra.get_current_interpreter.

View Hidden Tests
diff --git a/Ghidra/Features/PyGhidra/src/main/py/tests/test_gui_deprecation_contract.py b/Ghidra/Features/PyGhidra/src/main/py/tests/test_gui_deprecation_contract.pynew file mode 100644index 0000000000..154351a4cc--- /dev/null+++ b/Ghidra/Features/PyGhidra/src/main/py/tests/test_gui_deprecation_contract.py@@ -0,0 +1,34 @@+import importlib.util+import sys+import types+import warnings+from pathlib import Path+++def _load_gui_module():+    fake_pyghidra = types.ModuleType("pyghidra")+    fake_pyghidra.get_current_interpreter = lambda: "current-interpreter"+    sys.modules["pyghidra"] = fake_pyghidra++    gui_path = Path(__file__).parents[1] / "src" / "pyghidra" / "gui.py"+    spec = importlib.util.spec_from_file_location("_pyghidra_gui_contract", gui_path)+    module = importlib.util.module_from_spec(spec)+    spec.loader.exec_module(module)+    return module+++def test_legacy_interpreter_api_exposes_standard_deprecation_metadata_and_warns():+    gui = _load_gui_module()+    expected = (+        "get_current_interpreter has been moved. "+        "Please use pyghidra.get_current_interpreter."+    )++    assert gui.get_current_interpreter.__deprecated__ == expected+    with warnings.catch_warnings(record=True) as caught:+        warnings.simplefilter("always")+        assert gui.get_current_interpreter() == "current-interpreter"++    assert len(caught) == 1+    assert caught[0].category is DeprecationWarning+    assert str(caught[0].message) == expected