NYAGOS 4.3 で GopherLua が採用される

no extension

(正式版が出たので内容を更新した 2018-05-07)

NYAGOS 4.3 で LuaGo 言語実装のひとつである GopherLua が採用された。

以下に変更点をまとめて紹介する。

  • Use Gopher-Lua instead of lua53.dll #300
    • nyagos with lua53.dll (mains.exe) can be built with cd mains ; go build
    • nyagos with no Lua (ngs.exe) can be built with cd ngs ; go build
  • Made nyagos.option.cleanup_buffer (default=false). When it is true, clean up console input buffer before readline.
  • set -o OPTION_NAME and set +o OPTION_NAME (=nyagos.option.OPTION_NAME= on Lua)
  • Buffer console-output ( go-colorable and bufio.Writer ) ^ Fix: Typing C-o looks to raise hang up until Enter or ESCAPE is typed (on 4.3beta) #303
  • Fix: chcp did not work. (chcp was aliaes to update memory of screen width)
  • Add ls -L which shows information for the file refernces rather than for the link it self. (because ls could not show the directories in OneDrive )

  • lua53.dll のかわりに Gopher-Lua を採用 #300
    • 旧来の lua53.dll 版 nyagos (mains.exe) は cd mains ; go build でビルド可能
    • Lua無し版 nyagos (ngs.exe) は cd ngs ; go build でビルド可能
  • nyagos.option.cleanup_buffer を追加(デフォルトは false)。true の場合、一行入力の前にコンソールバッファをクリアする
  • set -o OPTION_NAMEset +o OPTION_NAME を新設(nyagos.option.OPTION_NAME= on Lua と等価)
  • コンソール出力をバッファリングするようにした ( go-colorable and bufio.Writer )
  • C-o を押すと Enter か Escape が押されるまでハングしたように見える不具合を修正
    • (ライブラリを修正: go-box)
  • chcp が動作しない不具合を修正 (同コマンドは画面幅取得のため別名定義していた)
  • シンボリックリンクの先を参照するオプション ls -L を追加(OneDrive内のディレクトリーが表示できなかったため)

起動時のバージョン表記は以下のようになる。

Nihongo Yet Another GOing Shell 4.3.0_2-amd64 by go1.10.2
Powered by GopherLua 0.1
(c) 2014-2018 NYAOS.ORG <http://www.nyaos.org>

私も以前 LuaGo 言語実装についてちょろんと調べたことがあるのだが

このときは別のパッケージでしかも args などのグローバル変数の設定の仕方がよく分からなくて放置していたのだ(ゴメンペコン)。

Go 言語は組込み用途のコードも書けるので,そこに Lua エンジンを(Go 言語ネイティブで)組み込めるというのは意義が大きいと思う。 例えば現在のツールの多くは設定情報を YAML や TOML などで記述するが, Lua で設定を記述できるのなら,ちょっとしたロジックを組み込むことも可能になる。 実際に NYAGOS ではコマンドの alias に Lua コードを組み込むことができる。

NYAGOSGopherLua を組み込んでくれるのなら,是非ソースコードも読んでノウハウを勉強したい。

【追記 2018-05-07】 4.3.0 にアップグレードして起動した際に

C:\Users\username\AppData\Roaming\NYAOS_ORG\amd64.nyagos.luac line:1(column:1) near '←':   Invalid token

と警告が出た。 古いファイルなのかな?

この場合は C:\Users\username\AppData\Roaming\NYAOS_ORG フォルダの中身を掃除すればいいようだ。 なお,このフォルダにある nyagos.history ファイルは名前の通りコマンド履歴なのでご注意を。

【追記 2018-05-07】 NYAGOS 4.3.0_1 がリリース

不具合の修正のみ。

  • Fix: nyagos.d/start.lua did not worked because the member rawargs of alias-function’s argument was not implemented.
  • Fix: the return value of alias-function was not evaluted.
  • Fix: for the script in -e option, arg[] was not assinged.
  • Fix: On -f & -e option, warned as getRegInt: could not find shell in Lua instanc e
  • Fix: batchfile cound not return the value of exit /b as ERRORLEVEL

  • nyagos.d/start.lua が動作していなかった不具合を修正 (エイリアス関数の rawargs パラメータが実装されていなかった)
  • alias 関数の戻り値が評価されていなかった不具合を修正
  • -e オプションのスクリプト向けに、arg[] に引数が代入されていなかった
  • -e,-f オプションで、getRegInt: could not find shell in Lua instance が表示される不具合を修正
  • バッチファイルが exit /b の値を ERRORLEVEL として返せなかった不具合を修正

【追記 2018-05-07】 NYAGOS 4.3.0_2 がリリース

不具合の修正のみ。

  • #305: Fix issue that user’s .nyagos was not loaded again (Thx! @erw7)

  • #305: ユーザの .nyagos が二回目以降ロードされない不具合を修正(Thx! @erw7)

【追記 2018-05-10】 NYAGOS 4.3.0_3 がリリース

不具合の修正。 着々と改善されています。

  • Fix: forgot implement nyagos.setalias , nyagos.getalias (alias { CMD=XXX} did not work.)
  • Fix: that the element [0] of the table value returned by alias-function was not used as the new command name to evaluate.
  • Fix: doc/09-Build_*.md about how to download sourcefiles from github

  • nyagos.setalias, nyagos.getalias の実装が漏れており、alias { CMD=XXX} が動かなくなっていた
  • エイリアスの戻り値でテーブルが与えられた時、コマンド名として解釈すべき、要素[0]が使われていなかった不具合を修正
  • doc/09-Build_*.md: github からのソースダウンロード方法についてドキュメント更新

【追記 2018-05-13】 NYAGOS 4.3.0_4 がリリース

不具合の修正。 着々と改善されています。

  • Fix: #309 nyagos.getkey() raised panic (Thx @nocd5)
  • Fix: error-message when command lnk’s target is not *.lnk nor exist.
  • Fix: the cursor blink was switched to off on the child process.

  • Fix: #309 nyagos.getkey() が使えない不具合を修正 (Thx @nocd5)
  • lnk コマンドの宛先が *.lnk でなかったり存在しなかった時のエラーメッセージを修正
  • 子プロセスのカーソルがオフになってしまう不具合を修正

ブックマーク