hmLJはLuaJIT v2.0.4の機能の全てを踏襲しています。 しかし、素のLuaJITの状態では
といった点で大きな問題が発生します。
そこでhmLJでは、特別に以下のような「修正」や「API追加」が施されています。
レガシー文字列であるcp932(sjis)を中心とする秀丸マクロ内外での使い勝手を向上するため、 cp932(sjis)の文字コードで記述されたLuaコードが原則そのまま取り扱えるようになっています。 cp932の文字を対象とするための専用の関数なども基本的なものなら取り揃えています。
独自拡張を施しており、その中には、Lua 5.2向きに書かれたスクリプトを互換動作させるような修正も含まれます。 Lua5.2の深層機能を利用していない限り、Lua5.2のスクリプトも極めて高い確率で動作します。
Lua5.3にて導入されたビット演算子こそありませんが、Lua5.3で追加されたLua関数の多くが、hmLJにも実装されています。 よって、Lua5.3向けに記述されたスクリプトすらも、それなりに高い確率で動作します。
luaのprint関数と同じですが、出力先が「秀丸デバッグモニター」など「DebugMonitor」系ツールとなります。 (これは、hmPyやhmRbと共通仕様となります)
Lua言語では準標準ライブラリともいっても差し支えない「lfs」ライブラリを追加しています。
luajitに元々備わっているbitライブラリとは別に、 Lua5.2の資産でも流用しやすいように、5.2と同一動作のbit32ライブラリも追加されています。
stringライブラリやutf8ライブラリのcp932版として、 (cp932.len、cp932.upper、cp932.lower、cp932.reverse、cp932.sub、cp932.char、cp932.codepoint、cp932.codes、 そして、sjisをutf8へと変換するための cp932.encode(文字列, "utf8")) が追加されています。
luaの5.3にて新たに加えられたmath関数を持っています。 (math.type、 math.ult、math.mininteger、math.maxinteger、math.tointeger、math.round(x [, precision ])))
luaの5.3にて新たに加えられたstring関数を持っています。 (string.pack、string.unpack)
string.getencoding(文字列) が追加されています。 主に対象の文字コードが「utf8」か「cp932」かを判定するための関数となります。 (その他も判定可能ですが、誤判定が多くなるでしょう)
nilもしくは空のテーブルであることを判定するtable.emptyが追加されています。
luaの5.2の機能に準ずる 2つの関数を搭載しています。 (table.unpack / table.pack)
luaの5.3にて新たに加えられたtable関数を持っています。 (table.move)
luaの5.3にて加えられたutf8系ライブラリを全て持っています。 (そして、utf8をcp932に変換するための utf8.encode(文字列, "cp932") )が特別に追加されています。
cjsonライブラリが特別に追加されています。 外部に保存するための永続データ用APIがデフォルトで1つ搭載されていると使い勝手が良いと判断したためです。