- R2Base._exec now uses r2pipe.cmd2 and raises R2CommandError on failure
- Empty JSON responses return None instead of crashing
- Added _cmd_arg helper to quote string/assembly arguments safely
- Ported Write.string/assembly and Print to the new execution path
- Skip debugger register tests when ptrace is unavailable
- Flags.exists now scans the JSON flag list instead of the broken `??` helper
- Config boolean values are coerced correctly instead of checking the attribute name
- Debugger CPU no longer swallows all errors and handles empty register sets
- IOMap permissions now read/write the correct radare2 field
- Python 2 leftovers removed and string formatting modernized
- All public r2papi classes are now exported