Lua 学習:FFI Library

2016-01-12 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
6、3、0、0、0、 1、0、0、0、0(40)で、換算ポイント 85pt 。
「Firefox」久し振り5位から6位にダウン。
「化学業界」「硝子業界」「e-radio」「グルコサミン」、
「Python」「FM COCOLO」bg値変動のみ。
「Perl」「C言語」「FM青森」全く変化無し。
・-・ - -・

さて、本文。

Lua”と“LuaJIT”の違いについて。

一番の違いは、
LuaJIT : Just-In-Time Compiler (JIT) for the Lua …
で書いた様に、
その名前:
  LuaJIT is a Just-In-Time Compiler (JIT) for
   the Lua programming language.
の如く、
“JITコンパイラ”ですね。


だが、もう一つ機能的に大きな相違点がある。


Foreign function interface
  Foreign function interface (FFI)とは、あるプログラミング言語から
  他のプログラミング言語で定義された関数などを利用するための機構。
  主に高水準言語からC/C++などの関数やメソッドを呼び出し、
  OS固有の機能などを利用するために使用されることが多い。

  FFIという用語はCommon Lispにおける仕様に由来し、Haskellでも
  同様にFFIという用語が使われている。
  Adaなどでは言語間バインディング(または単にバインディング,
  language binding)と呼ばれている。

  FFIという用語自体に「関数(Function)」という言葉が含まれているが、
  多くのFFIでは単に他言語で書かれた関数が呼び出せるだけではなく、
  オブジェクトのメソッドを呼び出したり、その返り値を取得し、
  データ型やクラスを言語間で相互変換することができる。


つまり、“FFI”機能がある点ですね。

そして、
“LuaJIT”の「FFI Library」には、

  The FFI library allows calling external C functions and
  using C data structures from pure Lua code.

  The FFI library largely obviates the need to write
  tedious manual Lua/C bindings in C.
  No need to learn a separate binding language
   - it parses plain C declarations!
  These can be cut-n-pasted from C header files or reference manuals.
  It's up to the task of binding large libraries without
  the need for dealing with fragile binding generators.

  The FFI library is tightly integrated into LuaJIT
  (it's not available as a separate module).
  The code generated by the JIT-compiler for accesses
  to C data structures from Lua code is on par with
  the code a C compiler would generate.
  Calls to C functions can be inlined in JIT-compiled code,
  unlike calls to functions bound via the classic Lua/C API.

===程度は如何かナ?

  FFI ライブラリは、外部の C 関数を呼び出すと、純粋な Lua コードから
   C データ構造を使用できます。

  FFI ライブラリ主 C で面倒な手動 Lua/C バインディングを
  記述する必要があります。
  個別のバインドの言語を習得する必要はありません、
  普通の C の宣言を解析!カット ペースト リファレンス マニュアルまたは
   C ヘッダー ファイルから指定できます。
  それは壊れやすいバインド ジェネレーターに対処することがなく
  大規模なライブラリのバインディングの作業次第です。

  FFI ライブラリは、LuaJIT
  (別のモジュールとして利用可能ではない)にしっかりと統合されます。
  Lua コードがコードと同等ですから C のデータ構造にアクセス用の
  JIT コンパイラによって生成されたコードに、
  C コンパイラが生成されます。
  C 関数の呼び出しは、古典的な Lua API 経由の関数の呼び出しとは異なり、
  JIT コンパイルされたコードのインライン展開できます。

===ダメですネ。

そこは目を瞑る。


LuaJITのFFI機能を使うと、
(恰も)C言語でコーディングしている様な感じで、
C Library Function
を利用したコードが書ける???

そう、
“Python”では、1年8ヶ月前(2014-05-12)の記事:
Python 学習:インタプリタの拡張?
で書いた“ctypes”に相当する?

これは重点学習項目ダ。


本日はここまで。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


151221
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク