World: r3wp
[!REBOL3 Extensions] REBOL 3 Extensions discussions
older newer | first last |
Gregg 21-Jul-2010 [1268] | What we probably should do is designate a PORT type for intertask messaging, and make it easy to use. Yes please. :-) |
Graham 21-Jul-2010 [1269] | Max, where is this parser for C header files that you're releasing/released today? |
Maxim 21-Jul-2010 [1270] | I'm hip deep in it right now... I'm implementing the last "feature" which is the ability to format command arguments differently than the original C function parameters. this will allow templating for extensions, just like in C++, and will also allow us to put litterals in the spec, so that one doesn't need to provide ALL parameters from the REBOL side. |
Graham 21-Jul-2010 [1271] | hip deep = 50% done? |
Maxim 21-Jul-2010 [1272] | this C header file: //--------------------------------- // r3t_integer_add // // test: print [ r3t-integer-add 1 0 " > expecting: " 1] // test: print [ r3t-integer-add 2 2 " > expecting: " 4] // test: print [ r3t-integer-add 2 3 " > expecting: " 5] // test: print [ r3t-integer-add 0 0 " > expecting: " 0] // command-format: [object!] extern int r3t_integer_add(int a, int b) will tell the tool, to provide an object interface to the function rather than to expect two integers. |
Graham 21-Jul-2010 [1273] | or do you have reallly long legs? |
Maxim 21-Jul-2010 [1274x4] | the engine, without this feature was working 100% . but its now undergoing open-heart surgery so its not currently working... no point in releasing just right now. |
there is also a lot of work to do in order to provide support for more datatypes, but that can be done concurrently by a few of us, once the tools is public. | |
I didn't release the other version, because this formatting changes the generator algorythm, so that any work people would do to extend the tool, would have to be re-coded. | |
I also want to add A LOT of comments to make the source more litterate. in fact I expect the source to contain more comment bytes than code. | |
Graham 21-Jul-2010 [1278] | What file did Carl say contains the new documentation? |
Maxim 21-Jul-2010 [1279] | not aware of any. |
Graham 21-Jul-2010 [1280x2] | reb-ext-lib.h seems to be it |
#define RXI_SET_FIELD(a,b,c,d) RXI->set_field(a,b,c,d) | |
Carl 21-Jul-2010 [1282x2] | Maxim, well, not too literate... or it gets in the way and starts looking like XML. |
G: that's it. | |
Maxim 21-Jul-2010 [1284x3] | its just a massive amount of comments, the reason being that I want this tool to be easy to maintain in the long run and or it to be easy to modify for people who have special needs. |
things are explained everywhere so that little is left "hanging in the air" . I want cause and effect to be explicit everywhere in the source. | |
you can always save/load the code to strip it ;-) | |
Pekr 21-Jul-2010 [1287] | Max - please define, WHEN are you going to be ready with your "last" feature, because judging upon your Glass project, which should be delivered months ago, we can only see a constant teasing, but nothing conrete being delivered ... |
Maxim 22-Jul-2010 [1288] | it should be done today. |
NickA 22-Jul-2010 [1289] | Wow, I was gone for a few days. Really exciting developments! |
Maxim 22-Jul-2010 [1290x2] | the assimilator is getting quite powerfull, we can now specify litteral values in the alternate command formats! this allows C functions to be called with some of the arguments filled-in by default and requires one-less argument from the REBOL side of things. |
and since we can specify as many alternate command formats as we want per C function, we can build a library of parameter-less rebol commands which call the C functions with usefull values built-in to the extension. | |
Graham 22-Jul-2010 [1292x5] | Has anyone else considered what needs to be done for intertask communications ... are we thinking maybe something like a RPC on the Rebol side? |
http://www.library.ipc.ac.nz/ | |
Nasa's deep space one IPC library http://www.cs.cmu.edu/~IPC/ | |
Looks like this stuff was originally designed to help various legs communicate with each other ... ( multi-legged robotic landers crawling across alien landscapes ) | |
Sounds like a dinosaur approach ... | |
Gregg 22-Jul-2010 [1297] | I've thought about it on and off. There are a million models to choose from. I don't think RPC is the way to go at all though. I'm for channels and messages. On a larger scale, I like the tuplespace model. |
AdrianS 22-Jul-2010 [1298] | I'd like a tuplespace implementation too - I've had a good experience using GigaSpaces Jini/JavaSpaces implementation. Very intuitive (and simple in terms of API) concept. |
Graham 22-Jul-2010 [1299x2] | Go for it guys |
Unless someone else wants to volunteer ? | |
Maxim 23-Jul-2010 [1301x3] | as a testament to what is now possible with the new assimilation engine, just look at how insanely flexible it is at allowing you to provide just about any interface to a command... using this information in the C header... // command-template: [obj [object!]] prefix: obj- suffix: 3 // command-name: rxt-iadd // command-template: [a [integer! decimal!] b [integer!]] // command-template: [obj [object! x y]] prefix: xy- // command-name: plus10 // command-template: [10 [litteral!] value [integer!]] extern int r3t_integer_add(int a, int b) ;-------------------------------------- one ends up with this command interface... all calling the same C function. rxt-module: {REBOL [ Title: {r3-test-extension extension} Name: r3-test-extension Type: extension Exports: [] ] rxt-obj-r3t-integer-add3: command [ obj [object!]] rxt-rxt-iadd: command [ a [integer! decimal!] b integer!] rxt-xy-rxt-iadd: command [ obj [object!]] rxt-plus10: command [ value integer!] rxt-r3t-integer-mult: command [ a [integer! decimal!] b [integer! decimal!]] ;---------------------------------------- note that in this setup, auto-exports is set to false and an rxt-prefix was added to every command name automatically. |
also note that the command templates are not required, they just allow you to manipulate how a C function is mapped to REBOL. there are still many features to come, but right now I am working on finishing the last phase of assimilation which is the actuall extensigon C source code generation. | |
btw, this command rxt-r3t-integer-mult: command [ a [integer! decimal!] b [integer! decimal!]] was automatically generated by a function without any command-template, later in the header file. | |
Pekr 23-Jul-2010 [1304] | Max - saw your latest blog post. Hope the redesign of assimilation engine does not take too long :-) |
Maxim 23-Jul-2010 [1305] | the above show the first sings of its power :-) |
Robert 23-Jul-2010 [1306] | Max, I can't see the benefit yet. What I write in the C header I could write directly on the Rebol side. |
Maxim 23-Jul-2010 [1307] | well, the fact that you don't have to write the command extension code itself in order to implement those 5 different interfaces is already a benefit. |
Robert 23-Jul-2010 [1308] | But those 5 lines of Rebol are written in 5 minutes. |
Gregg 23-Jul-2010 [1309] | Adrian, I like the tuplespace model for its simplicity as well. |
Anton 23-Jul-2010 [1310] | Maxim, typo: litteral -> literal |
Maxim 23-Jul-2010 [1311] | oh yes. |
BrianH 23-Jul-2010 [1312] | Look here: http://www.rebol.net/wiki/External_Callbacks |
Maxim 23-Jul-2010 [1313] | thanks for that |
BrianH 23-Jul-2010 [1314] | It's a discussion page, so it's not in any way complete yet. |
Maxim 23-Jul-2010 [1315] | I know... I meant thanks for setting it up. |
BrianH 23-Jul-2010 [1316] | Carl did :) |
Maxim 23-Jul-2010 [1317] | I just added GC notes.. |
older newer | first last |