2011年10月8日土曜日

Win64でnewLISPをコンパイルする

newLISPのソースコードを改造して、Win64環境でコンパイルできるようしてみました。64ビットプログラミングの練習とnewlispの内部動作を調べることを目的とした個人的なビルドなので、とりあえず動く程度の出来なのは勘弁してください。基にしたnewLISPのバージョンはv.10.3.3です。
作成したバイナリはこのエントリの最下に置いておきます。GPLライセンスに則るならソースか差分パッチも公開すべきなんだろうけどどうしよう…。

パッケージに同梱しているマニュアル(doc/INSTALL)によるとnewLISPがコンパイル可能なメモリモデルはILP32とLP64のみらしく、Win64のメモリモデルであるLLP64はサポートされていない様子。 newLISPではlong型を基本として、整数もポインタも同じビット長として扱っているため、その辺も考慮してソースを改造する必要があります。

NOTE, that newLISP can only be compiled for the IPL32 and LP64 memory models.

主要なメモリモデルの違いは以下の通り:

ILP32 intとlongとポインタ型が32ビットのモデル。一般的な32ビット環境。
LP64 longとポインタ型が64ビットのモデル。64ビットLinuxではこの環境になる。
LLP64 intとlong型が32ビットで、long longとポインタ型が64ビットのモデル。別名IL32P64。

公式サイトにてWin32バイナリが配布されているのでWin64バイナリ自体にメリットは特にないんですが、将来的にWin64バイナリのコンパイルがサポートされたら幸せになれるかもしれません(主に私が)。

コンパイル環境

  • Windows7 amd64
  • MinGW-w64 - TDM-GCCをインストールした
  • CygwinまたはMSYS - tarballの解凍など、シェル環境に必要

download (Size:272kB)

2011年7月29日金曜日

newLISP v.10.3.2リリースノート翻訳

安定版となるnewLISP v.10.3.2がリリースされていたのでリリースノートをざっくりと翻訳。
newLISPダウンロードページ

とりあえず、newlisp本体とjson.lspが文字列内部のunicodeエスケープ(\unnnn)を解釈してくれるようになったこと、ココには載ってないけどget-urlのカスタムヘッダーのバグが修正されたことが嬉しい。

原文はこちら。配布ファイルのdoc/CHANGESも参照のこと。

newLISP® v.10.3.2 リリースノート

Addtions (追加機能)

  • 文字列が処理可能なクオート文字にUnicodeエンコードを追加。
    例として"\u03b1\u03b2\u03b3"はギリシャ文字"αβγ"に変換される。 この機能はUTF8版newLISPで利用できる。

Other improvements (その他改良点)

  • 自己参照リストの変更におけるエラーメッセージを改良
  • Implicit indexingのエラーメッセージを改善
  • MS Windowsのパス名に利用されるMBCS(Multi Byte Character Set)を理解するように
  • filter, index, clean, exists, for-all関数のスピードアップ
  • series関数の第2引数に関数が与えられた際の処理速度向上
  • find-all関数の第3引数が与えられた際の処理速度向上
  • map関数のメモリ管理と処理速度を改善
  • json.lspがバックスラッシュを含む文字列を処理可能になった

Bug fixes (バグフィックス)

  • filter, index, clean, exists, for-all関数における空リストの扱いを修正
  • inc,dec,++,--関数が引数チェックをしていなかったのを修正
  • dotree関数にブール引数を渡すとクラッシュする問題を修正
  • multi-lineモードにおけるバッファオーバーフローを修正
  • timer関数を再帰的に利用した際のバグを修正
  • read-line関数のEOF指示子をクリアしていなかったことによるバグを修正
  • xfer-event関数が渡す引数を転送した総バイト数から現在転送中のバイト数に変更

Compatibility (前バージョンとの互換性)

このリリースを実行するためのMac OS Xの最小バージョンはLeopard 10.5です。 このリリースはMac OS X Tiger 10.4では動作しないでしょうが、Mac OS X用の デフォルトMakefile(makefile_darwin_utf8)ではまだコンパイルが可能です。

v.10.3.0からv.10.3.2のバージョン遷移において、ほとんどのスクリプトは修正なしに動作する。
xfer-event関数の仕様が変更されたので、その点のみ注意すること。

2011年6月14日火曜日

[newLISP]cygwinでのコンパイルを通す

cygwinからnewlispをコンパイルしようとすると
nl-sock.c:2010: error: ‘ICMP6_FILTER’ undeclared (first use in this function)
と言われてコンパイルエラーが起こってしまうので、それを解決します。
  1. $CYGWIN/usr/include/netinet/icmp6.h があるかどうか確認する。あれば2.を飛ばして3.へ。
  2. GNU謹製のicmp6.hを拾ってきて1.のパスに追加する。(→icmp6.h GNU - Google 検索
    ※cygwinのインストーラに上記のヘッダがあれば尚良しですが、見つけられなかったので…
  3. 以下のパッチを参考に nl-sock.c を書き換える。
    --- nl-sock.c.orig Tue Jun 14 12:52:46 2011
    +++ nl-sock.c Tue Jun 14 12:51:30 2011
    @@ -60,6 +60,7 @@
     #endif /* end UNIX */
     
     #ifdef CYGWIN
    +#include <netinet/icmp6.h>
     #define ICMP_ECHO 8
     
     struct icmp
    
  4. コンパイルする

2011年6月10日金曜日

端末の表示崩れをなんとかする

ターミナルの表示が崩れたときの対処法 - Clouder::Bloggerより。少し改良

端末上でバイナリファイルの中身をうっかり出力させてしまってウィンドウの表示がえらいことになることが時々あったので、この解決方法はありがたいです。ただしBSD由来のshでは、echoコマンドがエスケープシーケンスを理解するためのオプション(-e)を理解してくれないので注意(ksh,zshなど他のシェルまでは分かりませんが)。

参考リンク

2011年6月8日水曜日

ユニークなURL

URLの短さとサービスのシンプルさが面白いなーと感心したサイト。若干ネタっぽいですが。
ifconfig.me
ifconfigコマンドのようなネットワーク情報(というよりブラウザ情報)を返してくれるサービス。
端末上で curl ifconfig.me と打ち込めば自分のIPアドレスが返ってくるなど、ブラウザだけでなく端末から利用する際にも重宝する。JSON, XML形式にも対応している。
jsonip.com
名前の通り、自分のIPアドレスをJSON形式で返すだけのサービス。
URLにパス名を指定するとコールバック形式のJSONが返ってくる。
http://jsonip.com/getip => getip({"ip":"72.14.203.191"});
httpstat.us
HTTPステータスコードを返すだけのサービス。
例えば httpstat.us/200 と打ちこめば 200 OK が返ってくる。

2011年5月28日土曜日

めんまフォント

アニメ「あの日見た花の名前を僕達はまだ知らない。」の公式ページで配布されている「めんまフォント」が気になったのでインストールしてみた。…が英数字や記号の一部が表示されないおかげでかゆうま(初代バイオハザード:飼育員の日記)に見えてしまう件。
ちなみにxyzzyでは利用できないみたい。同じTrueTypeフォントのARISAKAフォントやうずらフォントは使えるのになぜ?

いろいろ

マシンの新調

デスクトップPC+Windows7買いました。
今までのノートPCが5年以上前のモノのため、さすがにスペック的に見劣りしてたので。 新マシンはHPの100円アップグレードキャンペーンから選択。 OSを64ビット版Windows7にしたり、プロセッサをAMDのPhenom II X6にしたりと色々冒険してみましたが、まあ何とかなるかと思います。メモリ2Gはおそらく買い替えになるんだろうな…。

レンタルサーバー

実験してみたいことがあったのでアイネットディー様のレンタルサーバーの激安プランを借りてみました。URLはlambda.que.jpです。 レンタルサーバーを選ぶにあたって気に入ったのは、OSが今まで触ったことのなかったFreeBSDだったことと、格安プランでもSSHが利用できる点ですね。あまり迷惑がかかることはできませんが、自前でプログラムをコンパイルもできるので実験環境にはもってこいです。
ブログの方はまだこちら(Blogger)を利用することになります。

2011年5月14日土曜日

今日の無題

昨日Bloggerにログインしようとしたらこんなメッセージが表れたので、メンテナンス中かと思ったらどうやら結構深刻な障害だったらしい。現在は復旧している様子。

2011年4月5日火曜日

newLISPのコード片を貼り付けるサイト

Pastebin.comがnewLISPのシンタックスハイライトに対応しているらしいので試しに貼り付けてみる。
見た目は他のSchemeのシンタックスとあまり変わらないから分かりにくいけど、ちゃんとキーワードが強調表示されているみたい。

探してみたら他にもあったので手当たり次第にリンクしておこう。
基本関数へのマニュアルリンクが付与されるおまけつきとか。なにこれ素敵じゃない。

2011年3月14日月曜日

It works!

11日に発生した東北地方太平洋沖地震ですが、私の住んでいる新潟は軽く揺れた程度で大きな被害はありませんでした。知り合いと身内もどうやら無事みたい。 といっても未だに余震が続いている状態なので油断はできませんが…。

報告は以上。またいつも通りの生活に戻ります。

2011年2月16日水曜日

今日の無題

2chのCentOSスレより
バックアップツールに関する話題とリンクがあったのでメモ用にコピペ。
なんとなく個人利用向けとはツールとは違う気もするが…

※CSSは2chブラウザ Chaika のものを拝借。