rizin/librz/util
Rot127 b11bb9d23a
refactor: add hashtable-based RzGraph implementation (#6152)
* Basic implement of list based and matrix based graph

Add comments

Basic support for list and matrix based graph refactor

Add rz_graph_*_new node and edge API

Modify calling for rz graph edge data

Add dfs and visitor mode

Add new get nth neighbours

Add unit test and wrapper for get edges

Bug fixed and unit test

Solve TODO about better semantic of get nodes

Doc RZ_API and other functions, split impl to new files

[cannot build] remove old graph impl and rename new graph API

* Rewrite and replace agrach, cgraph, drawable_graph, il_graph with new API

* Refactor graph API and fix unit test and multiple leaks

Update Wrapper for graph identifier

Ordered Nodes in graph drawable

Fix icfg and several agraph refactor issues

Use kahn to get topo sort in assign_layers

Introduce khan for assign_layer and find DAG cycle and backedges in algorithm

* Fix self loop and update db test

* Solve request changes

* Fix cbpf db

* Fix test graph warning in testing NULL deletion

* Fix mismatched rz_agraph_compute_layout nonnull

* Fix memleak

* Clean and fix code

* Fix memleak in graph free

* Fix memleak in matrix implement

* Add bindgen doc

* Fix memleak in early exit

* Fix rz-bindgen warning comments

* Make graph structures private.

* Fix Windows C2036

* Fix typo in type annotation.

* Add new type annotations for RzGraph and HtPP

---------

Co-authored-by: Heersin <teablearcher@gmail.com>
2026-04-08 04:01:40 +08:00
..
float Swap argument order of rz_bv_copy* (#5793) 2026-01-14 23:18:34 +08:00
ht ht_inc: Rename slots to slots_ (#6021) 2026-03-10 22:33:12 +08:00
sdb refactor: SwissTable implementation for ht (#5860) 2026-03-02 12:31:35 +08:00
alloc.c
annotated_code.c Add missing vector foreach macros to clang-format cfg (#4456) 2024-04-22 07:16:46 +08:00
ascii_table.c
asn1.c Extend ASN.1/PKCS7/X.509 to dump structures (#5656) 2025-12-22 09:41:56 +08:00
asn1_oids.h Extend ASN.1/PKCS7/X.509 to dump structures (#5656) 2025-12-22 09:41:56 +08:00
asn1_str.c Extend ASN.1/PKCS7/X.509 to dump structures (#5656) 2025-12-22 09:41:56 +08:00
assert.c
axml.c librz/util: UTF-16/32 to UTF-8 conversion (#5431) 2025-10-05 19:16:53 +08:00
axml_resources.h
base16.c librz/util: base64, base85, base36, base32, base16 support and refactor (#5216) (#5271) 2025-08-17 15:26:25 +08:00
base32.c librz/util: base64, base85, base36, base32, base16 support and refactor (#5216) (#5271) 2025-08-17 15:26:25 +08:00
base36.c librz/util: base64, base85, base36, base32, base16 support and refactor (#5216) (#5271) 2025-08-17 15:26:25 +08:00
base64.c librz/util: base64, base85, base36, base32, base16 support and refactor (#5216) (#5271) 2025-08-17 15:26:25 +08:00
base85.c librz/util: base64, base85, base36, base32, base16 support and refactor (#5216) (#5271) 2025-08-17 15:26:25 +08:00
base91.c
big-gmp.c
big-ssl.c
big.c Remove useless semicolon 2024-03-25 18:36:02 +08:00
bits.c Update contact information of Rot127. (#5522) 2025-11-10 17:15:15 +00:00
bitvector.c Add inplace variants for rz_bv_(un)signed_cast() (#6164) 2026-04-06 17:09:05 +02:00
buf.c Remove rz_io_read_at and use only rz_io_read_at_mapped (#5777) 2026-01-11 22:50:50 +08:00
buf_bytes.c RzBuffer consistency and make buffer type public (#4666) 2024-10-12 11:27:21 +02:00
buf_file.c RzBuffer consistency and make buffer type public (#4666) 2024-10-12 11:27:21 +02:00
buf_io.c RzBuffer consistency and make buffer type public (#4666) 2024-10-12 11:27:21 +02:00
buf_io_fd.c RzBuffer consistency and make buffer type public (#4666) 2024-10-12 11:27:21 +02:00
buf_mmap.c
buf_ref.c
buf_sparse.c Replaced 'assert()' with 'rz_return_val_if_fail()' (#3813) 2023-09-08 10:27:07 +08:00
calc.c
chmod.c Remove global in chmod.c 2024-01-06 23:30:07 +08:00
compression.c dwarf: fix loading big Zlib sections 2024-08-15 22:51:42 +08:00
debruijn.c
ebcdic.c String/Hex-Search 2/9: Improve Unicode support. 2025-02-22 04:12:49 +08:00
event.c Add missing vector foreach macros to clang-format cfg (#4456) 2024-04-22 07:16:46 +08:00
file.c Add pF8 for decoding PKCS8 & add info on /cm (#5647) 2025-12-20 16:28:10 +08:00
getopt.c
graph_algorithm.c refactor: add hashtable-based RzGraph implementation (#6152) 2026-04-08 04:01:40 +08:00
graph_drawable.c refactor: add hashtable-based RzGraph implementation (#6152) 2026-04-08 04:01:40 +08:00
graph_impl.c refactor: add hashtable-based RzGraph implementation (#6152) 2026-04-08 04:01:40 +08:00
graph_priv.h refactor: add hashtable-based RzGraph implementation (#6152) 2026-04-08 04:01:40 +08:00
hex.c librz/util: base64, base85, base36, base32, base16 support and refactor (#5216) (#5271) 2025-08-17 15:26:25 +08:00
idpool.c
intervaltree.c
iterator.c refactor: Use HtSP for storing plugins. (#4687) 2024-10-26 16:31:13 +08:00
itv.c librz/util: implement a bounded interval. (#4977) 2025-03-09 15:24:07 +08:00
json_indent.c librz/core/cmd: convert pj to RzShell (#4726) 2024-11-24 10:20:06 +08:00
json_parser.c Rename RzRune to RzCodePoint. (#4860) 2025-01-24 20:39:04 +08:00
lang_byte_array.c Add missing newlines to some RZ_LOG_* calls (#4439) 2024-04-18 00:04:38 +08:00
lib.c Replace strdup with rz_str_dup (#4634) 2024-09-15 19:12:07 +08:00
list.c Inline rz_list_iter_set_data() and shorten it to rz_list_set_val() (#6131) 2026-04-02 06:04:54 +08:00
log.c Add getter for the current log level. (#5807) 2026-01-23 18:52:45 +00:00
luhn.c
mem.c Fix return type description. (#5838) 2026-01-25 13:11:11 +00:00
meson.build refactor: add hashtable-based RzGraph implementation (#6152) 2026-04-08 04:01:40 +08:00
name.c Replace strdup with rz_str_dup (#4634) 2024-09-15 19:12:07 +08:00
path.c shell: new arg type RZ_CMD_ARG_TYPE_FOLDER (#5514) 2025-12-10 19:08:38 +08:00
pj.c
pkcs7.c Extend ASN.1/PKCS7/X.509 to dump structures (#5656) 2025-12-22 09:41:56 +08:00
pkcs8.c Add pF8 for decoding PKCS8 & add info on /cm (#5647) 2025-12-20 16:28:10 +08:00
print.c linter: update clang-format installation to version 20 (#5451) 2025-10-12 08:02:03 +08:00
protobuf.c
punycode.c
range.c librz/util: remove unused rz_range functions (#6083) 2026-03-24 16:44:22 +08:00
rbtree.c
README.md librz: add some initial documentation (#3782) 2023-10-13 13:46:19 +08:00
regex.c Fix several leaks. (#5536) 2025-11-19 23:22:56 +08:00
serialize_spaces.c sdb: remove unused cas and expire features (#4487) 2024-05-12 18:27:54 +08:00
set.c Add rz_set_u_take(). (#6137) 2026-04-04 12:04:25 +00:00
signal.c
skiplist.c Add user pointer to RzListComparator (#4204) 2024-02-11 13:28:33 +08:00
skyline.c
spaces.c Replace strdup with rz_str_dup (#4634) 2024-09-15 19:12:07 +08:00
stack.c
str.c Add rz_str_replace_regex for regex based string replacement (#6151) 2026-04-06 11:52:52 +00:00
str_constpool.c Add extended insert/update methods for HT (#4489) 2024-05-17 18:06:01 +08:00
str_search.c librz/bin: define string search parameters in plugins (#5406) 2025-10-08 10:02:32 +08:00
str_trim.c Add pF8 for decoding PKCS8 & add info on /cm (#5647) 2025-12-20 16:28:10 +08:00
strbuf.c refactor: resolve some memory leaks in util and search 2025-11-13 23:11:10 +08:00
strpool.c
structured_data.c Rewrite of zImage bin parser & new structured data methods (#5893) 2026-02-09 19:00:42 +08:00
structured_data_json.c Convert opex to use RzStructuredData (#5613) 2025-12-16 15:21:44 +08:00
structured_data_yaml.c Extend ASN.1/PKCS7/X.509 to dump structures (#5656) 2025-12-22 09:41:56 +08:00
subprocess.c librz/util/subprocess: fix inability to automatically run .com executables (#5312) 2025-08-25 12:20:37 +08:00
sys.c Implement rz_sys_backtrace() for Windows/MSVC (#5784) 2026-01-13 00:55:20 +08:00
syscmd.c shell: pipe support for uniq and sort commands (#5580) 2025-12-10 19:09:30 +08:00
table.c Remove rz_list_iter_get_data() (#5900) 2026-02-10 22:03:37 +08:00
thread.c Add helper to check if a thread terminated. (#5583) 2025-12-08 04:37:01 +08:00
thread.h Fix Illumos/Solaris platform support (#5972) 2026-02-27 13:01:40 +08:00
thread_cond.c Optimize queue to act also as proper channel (#5627) 2025-12-20 00:40:13 +08:00
thread_hash_table.c Add HtSP, HtSS, HtSU, SetS (#4415) 2024-04-16 20:27:48 +08:00
thread_iterators.c Remove rz_list_iter_get_data() (#5900) 2026-02-10 22:03:37 +08:00
thread_lock.c
thread_pool.c Fix "exeeds" typo (#5760) 2026-01-09 21:26:26 +08:00
thread_queue.c Fix various Coverity findings (#5668) 2025-12-30 02:02:56 +08:00
thread_sem.c subprocess: Protect proc->ret with a semaphore (#4545) 2024-06-19 18:23:12 +08:00
thread_types.c
time.c Fix Illumos/Solaris platform support (#5972) 2026-02-27 13:01:40 +08:00
tree.c
uleb128.c Check we do not shift more than 63. in [us]leb128 2024-09-08 17:34:55 +08:00
unicode.c Enc: add unicode case mappings (#5956) 2026-03-01 15:06:28 +00:00
unum.c linter: update clang-format installation to version 20 (#5451) 2025-10-12 08:02:03 +08:00
utf8.c Enc: add unicode case mappings (#5956) 2026-03-01 15:06:28 +00:00
utf16.c librz/util: UTF-16/32 to UTF-8 conversion (#5431) 2025-10-05 19:16:53 +08:00
utf32.c librz/util: UTF-16/32 to UTF-8 conversion (#5431) 2025-10-05 19:16:53 +08:00
vector.c librz/util: add rz_vector_contains() and rz_vector_insert_sorted() (#5892) 2026-02-11 02:45:12 +08:00
version.c Remove Global/Static variables in path.c to make it thread safe (#5148) 2025-06-13 21:34:33 +08:00
w32-sys.c
x509.c Fix small mistake on x509 structure. (#5690) 2025-12-27 19:00:27 +08:00
x509.h Extend ASN.1/PKCS7/X.509 to dump structures (#5656) 2025-12-22 09:41:56 +08:00

RzUtil

This library contains all common utilities and functions that are used by other modules in the Rizin framework, like string manipulation, data structures (lists, vectors, trees, etc.), JSON parsing/printing, and others.

What can I expect here?

  • Numbers/math functions
  • Functions likely needed across several other modules
  • Data structures: lists, vectors, trees, graphs, skiplist
  • RzBuffer
  • JSON parsing, JSON printing
  • PKCS7
  • BitVector
  • Functions that are very common and not specific to other modules
  • SDB
  • Floating point number operations
  • OS/Platform-independent abstractions for common operations (e.g. rename a file, create temporary file, etc.)