Hello, Tarantool/Box is a NoSQL in-memory database written in Objective C. The code is licensed under simplified BSD license.
The code was initially written in pure C, and slightly more than a year ago we made a switch to Objective C for its support of exceptions and @finally clause. Unfortunately, the Objective C runtime shipped with GCC has a number of defects, which we suffer from: - the runtime API has changed significantly between gcc 4.4, 4.6 and 4.7, so we effectively limit our users, who often build the software from source, to a certain version of gcc. - catch (...) doesn't catch C++ exceptions, and LuaJIT library, which we use, throws C++ exceptions - Objective C method dispatch is expensive enough to slow down our benchmarks in double percent digits (>10%), whenever we try to make our C code more object-oriented and use methods instead of function pointers. For these and a number of other reasons we decided to try the GNUSTEP Objective C runtime. Unfortunately, GNUSTEP runtime is still not popular among Linux distributions, needless to say some of our users still use CentOS 5.2, which doesn't even have a modern GCC. For this reason we plan to include the sources of the runtime into Tarantool/Box code base (http://github.com/mailru/tarantool), as we already do with LuaJIT, and link statically with it. This way, our users can download and compile Tarantool with minimal external dependencies. I'd love to hear your feedback on our decision to switch and the chosen approach. -- http://tarantool.org - an efficient, extensible in-memory data store _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
