radare2/r2-bindings
2011-07-11 20:24:21 +02:00
..
cxx * Fix pkg-config-symstall 2011-05-20 19:49:50 +02:00
gear * Fix pkg-config-symstall 2011-05-20 19:49:50 +02:00
gir * Rewrite io_ptrace{read|write} to fix bugs on OpenBSD-amd64 debugger 2011-05-26 20:55:11 +02:00
go * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
guile * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
java * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
lua * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
perl * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
python * Fix file_open() in python test 2011-06-25 21:25:44 +02:00
ruby * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
vapi * Fix r_asm_op vapi 2011-07-11 20:24:21 +02:00
autogen.sh * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
check-langs.sh * Fix pkg-config-symstall 2011-05-20 19:49:50 +02:00
config.mk.acr * Generate v8-gear files for r2-bindings with valabind 2011-05-18 16:09:28 +02:00
configure * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
configure-langs * Fix r2-bindings valabind build (python, guile, ..) 2011-07-07 18:40:18 +02:00
configure.acr * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
configure.hook * Fix pkg-config-symstall 2011-05-20 19:49:50 +02:00
do-swig.sh * Generate v8-gear files for r2-bindings with valabind 2011-05-18 16:09:28 +02:00
do-test.sh * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
getostype.sh * Fix pkg-config-symstall 2011-05-20 19:49:50 +02:00
libs.mk * Build gir bindings 2011-05-20 21:59:54 +02:00
Makefile * Fix r2-bindings valabind build (python, guile, ..) 2011-07-07 18:40:18 +02:00
python-config-wrapper * Rename swig/ to r2-bindings 2011-05-18 01:35:52 +02:00
README * Fix r2-bindings valabind build (python, guile, ..) 2011-07-07 18:40:18 +02:00
rules.mk * Fix pkg-config-symstall 2011-05-20 19:49:50 +02:00

r2-bindings
===========

If you compile from the repo you need valabind and pass the --enable-devel

  ./configure --prefix=/usr --enable-devel

You can select the languages you want to compile with --enable={list-of-langs}

  ../configure --prefix=/usr --enable-devel --enable=python


NOTES
=====

The valabind integration forces us to do some changes in the r2 API.

These api changes are for:

  - Avoid keywords in function names

    Every language has its own keywords, r2api should try to workaround
    all those keywords to avoid collisions for bindings.

    Example: use, del, from, continue, etc..

    TODO: we need to review APIs, find better names for functions using
    those keywords, etc..

  - Review basic data structures

    Linked lists, hash tables, r_db, arrays, ... must be reviewed to
    fit with vala and swig basics to be able to use them with simple
    APIs or integrate them with the syntax sugar of the target language.

    Example:
      foreach (var foo in binls.get_symbols ()) {
        print ("%s 0x%08"PFMT64x"\n", foo.name, foo.offset);
      }

  - Unit testing

    Having bindings for python, perl, ruby, .. is good for unit testing
    because it hardly simplifies the way to test APIs, find bugs, ...

    TODO: write unit testing frameworks for perl, ruby, python, etc..

  - API unification for all languages

    All the previous development points are meant to reduce code in r2,
    avoid syntax exceptions, simplify api usage, and much moar ;)

SWIG is not complete, there are still so many bugs to fix and so many
unimplemented stuff. Here's a list of the most anoying things of it:

  - unsigned char * : not implemented