---
# System prepended metadata

title: r2-590

---

# r2-590

This is a major release which includes abi breaking changes compared to r2-5.8.x releases.

https://github.com/radareorg/radare2/milestone/73


## HOT TOPICS

* segment emulation in esil
* associate anal info with iomaps --- 6.0.0
* arch plugin design

* Globals
    * Best time to kill globals :fire: 
* Arch Refactoring
    * Store RArchSessions and switch between them for arm-16/32 quick switches (RArchPool :?)
    * Optimize and avoid parsing regprofiles multiple times
* Apply all the abi breaking changes marked as R2_590
* Better QJS integration
    * Support loading multiple qjs plugins without globals or hacks (requires abi break)
    * Add rbin qjs plugins - 6.0.0
* RBin optimizations
    * Dont clone lists of symbols, sections or whatever
    * Use RVec instead of RList for big collections (such as symbols, imports, ...) to reduce memory usage and improve performance
    * Add APIs to find section and symbol by name
* Replace List with Vec in code that is often executed
    * RGraph
    * ... (add as needed)
* Segment Registers support in ESIL
    * We want to emulate TLS and PEB memory segments
    * Support multiple threads (via dp command)
    * i think the best way to implement this would be thru a new ESIL command that sets the segment identifier until a read operation is done.

```
rax,[4],rax,:=.
       // rax=*rax // rax=peek4(rax)
fs,BANK,rax,[4],rax,:=,rbx,[4],rbx,:=
       // rax=*(fs:rax);rbx=*rbx
       // rax=peek4(rax,fs)
```

## Discussions

* Rizin uses much less memory and analyzes code much faster
    * Esil Traces do not use sdb which is the main reason type propagation takes a lot of memory
    * r2's anal->arch refactoring introduced extra allocations and steps everywhere
    * They rewrote the main analysis loop. we should be able to make it pluggable
    * r2 analysis results are better and more accurate
    * They have better variable analysis copied from GHIDRA
    * They rewrote PDB/JAVA/LUA plugins completely
    * Focus on rewrite rather than refactor
    * They load the strings in a thread (not really a big boost)


# RAnalPlugin

* system/cmd interface to run commands like core plugins have. maybe via a:? aao -> a:objc ... and plugin name is the a: subcommand/argument
* avoid binb.getoff/getname, because anal can have a plugin for dalvik that takes the info from bin and creates ophints for arch. but then we need to add this logic somehow
* avoid the IT/ITT/ITTT/ITTTT cache from the arm64 plugin, those must be hints from the analysis callback
* aao -> objc stuff
* 8051 maps/register stuff?
* aae have arch-specific code. maybe we want to have a callback in the anal plugins for this too?
*        * cmd callback to be handled from RCore.cmd
        * init / fini callbacks to store a Session struct



## Debuggging

* https://www.haiku-os.org/documents/dev/welcome_to_kernel_debugging_land/
* https://www.haiku-os.org/blog/anevilyak/