zturtleman / ioq3ztm

Automatically exported from code.google.com/p/ioq3ztm for archive purposes. See zturtleman/spearmint for active project.
GNU General Public License v3.0
0 stars 2 forks source link

Replace QVMs with LLVM bitcode? #20

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Pros;
  * The QVM compiler does not meet Debian Free Software Guidelines, whereas LLVM does.
  * LLVM supports C++, which would allow the game logic to be written C++.

Neutral;
  * The LLVM bitcode is less limited (and thus less secure) then QVM, but no less so than DLLs (which is what newer id Software games have).
  * As far as I know the LLVM bitcode would not have memory protection, but I am interested in removing it anyway (see issue 19).
  * I think the LLVM bitcode could call any non-static internal engine function (`trap_*` functions would not be necessary), which I think the DLLs can do as well.

Cons;
  * This makes compiling game logic more complicated. (Either people need to install clang and llvm-link, or I need to include the source in the code repo and add to build system.)

It seems to me using LLVM bitcode would be like having cross-platform DLLs 
(which are easier to load from pk3s?).

Original issue reported on code.google.com by ZTurtleMan on 25 May 2012 at 10:25

GoogleCodeExporter commented 9 years ago
LLVM has an ARM JIT compiler, so it should probably be faster than the QVM 
interpreter.

Original comment by ZTurtleMan on 4 Jul 2012 at 11:52

GoogleCodeExporter commented 9 years ago
LLVM support in Unvanquished limits what functions LLVM bitcode can access in 
engine. (So third Neutral point wouldn't apply.)

I think the main issue with LLVM bitcode support is integrating into the build 
system. Clang and llvm-link source code seem hard to include, and not including 
them makes it harder for people to make cross-platform mods. (Compiling clang 
and llvm-link isn't fun...)

Original comment by ZTurtleMan on 10 Dec 2012 at 2:44

GoogleCodeExporter commented 9 years ago
Using LLVM seems like too much work to compile the engine / mods.

Original comment by ZTurtleMan on 8 Feb 2013 at 8:30