11 Temmuz 2019 Perşembe

LuaJIT

Lua için söylenebilecek en kötü özellik büyük ihtimal performansı olur du(yorumlanan dillerin genel sorunu) ama Allahtan bu konuda büyük bir imkan var. LuaJIT, Lua programlama dili(5.1 sürümü ile tam uyumlu) için bir JIT(Just-In-Time Compiler) derleyicidir. JIT 'in temel özelliği olarak normal sürümlerden kat be kat hızlı performans sağlanır. Devamdaki  yaygın programlama dilleri için bir performans testidir:







Luajit 'in klasik Lua'a nispeten diğer tercih sebebi de üstün dış fonksiyon arayüzü(FFI) sağlamasıdır. (FFI diğer derste ele alındı).

Tüm masaüstü işletim sistemleri için derleme yapmak için(windows, linux,mac) yapmanız gereken tek şey https://github.com/LuaJIT/LuaJIT adresinden luajit kaynak kodlarını sağ üsteki "Clone or download" kısmından "Download ZIP" seçeneği ile indirip bir dizine açmak. Sonra komut istemcisinden src dizinine geçip make talimatı vermek(windows derleyici seti ile gelmediği için MinGW-W64 'i  indirip bir dizine açıp, bin dizinini path'e eklemeniz lazım sonra mingw32-make talimatını verebilirsinz ).

Luajit i Windows'da Visual Studio ile derlemek için:

0-PC'nizde Visual Studio (2019) kurulu olmalı.
1- https://github.com/LuaJIT/LuaJIT adresinden luajit kaynak kodları indirilip bir dizine çıkarılır.
2-"x64 Native Tools Command Prompt for VS 2019" çağrılıp buradan luajit "src" dizinine geçilir.
3-ve msvcbuild.bat yazıp, çalıştırılır(argüman olarak static anahtarı geçilirse sonucun ne olacağı malum).

Nihayetinde Lua ile interaktif etkileşim arayüzü olan bağımsız yorumlayıcı luajit.exe(lua.exe) ve c/c++ projelerimize ekleyebileceğimiz 64-bit lua51.dll lua51.lib oluşur(Artı diğer bir derste ele alacağımız üzere baytkod ve nesne kodu oluşmada lazım olan jit dosyaları oluşur) .



clang ile derleme isteniyor ise:

msvcbuild.bat dosyasındaki cl -> clang-cl e ve link->lld-link e çevrilmeli. ve lj_def.h'deki 258-261 satırlarında alınan hata sebebiyle silinmeli(Bu silmenin daha sonra bir sorun teşkil edip etmeyeceğini bilmiyorum).


Android için derleme yapmak için:
1- android-ndk-r24 indirip c dizinine açın ( https://dl.google.com/android/repository/android-ndk-r24-windows.zip )
2-msys2 ile gcc toolchain'i kurun (https://oop-turkiye.blogspot.com/2020/03/merhaba-dunya-toolchain-ve-ide.html)
3-git'i indirip kurun ( https://git-scm.com/ )
4-luajit kaynak kodlarının src dizinine geçip burada sağ tıklayıp "git bash here" ile git bash 'ı açın.
5-Ve devamdaki satırları girin:

export NDKDIR=C:/Users/x64/AppData/Local/Android/Sdk/ndk/24.0.8215888
export NDKABI=26
export NDKARCH="x86_64" #aarch64 or x86_64
export NDKBIN=$NDKDIR/toolchains/llvm/prebuilt/windows-x86_64/bin
export NDKCROSS=$NDKBIN/$NDKARCH-linux-androidabi-
export NDKCC=$NDKBIN/$NDKARCH-linux-android$NDKABI-clang
mingw32-make HOST_CC="gcc -m64" CROSS=$NDKCROSS \
     STATIC_CC=$NDKCC DYNAMIC_CC="$NDKCC -fPIC" \
     TARGET_LD=$NDKCC TARGET_AR="$NDKBIN/llvm-ar rcus" \
     TARGET_STRIP=$NDKBIN/llvm-strip TARGET_SYS="Linux" clean default


ios için derleme(arm64):

Mac Os Terminalden şu komutu kopyala yapıştır yapın(Pc 'de haliyle xcode kurulu olmalı).

ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
ICC=$(xcrun --sdk iphoneos --find clang)
ISDKF="-arch arm64 -isysroot $ISDKP"
make DEFAULT_CC=clang CROSS="$(dirname $ICC)/" \
TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS


simülasyon için:

ISDKP=$(xcrun --sdk iphonesimulator --show-sdk-path)

ICC=$(xcrun --sdk iphonesimulator --find clang)

ISDKF="-arch arm64 -isysroot $ISDKP"

make DEFAULT_CC=clang CROSS="$(dirname $ICC)/" \

TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS

Hiç yorum yok:

Yorum Gönder