discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Switching to libobjc2


From: Konstantin Osipov
Subject: Switching to libobjc2
Date: Thu, 28 Jun 2012 11:20:00 +0400

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]