InteLib は、呼び出し規約に関わらず、追加のプリプロセッシングも無しで C++ プログラム中に Lisp/Scheme プログラムを書けるようにする C++ クラスによるライブラリです。「Lisp/Scheme モード」の時でも C++コンパイラが受け入れるコードを書くことができ、それが Lisp/Scheme に似ていたとしても、それは純粋な C++ なのです。
Only some internal architecture changes are included into it in order to make it possible to have atomic tokens that evaluate in their own manner (that is, the concept of a symbol is generalized). This version can be ignored if you doubt whether this is useful to you.
The most notable change (although user-invisible) is that there's now the $intelib/genlisp/library directory that contains the library functions that are common for Lisp and Scheme. A lot of copy and pasted code is eliminated. Several bugs are fixed. Please be warned that the function SUBSTRING now interprets its arguments as start/end instead of index/length, to comply with r5rs.
This release includes the following changes. First of all, another two classes were renamed to conform to the rules: former LPackage and SchPackage are now LPackageRef and SchPackageRef so that it is clear they are just smart pointers and not master pointers. The second change is that the method Apply() is added to both LReference and SchReference classes. The last change is a minor fix that lets InteLib build on 64-bit platforms.
All classes of the library are now documented with Doxygen-style comments. SStream, LContext, and SchContext were renamed to SStreamRef, LContextRef, and SchContextRef, respectively, which might require certain changes within your code.
The reader has been generalized so that it can be reprogrammed not only for Lisp-like languages, but also for more complicated languages, such as Planner. It still cannot be tuned for Prolog because the reader uses whitespace to separate list elements, while Prolog uses commas. This is a subject for further work. There are also some minor fixes.