Hi. I finished and pushed to ZHAW Gitorious Repos a new version of
KIARA. This is a major feature release.
* New features:
1. First version of KIARA preprocessor tool.
The current version supports only C language. C++ support is not fully
implemented yet.
By running kiara-preprocessor --help you can get a list of command line
options.
Usage example:
On Linux:
cd kiara
LLVM_INCLUDE=$(llvm-config --libdir)/clang/$(llvm-config --version)/include
KIARA_INCLUDE=$(devenvGetModuleCPPPATH kiara)
BOOST_INCLUDE=$(devenvGetModuleCPPPATH boost)
kiara-preprocessor ./src/tests/aostest.c -o out.c -lang c -isystem
/usr/include -isystem "$LLVM_INCLUDE" -I "$KIARA_INCLUDE" -I
"$BOOST_INCLUDE"
You may need to fix include directives produced by the preprocessor. The
resulting file out.c should then contain same macros as in
src/tests/aostest_kiara_client.h.
In the similar way macros for server example are generated:
kiara-preprocessor ./src/tests/aostest_server.c -o out.c -lang c
-isystem /usr/include -isystem "$LLVM_INCLUDE" -I "$KIARA_INCLUDE" -I
"$BOOST_INCLUDE"
On Windows:
You need to find out path to the includes of your MSVC compiler.
For example my path is: c:\Program Files (x86)\Microsoft Visual Studio
10.0\VC\include.
Command line in MSYS Git/Devenv environment:
MSVCINC=/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include
KIARA_INCLUDE=$(devenvGetModuleCPPPATH kiara)
BOOST_INCLUDE=$(devenvGetModuleCPPPATH boost)
cd kiara
kiara-preprocessor src/tests/aostest.c -o out.c -msvc -D _MSC_VER -lang
c -isystem "$MSVCINC" -I "$KIARA_INCLUDE" -I "$BOOST_INCLUDE"
Same for server:
kiara-preprocessor src/tests/aostest_server.c -o out.c -msvc -D _MSC_VER
-lang c -isystem "$MSVCINC" -I "$KIARA_INCLUDE" -I "$BOOST_INCLUDE"
KIARA preprocessor processes description of client-side functions and
server-side services embedded in form of short macros in the application
source code. See examples in
./src/tests/aostest.c
./src/tests/aostest_server.c
I will document preprocessor in more detail as soon as possible.
2. New trivial binary protocol (TBP) that can be used as a reference
implementation for implementing binary protocols in KIARA.
It is located in src/KIARA/Components/TBP directory. JSONRPC
implementation is moved to src/KIARA/Components/JSONRPC.
For adding new protocol just create new directory with source code and
adjust src/SConscript file.
3. Support for multiple protocols loaded dynamically.
The protocol used by KIARA is not anymore hardcoded. The server
specifies protocol when registering client with the call to:
kiaraAddService(server, path, protocol, service);
to the protocol string is added suffix "_kp.bc" (e.g. jsonrpc_kp.bc,
tbp_kp.bc). This LLVM BC file is loaded at the runtime, and should
contain protocol implementation supporting KIARA serialization API. (kp
stands for Kiara Protocol).
As a part of negotiation process the client gets name of the used
protocol and will load the same BC file.
Note: even if it is possible to select optimal protocol between multiple
available (e.g. binary and text), I didn't implement it yet.
4. Added an alternative JIT-engine: MCJIT.
LLVM's MCJIT will replace in a future old JIT engine, so I just finished
and merged an MCJIT implementation done by a student.
Currently MCJIT is not active by default. You can force it by either:
set environment variable KIARA_JIT_ENGINE to MCJIT:
export KIARA_JIT_ENGINE=MCJIT
or
modify/add following KIARA configuration file:
~/.kiara/main.cfg:
{
"jit" : {
"useLegacyJIT" : false
}
}
5. Test suite, started with source devenv/tests.sh, now tests all
combinations of JIT engines and KIARA protocols.
When adding new protocol please update devenv/test_examples.py
6. Added missing macro KIARA_CXX_STRUCT_ARRAY_MEMBER, this is also
updated in the documentation.
There are no changes in installation instructions.
Best,
Dmitri
You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy Cookies policy