21
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NimAdvent Calendar 2018

Day 14

軽快に動くNimのREPLを作った

Last updated at Posted at 2018-12-13

Nim Advent Calendar の枠が空いてたのでストックを投下します。

実は既にnrplというのがあるのですが、私の環境(Nim0.19.0)だとnimbleでインストールした時にこける(開発が止まったままバージョンが上がって互換性がなくなったと思われます)のと、一回ずつ愚直にコンパイルしているようであんまり速そうではありません。そこでちょっと工夫して、PythonのREPL並みにサクサク動くものを作りました。

動作原理

実はNimにはNimScriptというバーチャルマシン上で動くサブセットが標準でついてきます。最初これはパッケージマネージャのnimble上で動く簡易的なやつかと思ってたんですが、Nimのコンパイル時計算はどうもこいつがやっているそうで、それならREPL的なやつが作れるんじゃないかと思ったわけです。

DEMO

replim.gif

これで等倍速です。かなりいい感じじゃないですか?

成果物

ここにおいてあります。
https://github.com/gmshiba/replim

あるいは

nimble install replim

でインストール出来ます。

注意

NimScriptの仕様というか限界でimpure(nimのみで書かれていない)なライブラリはimport出来ないようです。例えばnreとかhttpserverとかをimportするとエラー吐かれます。あしからず...

21
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?