From 03950a9f6416010e83f66fb662b08291b1bf8c6e Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Wed, 21 Jan 2015 02:23:01 +0900 Subject: [PATCH 01/28] re-add .travis.yml --- .travis.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f547fa9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: c +compiler: + - clang + - gcc +script: + - make + - make testall From 6473fb3fb19ee07b9dd7e350050a3b65f8860533 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Wed, 21 Jan 2015 02:24:37 +0900 Subject: [PATCH 02/28] write About and License --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..bcb7d01 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +newLISP mirror +============== + +[![Build Status](https://travis-ci.org/kosh04/newlisp.svg)](https://travis-ci.org/kosh04/newlisp) +[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +NOTE: This repository is unofficial mirror. + +## Abount newLISP + +[newLISP](http://newlisp.org) is LISP like scripting language +for general programming artificial intelligence and statistics. + +## About this repo + +このリポジトリは、公式から配布されているnewLISPのソースアーカイブを利用して、 +VCS(バージョン管理システム)を[試験的に導入したもの](http://www.newlispfanclub.alh.net/forum/viewtopic.php?f=2&t=4403&p=22835)です。 + +元となるファイル一式は以下から取得しています: (今のところ更新は手動) + +- [SourceForge.net](http://sourceforge.net/projects/newlisp/files/) + +最終的には、公式パッケージにGitやMercurialなどの何らかの +バージョン管理システム(とホスティングサーバ)が導入されることを目標にしています。 + +### branch + +- `master` : mirror from original newlisp sources +- `develop` : `master` files and `README.md`, `.travis.yml` (default branch) +- `feature/xxx` : (reserved) + +### features + +- Source archive [here](https://github.com/kosh04/newlisp/releases) +- Continuous Integration using [Travis CI](https://travis-ci.org/kosh04/newlisp) + +## License + +newLISP and Nuevatec are trademarks of Lutz Mueller. +All files are distribute by GPLv3. For more details, +see doc/COPYING and doc/License.html. From 5297fb8dc5d0f38c934edc8c6b73dff03a44dc8a Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Wed, 21 Jan 2015 04:47:49 +0900 Subject: [PATCH 03/28] Update README.md ja -> en --- README.md | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index bcb7d01..846d711 100644 --- a/README.md +++ b/README.md @@ -2,26 +2,17 @@ newLISP mirror ============== [![Build Status](https://travis-ci.org/kosh04/newlisp.svg)](https://travis-ci.org/kosh04/newlisp) -[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) -NOTE: This repository is unofficial mirror. +## newLISP with Git(Hub) -## Abount newLISP +NOTE: This repository is *unofficial* mirror. -[newLISP](http://newlisp.org) is LISP like scripting language -for general programming artificial intelligence and statistics. +This is newLISP experimental repository introduced DVCS (Distributed Version Control System) by using Git. +All source files are fetch from [SourceForge](http://sourceforge.net/projects/newlisp/files/). +Mainly available to easy browsing source code, view history, create a patch, etc. -## About this repo - -このリポジトリは、公式から配布されているnewLISPのソースアーカイブを利用して、 -VCS(バージョン管理システム)を[試験的に導入したもの](http://www.newlispfanclub.alh.net/forum/viewtopic.php?f=2&t=4403&p=22835)です。 - -元となるファイル一式は以下から取得しています: (今のところ更新は手動) - -- [SourceForge.net](http://sourceforge.net/projects/newlisp/files/) - -最終的には、公式パッケージにGitやMercurialなどの何らかの -バージョン管理システム(とホスティングサーバ)が導入されることを目標にしています。 +The final goal is newLISP development introduces DVCS (Git, Mercurial, etc) in official. ### branch @@ -31,8 +22,9 @@ VCS(バージョン管理システム)を[試験的に導入したもの](http:/ ### features -- Source archive [here](https://github.com/kosh04/newlisp/releases) -- Continuous Integration using [Travis CI](https://travis-ci.org/kosh04/newlisp) +- [Source Archives](https://github.com/kosh04/newlisp/releases) +- [Travis CI](https://travis-ci.org/kosh04/newlisp) : Continuous Integration +- [Gitter](https://gitter.im/kosh04/newlisp) : Chat about this repo ## License From e5b03ed371576a78cd17ee28d665171522ed08ba Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Thu, 22 Jan 2015 06:12:37 +0900 Subject: [PATCH 04/28] try mingw-gcc --- .travis.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index f547fa9..b390d7e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,13 @@ language: c compiler: - clang - gcc +before_install: + - sudo apt-get update -qq + - sudo apt-get install -qq mingw32 + - suto apt-get install -qq mingw-w64 script: - - make - - make testall +# - make +# - make testall + - make -f makefile_mingw_utf8 CC=i586-mingw32msvc-gcc STRIP=i586-mingw32msvc-strip + - file newlisp.exe + - ls From 306aad4f66527c602c59e67a134be3c332046e5e Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Thu, 22 Jan 2015 06:26:14 +0900 Subject: [PATCH 05/28] fix typo --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b390d7e..d1acc61 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,12 @@ compiler: before_install: - sudo apt-get update -qq - sudo apt-get install -qq mingw32 - - suto apt-get install -qq mingw-w64 + - sudo apt-get install -qq mingw-w64 script: # - make # - make testall - make -f makefile_mingw_utf8 CC=i586-mingw32msvc-gcc STRIP=i586-mingw32msvc-strip - file newlisp.exe - ls +after_script: + - echo Done From 26c182b739c9c9e1f6698b8102c28a8db13693f5 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Thu, 22 Jan 2015 06:39:11 +0900 Subject: [PATCH 06/28] mingw-w64 need not yet see detail https://travis-ci.org/kosh04/newlisp/ $ sudo apt-get install -qq mingw-w64 E: Unable to correct problems, you have held broken packages. The command "sudo apt-get install -qq mingw-w64" failed and exited with 100 during . --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d1acc61..4cd309f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ compiler: before_install: - sudo apt-get update -qq - sudo apt-get install -qq mingw32 - - sudo apt-get install -qq mingw-w64 +# - sudo apt-get install -qq mingw-w64 script: # - make # - make testall From 5ee82de77fea7221536e4d68657b1b991112717e Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Fri, 23 Jan 2015 17:39:02 +0900 Subject: [PATCH 07/28] run clang, gcc, mingw-gcc --- .travis.yml | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cd309f..0750cf2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,15 +2,22 @@ language: c compiler: - clang - gcc +env: + global: + - MAKEFILE=Makefile + - RUN_TESTS=true +matrix: + include: + - env: MAKEFILE=makefile_mingw_utf8 CC=i586-mingw32msvc-gcc STRIP=i586-mingw32msvc-strip RUN_TESTS=false before_install: + # [Ubuntu Packages](http://packages.ubuntu.com/) - sudo apt-get update -qq - sudo apt-get install -qq mingw32 -# - sudo apt-get install -qq mingw-w64 +# - sudo apt-get install -qq mingw-w64 mingw-w64-dev wine +# - sudo apt-get install -qq gcc-mingw-w64 +# - sudo apt-get install -qq gcc-mingw-w64-i686 +# - sudo apt-get install -qq gcc-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-dev script: -# - make -# - make testall - - make -f makefile_mingw_utf8 CC=i586-mingw32msvc-gcc STRIP=i586-mingw32msvc-strip - - file newlisp.exe - - ls -after_script: - - echo Done + - make -f $MAKEFILE +# - make -f $MAKEFILE CC=$CC STRIP=$STRIP + - [ "$RUN_TESTS" == true ] && make testall From 5c9f0c2a75a44bfdd33c1c22ac988e286e02c57d Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Fri, 23 Jan 2015 18:07:59 +0900 Subject: [PATCH 08/28] fix parse error --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0750cf2..9a91e28 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,4 +20,4 @@ before_install: script: - make -f $MAKEFILE # - make -f $MAKEFILE CC=$CC STRIP=$STRIP - - [ "$RUN_TESTS" == true ] && make testall + - if [ "$RUN_TESTS" == true ]; then make testall; fi From 8bf06d2cb98fb92a1f8b2c6114421a68cdc225f3 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Fri, 23 Jan 2015 18:44:17 +0900 Subject: [PATCH 09/28] specify mingw-gcc compiler and cleanup comments. btw: i586-mingw32msvc-gcc is already installed on travis-ci? --- .travis.yml | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9a91e28..113f317 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,23 +1,19 @@ language: c + compiler: - clang - gcc -env: - global: - - MAKEFILE=Makefile - - RUN_TESTS=true + matrix: include: - - env: MAKEFILE=makefile_mingw_utf8 CC=i586-mingw32msvc-gcc STRIP=i586-mingw32msvc-strip RUN_TESTS=false + - compiler: i586-mingw32msvc-gcc + env: STRIP=i586-mingw32msvc-strip + script: make -f makefile_mingw_utf8 + before_install: - # [Ubuntu Packages](http://packages.ubuntu.com/) - sudo apt-get update -qq - sudo apt-get install -qq mingw32 -# - sudo apt-get install -qq mingw-w64 mingw-w64-dev wine -# - sudo apt-get install -qq gcc-mingw-w64 -# - sudo apt-get install -qq gcc-mingw-w64-i686 -# - sudo apt-get install -qq gcc-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-dev + script: - - make -f $MAKEFILE -# - make -f $MAKEFILE CC=$CC STRIP=$STRIP - - if [ "$RUN_TESTS" == true ]; then make testall; fi + - make + - make testall From a4ecb15a9b1c4f1882b72cb5f975fe9ad8b8e816 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Fri, 23 Jan 2015 18:51:50 +0900 Subject: [PATCH 10/28] add CC=$CC hahaha --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 113f317..cad958f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ matrix: include: - compiler: i586-mingw32msvc-gcc env: STRIP=i586-mingw32msvc-strip - script: make -f makefile_mingw_utf8 + script: make -f makefile_mingw_utf8 CC=$CC STRIP=$STRIP before_install: - sudo apt-get update -qq From 3453451d755141a5f881dff67fb5e69cce87a101 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Tue, 10 Feb 2015 16:31:50 +0900 Subject: [PATCH 11/28] add appveyor badge [skip ci] --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 846d711..f3f1360 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ newLISP mirror ============== -[![Build Status](https://travis-ci.org/kosh04/newlisp.svg)](https://travis-ci.org/kosh04/newlisp) +[![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) +[![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) ## newLISP with Git(Hub) @@ -17,13 +18,14 @@ The final goal is newLISP development introduces DVCS (Git, Mercurial, etc) in o ### branch - `master` : mirror from original newlisp sources -- `develop` : `master` files and `README.md`, `.travis.yml` (default branch) +- `develop` : `master` files and `README.md`, `.travis.yml`, `appveyor.yml` (default branch) - `feature/xxx` : (reserved) ### features - [Source Archives](https://github.com/kosh04/newlisp/releases) - [Travis CI](https://travis-ci.org/kosh04/newlisp) : Continuous Integration +- [AppVeyor](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) : Continuous Integration (for MinGW) - [Gitter](https://gitter.im/kosh04/newlisp) : Chat about this repo ## License From 9eed31dd4edf1ad0e769497319fd028bdc959229 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Fri, 7 Aug 2015 17:08:24 +0900 Subject: [PATCH 12/28] Add appveyor setting for test mingw32/64 and cygwin --- appveyor.yml | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..d1adb17 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,100 @@ +version: 1.0.{build} + +os: Windows Server 2012 R2 + +init: + - git config --global core.autocrlf input + +environment: + global: + NEWLISP_MAKE_TARGET: default + CC: gcc + STRIP: strip + MSYS2_BASEVER: 20150512 + CYGWIN_CACHE: C:\cygwin\var\cache\setup + CYGWIN_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/ + + matrix: + - TARGET: x86_64-w64-mingw32 + MSYS2_ARCH: x86_64 + MSYS2_ROOT: msys64 + MSYSTEM: MINGW64 + NEWLISP_MAKE_TARGET: winall64_utf8 + + - TARGET: i686-w64-mingw32 + MSYS2_ARCH: i686 + MSYS2_ROOT: msys32 + MSYSTEM: MINGW32 + NEWLISP_MAKE_TARGET: winall_utf8 + + - TARGET: mingw32 + MSYS_ARCH: x86 + MSYS_ROOT: C:\MinGW\msys\1.0 + MINGW_ROOT: C:\MinGW + NEWLISP_MAKE_TARGET: winall_utf8 + + - TARGET: i686-pc-cygwin + CYGWIN_ARCH: x86 + CYGWIN_ROOT: C:\cygwin + CYGWIN_PACKAGES: libffi-devel,libreadline-devel + + - TARGET: x86_64-pc-cygwin + CYGWIN_ARCH: x86_64 + CYGWIN_ROOT: C:\cygwin64 + CYGWIN_PACKAGES: make,gcc-core,libffi6,libffi-devel,libreadline7,libreadline-devel,pkg-config,cygrunsrv + +matrix: + allow_failures: + # Note: mingw32 with libffi requires CFLAGS+="-DWINVER=0x0600" + - TARGET: mingw32 + # Note: makefile_cygwin apply only 32-bit + - TARGET: x86_64-pc-cygwin + +install: + - if defined MSYS2_ARCH appveyor DownloadFile "http://kent.dl.sourceforge.net/project/msys2/Base/%MSYS2_ARCH%/msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar.xz" + - if defined MSYS2_ARCH 7z x msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar.xz + - if defined MSYS2_ARCH 7z x msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar > NUL + - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\usr\bin;%PATH%" + - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\%MSYSTEM%\bin;%PATH%;%PATH%" + - if defined MSYS2_ARCH bash -lc "" + - if defined MSYS2_ARCH bash -lc "pacman --noconfirm -Syy pacman-mirrors" + - if defined MSYS2_ARCH bash -lc "pacman --noconfirm -Su" + - if defined MSYS2_ARCH bash -lc "pacman --noconfirm -S make mingw-w64-$MSYS2_ARCH-{gcc,libtool,libffi}" + - if defined MSYS2_ARCH %MSYS2_ROOT%\autorebase.bat + + - if defined MSYS_ARCH appveyor SetVariable -Name PATH -Value "%MINGW_ROOT%\bin;%PATH%" + - if defined MSYS_ARCH appveyor SetVariable -Name PATH -Value "%MSYS_ROOT%\bin;%PATH%" + - if defined MSYS_ARCH curl -Os ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz + - if defined MSYS_ARCH tar xf libffi-3.2.1.tar.gz + - if defined MSYS_ARCH cd libffi-3.2.1 + - if defined MSYS_ARCH sh -c "./configure --prefix=/usr/local" + - if defined MSYS_ARCH sh -c "make && make install" + - if defined MSYS_ARCH cd .. + - if defined MSYS_ARCH appveyor SetVariable -Name LIBRARY_PATH -Value "/usr/local/lib" + + - if defined CYGWIN_ARCH appveyor SetVariable -Name PATH -Value "%CYGWIN_ROOT%\bin;%PATH%" + - if defined CYGWIN_ARCH C:\cygwin\setup-x86.exe -qnNdO --arch="%CYGWIN_ARCH%" --root="%CYGWIN_ROOT%" --site="%CYGWIN_MIRROR%" --local-package-dir="%CYGWIN_CACHE%" --packages="%CYGWIN_PACKAGES%" + - if defined CYGWIN_ARCH sh -lc "" + - if defined CYGWIN_ARCH sh -lc "cygcheck -cd cygwin $(echo %CYGWIN_PACKAGES% | tr , ' ')" + - if defined CYGWIN_ARCH sh -lc "cygserver-config -y && cygrunsrv --start cygserver" + - if defined CYGWIN_ARCH sh -lc "mkdir -p /usr/include/netinet/" + - if defined CYGWIN_ARCH sh -lc "curl -OLsk https://github.com/bminor/glibc/raw/master/inet/netinet/icmp6.h" + - if defined CYGWIN_ARCH sh -lc "mv -fv icmp6.h /usr/include/netinet/icmp6.h" + + - '%CC% -v' + +cache: + - 'msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar.xz' + - '%MSYS2_ROOT%\var\cache\pacman\pkg' + - '%CYGWIN_CACHE%' + +build_script: + - sh -c 'make $NEWLISP_MAKE_TARGET' + +test_script: + - sh -c "./newlisp -v" + - sh -c "make testall" + +artifacts: + - path: newlisp.exe + - path: newlisp.dll From c12ba660db359bb846038df888ac516641072923 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Mon, 28 Sep 2015 01:24:22 +0900 Subject: [PATCH 13/28] Add OSX build --- .gitignore | 5 +++++ .travis.yml | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 5dbd852..dd2219f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,10 @@ *.dylib newlisp +# makefiles +makefile_build +makefile_install + # test files junk junk2 @@ -34,6 +38,7 @@ pipe-child.lsp nbproject # misc +config.h TAGS XTAGS *.stackdump diff --git a/.travis.yml b/.travis.yml index cad958f..1d8e09c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,19 +1,27 @@ language: c +sudo: false + +os: + - linux + - osx + compiler: - clang - gcc matrix: include: + # cross build for mingw32 - compiler: i586-mingw32msvc-gcc env: STRIP=i586-mingw32msvc-strip script: make -f makefile_mingw_utf8 CC=$CC STRIP=$STRIP - -before_install: - - sudo apt-get update -qq - - sudo apt-get install -qq mingw32 + sudo: required + before_install: + - sudo apt-get update -qq + - sudo apt-get install -qq mingw32 script: - - make + - make CC="$CC" + - file ./newlisp && ./newlisp -v - make testall From 9a8c15e9ed0cfd90bf1dab121853e27cae45f722 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Fri, 27 Nov 2015 21:02:05 +0900 Subject: [PATCH 14/28] Use pre-installed msys2 --- .gitignore | 1 + appveyor.yml | 26 +++++++------------------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index dd2219f..3c2abf8 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ nbproject # misc config.h +icmp6.h TAGS XTAGS *.stackdump diff --git a/appveyor.yml b/appveyor.yml index d1adb17..4137b9f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,27 +10,25 @@ environment: NEWLISP_MAKE_TARGET: default CC: gcc STRIP: strip - MSYS2_BASEVER: 20150512 + MSYS_ROOT: C:\MinGW\msys\1.0 + MINGW_ROOT: C:\MinGW + MSYS2_ROOT: C:\msys64 CYGWIN_CACHE: C:\cygwin\var\cache\setup CYGWIN_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/ matrix: - TARGET: x86_64-w64-mingw32 MSYS2_ARCH: x86_64 - MSYS2_ROOT: msys64 MSYSTEM: MINGW64 NEWLISP_MAKE_TARGET: winall64_utf8 - TARGET: i686-w64-mingw32 MSYS2_ARCH: i686 - MSYS2_ROOT: msys32 MSYSTEM: MINGW32 NEWLISP_MAKE_TARGET: winall_utf8 - TARGET: mingw32 MSYS_ARCH: x86 - MSYS_ROOT: C:\MinGW\msys\1.0 - MINGW_ROOT: C:\MinGW NEWLISP_MAKE_TARGET: winall_utf8 - TARGET: i686-pc-cygwin @@ -41,7 +39,7 @@ environment: - TARGET: x86_64-pc-cygwin CYGWIN_ARCH: x86_64 CYGWIN_ROOT: C:\cygwin64 - CYGWIN_PACKAGES: make,gcc-core,libffi6,libffi-devel,libreadline7,libreadline-devel,pkg-config,cygrunsrv + CYGWIN_PACKAGES: make,gcc-core,libffi6,libffi-devel,libreadline7,libreadline-devel,pkg-config,cygrunsrv,curl matrix: allow_failures: @@ -51,16 +49,8 @@ matrix: - TARGET: x86_64-pc-cygwin install: - - if defined MSYS2_ARCH appveyor DownloadFile "http://kent.dl.sourceforge.net/project/msys2/Base/%MSYS2_ARCH%/msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar.xz" - - if defined MSYS2_ARCH 7z x msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar.xz - - if defined MSYS2_ARCH 7z x msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar > NUL + - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\%MSYSTEM%\bin;%PATH%" - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\usr\bin;%PATH%" - - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\%MSYSTEM%\bin;%PATH%;%PATH%" - - if defined MSYS2_ARCH bash -lc "" - - if defined MSYS2_ARCH bash -lc "pacman --noconfirm -Syy pacman-mirrors" - - if defined MSYS2_ARCH bash -lc "pacman --noconfirm -Su" - - if defined MSYS2_ARCH bash -lc "pacman --noconfirm -S make mingw-w64-$MSYS2_ARCH-{gcc,libtool,libffi}" - - if defined MSYS2_ARCH %MSYS2_ROOT%\autorebase.bat - if defined MSYS_ARCH appveyor SetVariable -Name PATH -Value "%MINGW_ROOT%\bin;%PATH%" - if defined MSYS_ARCH appveyor SetVariable -Name PATH -Value "%MSYS_ROOT%\bin;%PATH%" @@ -77,15 +67,13 @@ install: - if defined CYGWIN_ARCH sh -lc "" - if defined CYGWIN_ARCH sh -lc "cygcheck -cd cygwin $(echo %CYGWIN_PACKAGES% | tr , ' ')" - if defined CYGWIN_ARCH sh -lc "cygserver-config -y && cygrunsrv --start cygserver" - - if defined CYGWIN_ARCH sh -lc "mkdir -p /usr/include/netinet/" - if defined CYGWIN_ARCH sh -lc "curl -OLsk https://github.com/bminor/glibc/raw/master/inet/netinet/icmp6.h" - - if defined CYGWIN_ARCH sh -lc "mv -fv icmp6.h /usr/include/netinet/icmp6.h" + - if defined CYGWIN_ARCH sh -lc "install -D icmp6.h /usr/include/netinet/icmp6.h" - '%CC% -v' cache: - - 'msys2-base-%MSYS2_ARCH%-%MSYS2_BASEVER%.tar.xz' - - '%MSYS2_ROOT%\var\cache\pacman\pkg' + - '%MSYS2_ROOT%\var\cache' - '%CYGWIN_CACHE%' build_script: From 5ee6e009cc39d36890d966ce0a1e147ebd78ce0f Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Wed, 6 Jan 2016 03:37:05 +0900 Subject: [PATCH 15/28] Use container-based infrastructure --- .travis.yml | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1d8e09c..d46525c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,14 +12,29 @@ compiler: matrix: include: - # cross build for mingw32 - - compiler: i586-mingw32msvc-gcc - env: STRIP=i586-mingw32msvc-strip - script: make -f makefile_mingw_utf8 CC=$CC STRIP=$STRIP - sudo: required - before_install: - - sudo apt-get update -qq - - sudo apt-get install -qq mingw32 + # cross build for MinGW-w64 + - os: linux + compiler: x86_64-w64-mingw32-gcc + env: STRIP=x86_64-w64-mingw32-strip + addons: + apt: + packages: + - gcc-mingw-w64 + - gcc-mingw-w64-x86-64 + - binutils-mingw-w64-x86-64 + script: + - make -f makefile_mingw64_utf8 CC=${CC} STRIP=${STRIP} + - os: linux + compiler: i686-w64-mingw32-gcc + env: STRIP=i686-w64-mingw32-strip + addons: + apt: + packages: + - gcc-mingw-w64 + - gcc-mingw-w64-i686 + - binutils-mingw-w64-i686 + script: + - make -f makefile_mingw_utf8 CC=${CC} STRIP=${STRIP} script: - make CC="$CC" From a5ec2692b3fe73f94f97884ba3a012fd88e78238 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Sun, 3 Jan 2016 00:42:33 +0900 Subject: [PATCH 16/28] Setup coverage with cpp-coveralls #2 --- .gitignore | 5 +++++ .travis.yml | 8 +++++++- README.md | 1 + ci/coveralls/before_install_linux.sh | 4 ++++ ci/coveralls/before_install_osx.sh | 11 +++++++++++ 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 ci/coveralls/before_install_linux.sh create mode 100644 ci/coveralls/before_install_osx.sh diff --git a/.gitignore b/.gitignore index 3c2abf8..f9c24d9 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,11 @@ pipe-child.lsp # guiserver *.class +# coveralls (gcov) +*.gcov +*.gcda +*.gcno + # eclipse .settings diff --git a/.travis.yml b/.travis.yml index d46525c..0f99110 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,7 +36,13 @@ matrix: script: - make -f makefile_mingw_utf8 CC=${CC} STRIP=${STRIP} +before_install: + - source ./ci/coveralls/before_install_${TRAVIS_OS_NAME}.sh + script: - - make CC="$CC" + - make CC="$CC --coverage" - file ./newlisp && ./newlisp -v - make testall + +after_success: + - coveralls --exclude util diff --git a/README.md b/README.md index f3f1360..097397c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ newLISP mirror ============== [![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) +[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=feature%2Fcoveralls&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=feature%2Fcoveralls) [![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) diff --git a/ci/coveralls/before_install_linux.sh b/ci/coveralls/before_install_linux.sh new file mode 100644 index 0000000..d6b8f0a --- /dev/null +++ b/ci/coveralls/before_install_linux.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +pip install --user cpp-coveralls diff --git a/ci/coveralls/before_install_osx.sh b/ci/coveralls/before_install_osx.sh new file mode 100644 index 0000000..23bb681 --- /dev/null +++ b/ci/coveralls/before_install_osx.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +# brew update +# brew install pyenv +eval "$(pyenv init -)" +pyenv install 2.7.6 +pyenv global 2.7.6 +pyenv rehash +pip install cpp-coveralls +pyenv rehash From a52ddd1afd2632adeb27d006855640b69f570bc8 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Thu, 7 Jan 2016 16:03:50 +0900 Subject: [PATCH 17/28] Summary about coveralls --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 097397c..989ce50 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ newLISP mirror ============== [![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) -[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=feature%2Fcoveralls&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=feature%2Fcoveralls) +[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=feature%2Fcoveralls&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=develop) [![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) @@ -26,6 +26,7 @@ The final goal is newLISP development introduces DVCS (Git, Mercurial, etc) in o - [Source Archives](https://github.com/kosh04/newlisp/releases) - [Travis CI](https://travis-ci.org/kosh04/newlisp) : Continuous Integration +- [Coveralls](https://coveralls.io/github/kosh04/newlisp) : Test Coverage - [AppVeyor](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) : Continuous Integration (for MinGW) - [Gitter](https://gitter.im/kosh04/newlisp) : Chat about this repo From fe43e66c04ed30833f87d138680a2df5da32ad84 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Mon, 25 Jan 2016 05:25:09 +0900 Subject: [PATCH 18/28] Touch up MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix typo coveralls badge - Add section “Contribute” “Link” --- README.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 989ce50..98c4d20 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ newLISP mirror ============== [![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) -[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=feature%2Fcoveralls&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=develop) +[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=develop&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=develop) [![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) @@ -26,12 +26,24 @@ The final goal is newLISP development introduces DVCS (Git, Mercurial, etc) in o - [Source Archives](https://github.com/kosh04/newlisp/releases) - [Travis CI](https://travis-ci.org/kosh04/newlisp) : Continuous Integration -- [Coveralls](https://coveralls.io/github/kosh04/newlisp) : Test Coverage -- [AppVeyor](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) : Continuous Integration (for MinGW) +- [Coveralls](https://coveralls.io/github/kosh04/newlisp) : Code Coverage +- [AppVeyor](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) : Continuous Integration (for Windows) - [Gitter](https://gitter.im/kosh04/newlisp) : Chat about this repo +## Contribute + +Issue and pull requests about this repository are welcome. + +For code contributions, bug fixes, reports and comments, +please contact Lutz Mueller (see README) or post to the Forum. + +## Link + +- newLISP http://www.newlisp.org/ +- newLISP Forum http://www.newlispfanclub.alh.net/ + ## License newLISP and Nuevatec are trademarks of Lutz Mueller. All files are distribute by GPLv3. For more details, -see doc/COPYING and doc/License.html. +see [doc/COPYING](https://github.com/kosh04/newlisp/blob/master/doc/COPYING) and [doc/License.html](https://rawgit.com/kosh04/newlisp/master/doc/License.html). From 26c5ee8981b812fe23c30adb34d9c20a51536245 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Tue, 26 Jan 2016 01:17:14 +0900 Subject: [PATCH 19/28] Skip report coverage while cross build --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 0f99110..38956c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,6 +24,7 @@ matrix: - binutils-mingw-w64-x86-64 script: - make -f makefile_mingw64_utf8 CC=${CC} STRIP=${STRIP} + after_success: echo "Skip report coverage" - os: linux compiler: i686-w64-mingw32-gcc env: STRIP=i686-w64-mingw32-strip @@ -35,6 +36,7 @@ matrix: - binutils-mingw-w64-i686 script: - make -f makefile_mingw_utf8 CC=${CC} STRIP=${STRIP} + after_success: echo "Skip report coverage" before_install: - source ./ci/coveralls/before_install_${TRAVIS_OS_NAME}.sh From eecd78255d056a2561a6f2758936e95e7c816ccb Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Tue, 26 Jan 2016 01:37:05 +0900 Subject: [PATCH 20/28] Add Codecov badge - Report code coverage to codecov.io - Appveyor.yml: Align `version` key to newlisp version number --- .travis.yml | 2 ++ README.md | 6 ++++-- appveyor.yml | 20 ++++++++++---------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 38956c9..1c24c67 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,6 +40,7 @@ matrix: before_install: - source ./ci/coveralls/before_install_${TRAVIS_OS_NAME}.sh + - pip install --user codecov script: - make CC="$CC --coverage" @@ -48,3 +49,4 @@ script: after_success: - coveralls --exclude util + - codecov diff --git a/README.md b/README.md index 98c4d20..8b3a354 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,9 @@ newLISP mirror ============== [![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) -[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=develop&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=develop) [![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) +[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=develop&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=develop) +[![codecov.io](https://codecov.io/github/kosh04/newlisp/coverage.svg?branch=develop)](https://codecov.io/github/kosh04/newlisp?branch=develop) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) ## newLISP with Git(Hub) @@ -26,8 +27,9 @@ The final goal is newLISP development introduces DVCS (Git, Mercurial, etc) in o - [Source Archives](https://github.com/kosh04/newlisp/releases) - [Travis CI](https://travis-ci.org/kosh04/newlisp) : Continuous Integration -- [Coveralls](https://coveralls.io/github/kosh04/newlisp) : Code Coverage - [AppVeyor](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) : Continuous Integration (for Windows) +- [Coveralls](https://coveralls.io/github/kosh04/newlisp) : Code Coverage +- [Codecov](http://codecov.io/github/kosh04/newlisp?ref=develop) : Code Coverage - [Gitter](https://gitter.im/kosh04/newlisp) : Chat about this repo ## Contribute diff --git a/appveyor.yml b/appveyor.yml index 4137b9f..62391c3 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 1.0.{build} +version: 10.7.0.{build} os: Windows Server 2012 R2 @@ -7,7 +7,6 @@ init: environment: global: - NEWLISP_MAKE_TARGET: default CC: gcc STRIP: strip MSYS_ROOT: C:\MinGW\msys\1.0 @@ -20,16 +19,13 @@ environment: - TARGET: x86_64-w64-mingw32 MSYS2_ARCH: x86_64 MSYSTEM: MINGW64 - NEWLISP_MAKE_TARGET: winall64_utf8 - TARGET: i686-w64-mingw32 MSYS2_ARCH: i686 MSYSTEM: MINGW32 - NEWLISP_MAKE_TARGET: winall_utf8 - TARGET: mingw32 MSYS_ARCH: x86 - NEWLISP_MAKE_TARGET: winall_utf8 - TARGET: i686-pc-cygwin CYGWIN_ARCH: x86 @@ -39,14 +35,12 @@ environment: - TARGET: x86_64-pc-cygwin CYGWIN_ARCH: x86_64 CYGWIN_ROOT: C:\cygwin64 - CYGWIN_PACKAGES: make,gcc-core,libffi6,libffi-devel,libreadline7,libreadline-devel,pkg-config,cygrunsrv,curl + CYGWIN_PACKAGES: make,gcc-core,libffi6,libffi-devel,libreadline7,libreadline-devel,pkg-config,cygrunsrv,curl,libisl10,libcloog-isl4 matrix: allow_failures: - # Note: mingw32 with libffi requires CFLAGS+="-DWINVER=0x0600" + # Note: mingw32 with libffi may requires CFLAGS+="-DWINVER=0x0600" - TARGET: mingw32 - # Note: makefile_cygwin apply only 32-bit - - TARGET: x86_64-pc-cygwin install: - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\%MSYSTEM%\bin;%PATH%" @@ -77,12 +71,18 @@ cache: - '%CYGWIN_CACHE%' build_script: - - sh -c 'make $NEWLISP_MAKE_TARGET' + - sh -c 'make $NEWLISP_MAKE_TARGET CC="$CC --coverage"' test_script: - sh -c "./newlisp -v" - sh -c "make testall" +on_success: + - set PYTHON=C:\Python27 + - set PATH=%PYTHON%;%PYTHON%\Scripts;%APPDATA%\Python\Scripts;%PATH% + - pip install --user codecov + - codecov + artifacts: - path: newlisp.exe - path: newlisp.dll From 3c89f48008706c375679a2f315c11c79cdab1720 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Thu, 28 Jan 2016 19:22:03 +0900 Subject: [PATCH 21/28] Stash Coveralls badge #2 --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8b3a354..9563632 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ newLISP mirror [![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) [![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) -[![Coverage Status](https://coveralls.io/repos/kosh04/newlisp/badge.svg?branch=develop&service=github)](https://coveralls.io/github/kosh04/newlisp?branch=develop) [![codecov.io](https://codecov.io/github/kosh04/newlisp/coverage.svg?branch=develop)](https://codecov.io/github/kosh04/newlisp?branch=develop) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) @@ -27,9 +26,8 @@ The final goal is newLISP development introduces DVCS (Git, Mercurial, etc) in o - [Source Archives](https://github.com/kosh04/newlisp/releases) - [Travis CI](https://travis-ci.org/kosh04/newlisp) : Continuous Integration -- [AppVeyor](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) : Continuous Integration (for Windows) -- [Coveralls](https://coveralls.io/github/kosh04/newlisp) : Code Coverage -- [Codecov](http://codecov.io/github/kosh04/newlisp?ref=develop) : Code Coverage +- [AppVeyor](https://ci.appveyor.com/project/kosh04) : Continuous Integration (for Windows) +- [Codecov](https://codecov.io/github/kosh04/newlisp) : Code Coverage - [Gitter](https://gitter.im/kosh04/newlisp) : Chat about this repo ## Contribute From 158f7ed51cc56cea1156bd0194f6c95cdfc6b81d Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Tue, 16 Aug 2016 23:30:52 +0900 Subject: [PATCH 22/28] Fix codecov link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9563632..7cec26b 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ newLISP mirror [![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) [![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) -[![codecov.io](https://codecov.io/github/kosh04/newlisp/coverage.svg?branch=develop)](https://codecov.io/github/kosh04/newlisp?branch=develop) +[![codecov](https://codecov.io/gh/kosh04/newlisp/branch/develop/graph/badge.svg)](https://codecov.io/gh/kosh04/newlisp) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) ## newLISP with Git(Hub) @@ -27,7 +27,7 @@ The final goal is newLISP development introduces DVCS (Git, Mercurial, etc) in o - [Source Archives](https://github.com/kosh04/newlisp/releases) - [Travis CI](https://travis-ci.org/kosh04/newlisp) : Continuous Integration - [AppVeyor](https://ci.appveyor.com/project/kosh04) : Continuous Integration (for Windows) -- [Codecov](https://codecov.io/github/kosh04/newlisp) : Code Coverage +- [Codecov](https://codecov.io/gh/kosh04/newlisp) : Code Coverage - [Gitter](https://gitter.im/kosh04/newlisp) : Chat about this repo ## Contribute From de6abb68693bf77e5c4e5c2a629f3a7ab2632991 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Wed, 17 Aug 2016 02:59:28 +0900 Subject: [PATCH 23/28] Prefer mingw32/64 PATH --- appveyor.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 62391c3..7175cd0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,16 +16,16 @@ environment: CYGWIN_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/ matrix: - - TARGET: x86_64-w64-mingw32 - MSYS2_ARCH: x86_64 - MSYSTEM: MINGW64 + - TARGET: mingw32 + MSYS_ARCH: x86 - TARGET: i686-w64-mingw32 MSYS2_ARCH: i686 MSYSTEM: MINGW32 - - TARGET: mingw32 - MSYS_ARCH: x86 + - TARGET: x86_64-w64-mingw32 + MSYS2_ARCH: x86_64 + MSYSTEM: MINGW64 - TARGET: i686-pc-cygwin CYGWIN_ARCH: x86 @@ -42,9 +42,13 @@ matrix: # Note: mingw32 with libffi may requires CFLAGS+="-DWINVER=0x0600" - TARGET: mingw32 +cache: + - '%MSYS2_ROOT%\var\cache' + - '%CYGWIN_CACHE%' + install: - - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\%MSYSTEM%\bin;%PATH%" - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\usr\bin;%PATH%" + - if defined MSYS2_ARCH appveyor SetVariable -Name PATH -Value "%MSYS2_ROOT%\%MSYSTEM%\bin;%PATH%" - if defined MSYS_ARCH appveyor SetVariable -Name PATH -Value "%MINGW_ROOT%\bin;%PATH%" - if defined MSYS_ARCH appveyor SetVariable -Name PATH -Value "%MSYS_ROOT%\bin;%PATH%" @@ -64,14 +68,11 @@ install: - if defined CYGWIN_ARCH sh -lc "curl -OLsk https://github.com/bminor/glibc/raw/master/inet/netinet/icmp6.h" - if defined CYGWIN_ARCH sh -lc "install -D icmp6.h /usr/include/netinet/icmp6.h" + - where %CC% - '%CC% -v' -cache: - - '%MSYS2_ROOT%\var\cache' - - '%CYGWIN_CACHE%' - build_script: - - sh -c 'make $NEWLISP_MAKE_TARGET CC="$CC --coverage"' + - sh -c 'make CC="$CC --coverage"' test_script: - sh -c "./newlisp -v" From e8ab6f9ae2385a7b683c07cf82b30b986861d3e4 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Wed, 21 Sep 2016 03:29:08 +0900 Subject: [PATCH 24/28] Prefer pre-installed curl package Re-installed curl command would be failed with code 127. --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 7175cd0..fb6cc61 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -35,7 +35,7 @@ environment: - TARGET: x86_64-pc-cygwin CYGWIN_ARCH: x86_64 CYGWIN_ROOT: C:\cygwin64 - CYGWIN_PACKAGES: make,gcc-core,libffi6,libffi-devel,libreadline7,libreadline-devel,pkg-config,cygrunsrv,curl,libisl10,libcloog-isl4 + CYGWIN_PACKAGES: make,gcc-core,libffi6,libffi-devel,libreadline7,libreadline-devel,cygrunsrv,libisl10,libcloog-isl4 matrix: allow_failures: From 4c928727394d9c3aa6afb11649e62b87430be3e6 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Sun, 20 May 2018 13:54:46 +0900 Subject: [PATCH 25/28] Add DebianBadge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7cec26b..5b1dc7e 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ newLISP mirror [![Build Status](https://travis-ci.org/kosh04/newlisp.svg?branch=develop)](https://travis-ci.org/kosh04/newlisp) [![Build status](https://ci.appveyor.com/api/projects/status/qg6ijtx867q5fxnl/branch/develop?svg=true)](https://ci.appveyor.com/project/kosh04/newlisp/branch/develop) [![codecov](https://codecov.io/gh/kosh04/newlisp/branch/develop/graph/badge.svg)](https://codecov.io/gh/kosh04/newlisp) +[![DebianBadge](https://badges.debian.net/badges/debian/stable/newlisp/version.svg)](https://packages.debian.org/stable/newlisp) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kosh04/newlisp) ## newLISP with Git(Hub) From 9eb8f27de842ebe96e8a6f8e631ffd3fa37d4611 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shigeru Date: Thu, 16 May 2019 17:31:58 +0900 Subject: [PATCH 26/28] Enable Travis CI IPv6 loopback network for testing (#15) Enable ipv6 using sysctl --- .travis.yml | 6 ++++-- ci/before_install_linux.sh | 6 ++++++ ci/before_install_osx.sh | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 ci/before_install_linux.sh create mode 100644 ci/before_install_osx.sh diff --git a/.travis.yml b/.travis.yml index 1c24c67..5b557c1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: c -sudo: false +dist: trusty +sudo: required os: - linux @@ -39,13 +40,14 @@ matrix: after_success: echo "Skip report coverage" before_install: + - source ./ci/before_install_${TRAVIS_OS_NAME}.sh - source ./ci/coveralls/before_install_${TRAVIS_OS_NAME}.sh - pip install --user codecov script: - make CC="$CC --coverage" - file ./newlisp && ./newlisp -v - - make testall + - make checkall after_success: - coveralls --exclude util diff --git a/ci/before_install_linux.sh b/ci/before_install_linux.sh new file mode 100644 index 0000000..5a3d857 --- /dev/null +++ b/ci/before_install_linux.sh @@ -0,0 +1,6 @@ +#!/bin/sh +## Enable ipv6 loopback only for testing +# sudo /sbin/sysctl -w net.ipv6.conf.all.disable_ipv6=0 +# sudo /sbin/sysctl -w net.ipv6.conf.default.disable_ipv6=0 +sudo /sbin/sysctl -w net.ipv6.conf.lo.disable_ipv6=0 +ip addr diff --git a/ci/before_install_osx.sh b/ci/before_install_osx.sh new file mode 100644 index 0000000..2f57540 --- /dev/null +++ b/ci/before_install_osx.sh @@ -0,0 +1,2 @@ +#!/bin/sh +# NOOP From f85298c66593b4c5b6cdf0da4e19f343c877a47c Mon Sep 17 00:00:00 2001 From: sakamitz Date: Mon, 27 May 2019 20:21:13 +0800 Subject: [PATCH 27/28] test opengl examples on linux --- examples/opengl-demo-ffi-lsp.txt | 7 ++++--- examples/opengl-demo-ffi.lsp | 9 +++++---- examples/opengl-demo.lsp | 5 +++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/examples/opengl-demo-ffi-lsp.txt b/examples/opengl-demo-ffi-lsp.txt index 1cb7555..d018bee 100755 --- a/examples/opengl-demo-ffi-lsp.txt +++ b/examples/opengl-demo-ffi-lsp.txt @@ -2,9 +2,10 @@ # OpenGL and GLUT demo - opengl-demo-ffi.lsp # Using extended import and callback API based on libffi # tested on Win32 and OS X 32/64-bit (Intel) minimum version newLISP 10.3.10 +# tested on Linux 32/64-bit (AMD) minimum version newLISP 10.7.0 -# verson 2.1 December 2011 - remade with extended FFI for 32 and 64-bit -# verson 2.2 February 2012 - check if newLISP compiled for extended FFI +# version 2.1 December 2011 - remade with extended FFI for 32 and 64-bit +# version 2.2 February 2012 - check if newLISP compiled for extended FFI # this version works on both, 32-bit and 64-bit newLISP # on a Mac OSX standard install everything neede for 32-bit or 64-bit # is included. On Windows XP and Windows 7, glut32.dll must be added. @@ -52,7 +53,7 @@ (begin (set 'GL_LIB "opengl32.dll") ; works dfor both 32 and 64 bit (set 'GLUT_LIB (if is-64-bit "glut64.dll" "glut32.dll"))) - (= ostype "Linux") ;; not tested + (= ostype "Linux") (begin (set 'GL_LIB "libGL.so") (set 'GLUT_LIB "libglut.so")) diff --git a/examples/opengl-demo-ffi.lsp b/examples/opengl-demo-ffi.lsp index d858937..b40b1fd 100644 --- a/examples/opengl-demo-ffi.lsp +++ b/examples/opengl-demo-ffi.lsp @@ -2,10 +2,11 @@ # OpenGL and GLUT demo - opengl-demo-ffi.lsp # Using extended import and callback API based on libffi # tested on Windows and OS X 32/64-bit (Intel) minimum version newLISP 10.3.10 +# tested on Linux 32/64-bit (AMD) minimum version newLISP 10.7.0 -# verson 2.1 December 2011 - remade with extended FFI for 32 and 64-bit -# verson 2.2 February 2012 - check if newLISP compiled for extended FFI -# verson 2.3 April 2015 - changed ostype to Windows from Win32 +# version 2.1 December 2011 - remade with extended FFI for 32 and 64-bit +# version 2.2 February 2012 - check if newLISP compiled for extended FFI +# version 2.3 April 2015 - changed ostype to Windows from Win32 # this version works on both, 32-bit and 64-bit newLISP # on a Mac OSX standard install everything neede for 32-bit or 64-bit # is included. On Windows XP and Windows 7, glut32.dll must be added. @@ -54,7 +55,7 @@ (begin (set 'GL_LIB "opengl32.dll") ; works dfor both 32 and 64 bit (set 'GLUT_LIB (if is-64-bit "glut64.dll" "glut32.dll"))) - (= ostype "Linux") ;; not tested + (= ostype "Linux") (begin (set 'GL_LIB "libGL.so") (set 'GLUT_LIB "libglut.so")) diff --git a/examples/opengl-demo.lsp b/examples/opengl-demo.lsp index bd0ed17..15e5677 100644 --- a/examples/opengl-demo.lsp +++ b/examples/opengl-demo.lsp @@ -2,6 +2,7 @@ # OpenGL and GLUT demo - opengl-demo.lsp # using simple import and callback API # tested on Windows and OS X (Intel) 32-bit only! +# tested on Linux 32-bit (AMD) minimum version newLISP 10.7.5 # version 1.2, July 2009 - make drawObject working with motion @@ -16,7 +17,7 @@ # glut32.dll - available here: http://www.opengl.org/resources/libraries/glut/ # Note! on Windows 7 glut32.dll should be installed c:/Windows/SysWOW64/ not system32 # -# Linux/UNIX - not tested +# Linux/UNIX # libGLU.so - should be on your Linux/UNIX installation or at www.opengl.org # glut-3.7.so - already on your system or at: # http://www.opengl.org/resources/libraries/glut/ @@ -63,7 +64,7 @@ (begin (set 'GL_LIB "opengl32.dll") (set 'GLUT_LIB "glut32.dll")) - (= ostype "Linux") ;; not tested + (= ostype "Linux") (begin (set 'GL_LIB "libGL.so") (set 'GLUT_LIB "libglut.so")) From 5e23a8a6d4b3245b0196d7f21848bbf54e652c56 Mon Sep 17 00:00:00 2001 From: Ger Hobbelt Date: Sat, 3 Feb 2024 00:26:59 +0100 Subject: [PATCH 28/28] importing 10.7.6-in-progress source tar archive as per today --- Makefile | 4 +- configure-alt | 2 +- doc/CHANGES.txt | 7272 +++++++++++++++++++++++++++++++ doc/COPYING.txt | 1147 +++++ doc/CREDITS.txt | 173 + doc/INSTALL.txt | 249 ++ doc/LOCALIZATION.txt | 41 + doc/TRU64BUILD.txt | 10 + doc/newLISP-10.7.6-Release.html | 69 + doc/newlisp_manual.html | 8 +- makefile_original_install | 2 +- newlisp.c | 14 +- nl-debug.c | 2 +- nl-filesys.c | 2 +- nl-import.c | 11 +- nl-list.c | 2 +- nl-liststr.c | 2 +- nl-math.c | 2 +- nl-matrix.c | 2 +- nl-sock.c | 2 +- nl-string.c | 3 +- nl-symbol.c | 2 +- nl-utf8.c | 2 +- nl-web.c | 4 +- nl-xml-json.c | 2 +- pcre.c | 4 +- unix-lib.c | 2 +- win-dll.c | 2 +- win-util.c | 2 +- 29 files changed, 9002 insertions(+), 37 deletions(-) create mode 100644 doc/CHANGES.txt create mode 100644 doc/COPYING.txt create mode 100644 doc/CREDITS.txt create mode 100644 doc/INSTALL.txt create mode 100644 doc/LOCALIZATION.txt create mode 100644 doc/TRU64BUILD.txt create mode 100644 doc/newLISP-10.7.6-Release.html diff --git a/Makefile b/Makefile index 9aaffed..c7ee601 100644 --- a/Makefile +++ b/Makefile @@ -22,8 +22,8 @@ # and file LOCALIZATION for details # -VERSION = 10.7.5 -INT_VERSION = 10705 +VERSION = 10.7.6 +INT_VERSION = 10706 default: makefile_build make -f makefile_build diff --git a/configure-alt b/configure-alt index 901e3bd..d3fbe91 100755 --- a/configure-alt +++ b/configure-alt @@ -1,7 +1,7 @@ #!/bin/sh PACKAGE=newlisp -VERSION=10.7.5 +VERSION=10.7.6 rm -f config.h makefile_build makefile_install diff --git a/doc/CHANGES.txt b/doc/CHANGES.txt new file mode 100644 index 0000000..77a93da --- /dev/null +++ b/doc/CHANGES.txt @@ -0,0 +1,7272 @@ +6.0.25 +'find', 'replace' and 'search' now have an option for case insensitive +search, updated source and manual + +6.0.26 - 6.0.27 - 11:34 AM 4/4/99 +'trace' got stuck in executeCommandline() in traceExit() because an empty + fgets() in LINUX still has a '\n' + +6.0.27 - 6.0.28 - 6:30 PM 4/6/99 +'import' now returns primitve address +'define' now also works like (define x y) ; as in SCHEME +'char' now defaults to 0 on offset and returns unsigned int +new 'mod' floating point modular function +new 'abs' floating point absolute value function +new 'trim' trims spaces or characters both sides + +6.0.28 - 6.0.29 +'filter' new primitive + +6.0.29 - 6.0.30 +'dump' now displays address of cell +'make-dir' mode parameter now optional defaults to 493 = drwxr-xr-x + +6.0.30 - 6.0.31 +fixed trim, which had all kinds of problems +new 'difference' returns set difference of two lists +new 'intersect' resturns set intersection of two lists +new 'unique' returns unique set from list (duplicates removed) +when comparing lambda expressions, now state lists also get compared + +6.0.31 - 6.0.33 +'match' now also works on list expressions, wildcard symbols +can occur on different nesting levels. + +6.0.33 - 6.0.34 Released on www.newlisp.org +in 'substring' the length parameter is now optional +math exception showed wrong error message +tty setup now only when tty detected else supress buffering +for usage with 'socker' + +6.0.33 - 6.0.35 4/20/2000 +inlined cleanupResults() in evaluateExpression() ca. 4% speedup ! +took out all #pragma statements +took out termio stuff, works better without +new functions read-file, write-file +new functions read-process, write-process +new function error-text + +6.035 - 6.0.36 4/21/2000 +'char' now also can take a number as an argument converting it to a +string of one character: +(char 65) => "A" +(char "A") => 65 +'integer' and 'float' now return 'nil' if the string passed does +not start with a number digit or +/- +strings can now encode characters in the form \nnn where nnn +is a 3 digit decimal (leading 0' if less 100) e.g.: +"\065\066\067" => "ABC" + +6.036 - 6.039 4/28/2000 +added 'chop', 'explode', 'get-float', 'starts-with', 'ends-with' +added 'random' 'normal' +renamed 'get-number' to 'get-integer' +added script for httpd webserver demon + +6.039 - 6.043 +'symbol' now takes optional context argument +'symbols' now gives error message if symbol args is not context +eliminated 'sourcePtr' which wasn't used anyway, introduced +'sourceLine' for keeping track of line-numbers in error messages +added 'encrypt' for one-time-pad encryption/decryption + +6.043 - 6.044 +speedup in deleteList() and copyList() + +6.044 - 6.045 +took out 'sourceLine', too much confusing situtations which are +unresolvable. 'eval-string' now does multiple expressions + +6.045 - 6.048 +put back pushResultFlag, 'eval' needed it. +fixed bug in 'substring' for trailing 0's, changed tokeString to +resemble split() and taking separators > 1 char. +This also changes pack/unpack in parsePackFormat() to take care of +more than one space between formats. +After reset and execution of 'error-event' errorReg now set to 0. + +6.048 - 6.049 +took out executeSymbolParams modifying executeParams for optional arg +'reset' now throws 'user reset - no error' - error, so it can be handled as +a non-error in user defined error handlers, also takes now optional +symbol for 'resetEvent to be exuted after errorEvent. + +6.049 - 6.051 +'reset' now takes optional third parameter for stacksize. So the +syntax for reset is nor (reset [resetEventSymbol] [stacksize]) + +6.051 - 6.052 +no length limitiation anymore for printing strings to the console +'replace-nth' new primitive + +6.052 - 6.054 5/19/2000 +'let' new primitive like in other Lisp but dynamically scoped +'seed' new primitive seeds random generator for rand, random, normal +now feature complete for 6.1 release + +6.054 - 6.055 5/20/2000 +fixed memory leek in varPrintf() +'integer' and 'float' now take optional thirsd parameter for default +return value if string cannot be parsed. + +6.055 - 6.056 +fixed bug in 'symbol' which would not overwrite symbols in MAIN for +symbols in other contexts so (symbol "set" 'MyContext) now works +creating a symbol 'set in MyContext. + +6.056 - 6.059 5/29/2000 +improved pretty printing for 'let', which takes now the same flag +as 'cond'. Improved httpd script, now sends http header for each +file. + +6.059 - 6.060 5/29/2000 +httpd did fail on POST on some browsers now 'upper-case' when matching +'content-length'. Alos fixed in manuual + +6.060 - 6.0.61 +changed 'parse' so it parses a max token length of 2048 (256 previous) +this was already changed erarlier on the Win32 versions. +The read-line limit of 16384 should be changed at some point to infinite +similar to the print buffer. At the moment cgi vi std/IO is limited by +read-line to forms no bigger than 16384. + +6.0.61 - 6.0.62 +varPrintf was still limited. MAX_PRINT_LEN changed to size. + +6.0.62 - 6.0.63 +'integer' now parses also hex strings eg: (integer "0xFF") => 255 +'write-line' now retuenw nil on file errors + +6.0.63 - 6.0.64 +5% speedup introducing cell type masks + +6.0.64 - 6.0.65 +1% speedup taking out symbol in evaluateExpression + +6.0.65 - 6.0.67 +new 'count' counts elements of one list in another list + +6.0.67 - 6.0.68 +fixed error in 'reverse' + +6.0.68 - 6.0.69 +'parse' now without size limitations in tokens when using breakstr argument. + +6.0.69 - 6.0.70 +'string' now without size limitations of printing in string + +6.0.69 - 6.0/71 +'read-line' now without size limitations + +6.0.71 - 6.0.72 +'for' fixed bug when from and to where equal would run forever + +6.0.72 - 6.0.73 +'putenv' didn't work, fixed + +6.0.73 - 6.0.75 +problem with ebaluateLambda when passing (set 'p ...) to (foo p) as an argument +for parameter p. + +6.0.75 - 6.0.76 +additional functions: prob-z prob-chi2 and crit-chi2. (for ...) no works with +floating point numbers. Additional module xml.lsp + +6.0.76 - 6.0.77 +additional function: join. Additional module mail.lsp +additional function: sequence + +6.0.77 - 6.0.79 +additional functions: xml-parse, xml-error +fixed buffer overflow bug in varPrintf to string device (function 'string) + +6.0.79 -> 6.1.0 +new function println +6.1.14 documentation + +6.1.0 -> 6.1.1 +new function fft and ifft +6.1.15 documentation + +6.1.1 -> 6.1.2 +the length parameter in 'sublist' is now optional (assumes all) + +6.1.2 -> 6.1.3 +fixed default for 'true' in 'case' + +6.1.3 -> 6.1.4 +new function 'swap' for swapping elements in a list + +6.1.4 -> 6.1.5 +new function 'read-url' for reading pages/files via http +revision of httpd script more RFC compliant + +6.1.5 -> 6.1.6 +'read-url' nl-web.c now handles proxy's if HTTP_PROXY is set to proxy URL +new functions 'collect'and 'select' for selecting multiple elements from a +list + +6.1.6 -> 6.1.7 Release +'rand' now takes an optional second parameter to return a list of random +numbers (similar to 'random' and 'normal') +many formatting changes in manual. + +================================================================================ +6.1.7exp -> experimental '-p port' mode + +6.1.7 -> 6.1.8 +fixed bug in error event handling when error==0 + +6.1.8 -> 6.1.9 +trace now is a source level debugger, similar in funcitonality to the Win32 +version, but for a character console. +linking now encrypted, new functions 'betai' and 'gammaln' + +6.1.9 -> 6.1.10 +fixed bug which could affect parsing \xxx in getToken() where isdigit(x) +'prob-chi2' now more precise using gammap(), +new functions 'crit-z', 'beta' and 'gammai' + +6.1.10 -> 6.1.11 +new 'debug-highlight' for setting pre and post string in debugger +highlighting. Eliminated example httpget because 'read-url' does +the same. + +6.1.12 -> 6.1.12 +'swap' now treats negative values as the last element, consistent +with other functions, 'read-url' fix in error message text +init.lsp, mysql.lsp etc have moved to /usr/local/newlisp + +6.1.12 -> 6.1.15 +'read-url' now handles also redirects + +6.1.15 -> 6.1.16 +fixed bug in trace mode, trace stopped at all args evals in function +calls. Still stops and shows result for each 'map', which is ok, but +must be documented. Improved subroutines for handling POP3 and SMTP mail. + +6.1.16 -> 6.1.17 +new matrix functions 'invert', 'multiply', 'transpose' + +6.1.17 -> 6.1.18 +fixed dimension problem in transpose + +6.1.18 - > 6.1.19 +fixed missing error text for 'singular matrix' in invert + +6.1.19 -> 6.1.20 +ifft didn't normalize right when N not a power of 2 +evaluateLambda() rewritten to store statics in a way that +anonymous lambda expressions with static data can be stored +this also gave a general speed up of about 5%. + +6.1.20p2 +(nth -1 lst) now returns the last element instead of nil. This +is consisten with other functions + +6.1.20p4 +eliminated optional parameters in reset, because never worked right. +instead the error-event can be used for code after reset and the stack +size can now be specified on the command line. + +6.1.20p5 +eliminated get-state and set-state as primitves, they are now written +in newLISP and part of the initialization file /usr/local/newlisp/init.lsp + +6.1.20p6 +new function 'regex for POSIX 1003.2 regular expressions (GNU library) +ifdef'ed readline, only works in CYGWIN, cannot figure unresolved 'tputs()' etc in +libreadline.so in LINUX, seems not to see libcurses? + +6.1.20p7 +cleanup makefile for different features NANOSLEEP, READLINE, REGEX +cleanup fft +took out replace-match, new function index + +6.1.20p8 +cleanup regex, additions changes in manual + +6.1.20 -> 6.3.pre1 +READLINE finally working on Mandrake missing link to 'libtermcap.so' +lots of manual changes + +6.3.pre2 +preparing to replace simple binary tree for symbols woth RB balanced tree + +6.3.pre4 +running RB balanced tree code + +6.3.pre5 +fixed bug in 'symbols for context and 'delete for context + +6.3.pre6 +changed httpd CHANGES +=============================================================================== +6.3 Release +time-of-day new function + +6.3.01 +a fix for 'regex' in the CYGWIN version sent in by Steve Adams + +6.3.02 +additional optional parameter in 'eval-string' +streamlining code in nl-web.c, reformatting manual so it is easier converted +to PDF + +6.3.04 +new -p commandline parameter for TCP/IP port mode of newLISP. +Fixed format for default data type (will treat as string), +also format will permit now unlimeted size of the formatted +output (was 2047 bytes). + +6.3.05 +cleanup -p with trace for rt/lf translation + +=============================================================================== +6.3.06 Release July 8th, 2001 +optional parameter 'nil in 'eval for silent evaluation evaulates without return +value and prompt on the console, needed for Tcl/Tk integration + +6.3.07 Release +a new function 'debug (shortcut fr using trace) and various bugfixes in the +trace/debug functions. '{' and '}' characters are allowed as string delimiters +but only on the outer level, they get replaced by the parser. This allows +writing 'nicer' source for HTML and TK stuff. + +6.3.08 +regex now also returns sub expressions. further changes in debugger to accomodate +remote TclTk controlled debugging: (q)uit now quits execution, (c)ontinue stops +debugging but continues execution. + +=============================================================================== +6.3.09 Release July 16th, 2001 +string now can take more than one parameters, like concat but works on different +data types + +6.3.10 +added symbol count to 'sys-info' +added ERR: string in error message when in trace for TclTk frontend + +6.3.11 +new function 'dotree' to iterate thrugh symbol trees, usefull for simulating +arrays and hashes + +=============================================================================== +6.3.12 Release July 30th, 2001 +new function 'catch' for catching errors when evaluating expressions +fixed bug in net-connect when trying to connect to dead port + +=============================================================================== +6.3.14 Release August 2nd, 2001 +changes in newlisp_manual.html and newlisp-tk.html +cleanup and improvment of qa file +fixed crash-bug in markReferences and saveSymbol when copying contexts +function 'args' now works also for lambda, no symbol param necessary anymore +=============================================================================== +6.3.15 Release September 3rd, 2001 +xml-parse now accepts empty atribute value strings e.g.: +net-lookup now works in both directions: ip->name and name->ip +=============================================================================== +6.3.16 Release September 6th, 2001 +float division by 0.0 now yields 'Inf', as specified by IEE 754. Before 6.3.16 +it would couse a Math exception. Now all compare operations with NaN return 'nil'. +new functions 'floor' and 'ceil' and 'NaN?'. + +Ctrl-D will now longer crash but exit newLISP + +More LSB compliance in install directories used: now /usr/share/newlisp +instead of old /usr/local/newlisp + +=============================================================================== +6.3.17 Release September 9th, 2001 +fixed a memory leak in 'regex'. The leak could not be fixed in the CYGWIN +version which uses regexp ! + + +6.3.18 +fixed rounding problem in 'sequence', Ctrl-D will not exit but only do newline +if at beginning of line, else it will behave as expected under readline, to exit +newLISP with one keystoke use Ctrl-C instead. +output cleanup in error-text and error-event +better standard behaviour of 'cond' when action clause is missing +new function 'series' for generating geometric sequences. +new function 'rotate' for rotating lists + +6.3.20 Release October 22nd, 2001 +bug fix in xml-parse when parsing closing tags without opening tags +bug fix memory leak in catch and eval-string uder error conditions +about 30% speedup removing copyCell/pushResult in: inc set define +manual changes and additions. +tookout net-cleanup in network examples + +6.3.21p1 +bug fix in 'char' when using with floats +'integer' now also takes floats converting them into integer +also now translates "055" to 45 taking it as an octal number, +which is consistend now with the parser. +'float' now also takes integeres converting into floats + +6.3.21p2 +eliminated symbol->type in SYMBOL typdef, which reduces symbol memory by from 36 to 32 byte +fixed a bug where sometimes newlisp wouldn't exit after tk-frontend exited + +=============================================================================== +6.3.21 Release November 13th, 2001 +MAX_ERROR_NUMBER was to high, parenthesis count wasn't reset when evalCatchFlag + +6.3.22 +fixed potential bug in join with memory intialization +fixed problem parsing URL when redirection in 'read-url' +'get-url/read-url' now also handles 205 and 307 return codes +'get-url/read-url' now always only returns header portion if "header" option is specified +new -d demon mode, like -p but newLISP stays in memory to accept a new connection +new function 'put-url' for HTTP PUT method +new function 'post-url' for HTTP POST method + +=============================================================================== +6.3.23 Release January 6th, 2002 +new function 'binomial' + +6.3.24 +'exit' now closes net work connection when running in '-d' demon mode. +new function 'now' returns detailed date/time info: (y m d h m s us dy dw) +new function 'date-value' converts date/time into seconds since 1970-1-1 +new financial functions 'pmt', 'nper', 'pv', 'fv', 'npv' +bug fix in 'map' which would crash when last arg was not a list (as it should be) +replaced 'MySQL:close' with 'MySQL:close-db' to avoid overwriting of close in MAIN in mysql.lsp + +=============================================================================== +6.4.00 Release March 20th, 2002 +inclusion of BWidget set in the Win32 tk v 0.80 distibution, many manual changes + +6.4.1 +main-args now returns path of program as first list member +get-url "debug" option now can be specified together with "header" option +post-url content-type now is optional and defaults to "application/x-www-form-urlencoded" +added closing channel in get-url +fixed bug in 'join', which could crash on an empty list +httpd, finger and gettime changes for new 'main-args' +balloon help in newlisp-tk v. 081 +new '(tk-args)' when running Tcl/Tk frontend returns newlisp-tk commandline args +several changes in stat.lsp/plot directing temporal files to /tmp +fixed potential crash bug in 'dotree' +Win32 installer now puts desktop icon + +=============================================================================== +6.4.2 Release April 22nd, 2002 +'format' now for multiple args + +6.4.3 development release +'parse' now correctly does handles trailing separator by returning an empty token "" + +6.4.4 +buffer limit in vsnprintf() was not handled correctly, putting a space limitation +on 'string' (16k), 'format' (2k) and 'C' functions depending on varPrintf(), +fixed potential buffer overflow in writeStreamStr(). +'tranpose' did not check for matrix type. +experimental function 'throw' + +6.4.5 Development release +starts-with, ends-with +now are working type polymorph on strings and lists +rotate now takes negative numbers for left rotation +rearranged lambda evaluation (eval args before saving environment), +which causes 6% speed improvements +'args' only available in define-macro (again as before 6.3.14) +changed 'if', 'unless', 'while', 'until' for less CPU stack requirements + +6.4.6 +'nth', 'first', 'last', 'rest' +now are working type polymorph on strings and lists +'cons' works now correctly on 1 arg (who cares? -> consistency proof) +potenial cell-memory leak on error in 'apply' + +6.4.7 Development release +improved syntax for statics environment list as assoc list: +(define (foo a b c ((x 1) (y 2) (z 3))) ....) +to retrieve statics environment just do: +(last (first foo) => ((x 1) (y 2) (z 3)) +also improves speed of ststic processing by about 10% + +=============================================================================== +6.4.8 Release May 16, 2002 +empty? now works on strings +fix for 'cons' when lambda expr is second argument +fix for (rest "") which now returns "" +fix for (first "") now returns nil +purelisp.lsp for prooving consistency +fix for link.lsp on CYGWIN + +6.4.9 Development release May 21st, 2002 +'nil' as a symbol was not always treated as nil value constant +(push exp lst) now works even if lst does not contain a list +in that case old contents of lst gets deleted and initialized +with () before pushing exp, this makes initialization of lists +to '() before pushing on it unnecessary. +'time' now works as a timer returning mseconds needed to evaluate +this is also mor compatible how other Lisp's define 'time' +an expression, for old funcitonality of 'time' use (apply date-value (now)) +'sort' now takes an optional parameter '< or '> for ascending/descending +also about 30% speedup, like in: (sort myList '>) + +6.4.10 Development release May 21st, 2002 +correct treatment of symbol 'nil in 'and' and 'or' +eliminated orSymbol reference in soirce code +speedup parsing source +dump with parameter now returns list (cellAdress, cellType, cellNext, cellAux, cellContents) +stepsize in 'for' 'sequence' always forced to positive + +6.4.11 +'push' in its new form did not respect 'nil and 'true +new error message when trying to set/define/push on 'nil, 'true or context +speedup in multiple compares in nl-math.c +speedup in upper-case, lower-case +speedup in get-char, get-string, get-integer and get-float + + +6.4.12 +boolean types and symbols are equal +another speed improvement in lambad and expression evaluation +over all speed improvement over 6.4.8 now about 5-10% depending +on expression mix. +local iterator symbols are now handled on environment stack for +better error recovery. +new chapter "Data structure objects in lists" in docs and +many little doc changes. + +=============================================================================== +6.5.0 Release May 28th, 2002 +no changes related to newlisp itself except for versioning +changes in httpd (see httpd file) +changes in newlisp-IDE for changes in httpd and changes for date display + +6.5.1 +compiles with -Wall -pedantic -Wno-uninitialized -O2 +-Wall -pedantic for better portability +-Wno-uninitialized to suppress 'fork' 'longjmp' warning in -O2 +-O2 does ~25% speed and size improvement! +'let' did not handle empty parameter lists and now double fast + +6.5.2 development release June 3rd +'concat' is deprecated 'append' doubles functionality of 'concat' +new individual makefiles for making newLISP on different platforms without +the need to tweak makefiles. + +6.5.4 +'find', 'replace' and file 'search' now can do Regular Expressions. +Regular Expressions are not dependend any more on the C-library +on the OS platform used, instead PCRE (Perl Compatible Regular Expressions) +is used on all platforms and the source is contained in the distribution. +Additions to INSTALL file about PCRE and localization of newLISP. + +6.5.5 +fix for 'replace' in regex mode + +6.5.5 -> 6.5.7 +changes in win32.lsp and makefile_win32 +eliminated file: nl-importDM.c was already merged +new chapter 'Lambda expressions in newLISP' in newlisp_manual.html + +=============================================================================== +6.5.8 Released version (functionally equal to 6.5.7) June 13th 2002 +#ifdef NOIMPORT instead of MAC_OSC in evaluateExpression() +spelling stuff in newlisp_manual.html + +6.5.10 +- incorporated nl-web.c into native win32 version to make work get-url, post-url +and put-url. Server modes -p and -d now are working too in native win32 version. + +- newlisp-tk.tcl changed to work with win32 because read-line/write-line don't +work on sockets in win32. + +- writeStramChar() now works also on binary streams + +- newlisp-tk.tcl changed to work on remote connection over the internet. +Shows acceptable speed on dial-up (old newlisp-tk.conf should be deleted) + +- 'reload last' button in newlisp-tk GUI + +- dependency fix in makefile_win32 + + +6.5.11 +- moved to Borlanc C++ v5.5 compiler, gives faster and smaller executable than + Digital Mars compiler previously used. Now all functions of the Linux version + also work in the Win32 version. + +6.5.12 +- changes in newlisp-tk.tcl for faster performance on remote and working + reliable with win32 version. Old newlisp-tk.conf should be deleted. + Win-tk version can now be distributed without CYGWIN DLLs using the + Borland 'C' Win32 compile. + +6.5.13 +- fixed problem in 'net-receive', which was introduced in 6.5.10 + httpd now works fine with win32 compile (with change in line 147 of httpd) + +- send() in net-send and win32_fprintf() now performs check and resend + +6.5.14 +- reintroduced writeStreamChar in 'net-receive', writeStreamChar did not zero buffer +- debug was broken with TK because of missing redefine of fgets() in nl-debug.c + +6.5.15 +- net-close wasn't working in win32 version, which gave problems in cgi in httpd +- new newlisp-IDE-1.3.tgz with fixes for LF -> RET/LF translation which was happening + in win32 pipes + +6.5.16 +- doc changes +- took out again size-check and resend in netSend() and win32_fprintf() as it is + not relevant in blocking sockets +- mail.lsp was broken because of change how optional parameter in 'find' works +- 'read-process' and 'write-process' collapsed to 'exec' +- match for lists now behaves like match for string returning a list of matches + ie. (match '(I * you) '(I love you)) => (I (love) you) + this allows easier substituting of star/* patterns in pattern matches in chat + robots + +6.5.17 +- new option# parameter in 'xml-parse' + (a) option# 1 to surpress white-space TEXT fields (for data XMLs) + (b) option# 2 to surpress empty attribute tags (for tags which never have attributes) + (c) option# 4 to surpress comments + (d) option# 8 to tanslate tag names into symbols + +- new 'xml-type-tags' for definig alternative tags for "ELEMENT", "CDATA", "COMMENT" + and "ELEMENT". Instead symbol can be defined or nil can be specified to surpress + the type tag completely. + +- the newlisp-tk_win32 version now comes with the win32 native compile + +- fixed bug in 'string', which was not reentrant + +=============================================================================== +6.5.18 Release August 3, 2002 +- fixed stream problem in 'eval-string' in Win32 +- fixed openStrStream, didn't initialize stream->handle to 0 + +6.5.19 +- doc changes, renamed mail.lsp to pop3.lsp, sendmail.lsp to smtp.lsp +- memory initialization in p_format() + +6.5.20 +- fixed p_format again, vsnprintf() doesn't include null-char in return count + as advertised in GNU docs +- doc changes + +6.5.21 +- 'explode' now also works on binary contents +- 'file-info' modification and creation time where added +- can now specify \000 in string constants +- in imported function now up to 10 parameters (previous 8) +- odbc.lsp module for ODBC communications + +6.5.22 +- comparing symbols now includes the context name in their comparison +- 'name' new function to extract the name of a symbol as astring without the context +- milli second resolution in 'time-of-day', 'now' and 'time' in Win32 +- newlisp_manual.book for conversion html->pdf with HTMLDOC http://www.easysw.com + this makes a printable manual. Print double sided then cut 8.0 x 9 inch, which is + 2 from the bottom and 0.5 from the right side when printed on 8.5 x 11 inch paper; + then spiral bind (thin round spirals, not the flat once). +- post-url was never working on win32 becuase of missing win32_fwrite + + +=============================================================================== +6.5.23 ----------- released September 17, 2002 +- httpd fix for empty query string +- newlisp-IDE-1.6.tgz now saves files up to 10k, changed POST encoding to multi part + +6.5.24 +- quote wil not evaluate it's argument anymore, but work like Scheme or Common Lisp +- in newlisp-tk the lisp file estension can now be configured in newlisp-tk.config +- in Win32 now line termination gets written as RT-LF, + change also in newlisp-tk.tcl when filling editbox +- net-read-line now protected from deletion in newlisp-tk browser +- prettyPrint will never put newline after quote +- fixed prettyPrint bug when printing empty prettyPrint constructs (while, dotimes etc) + +6.5.25 +- quote fixed again (quoted twice) + +6.5.26 +- doc fixes +- date crashed on values resulting in dates before 1970-Jan-1 00:00:00 + in the Win32 version. In Win32 now minimum value for date is 86400, + which is safely on or after 1970-Jan-1 00:00:00 for all time zones +- NaN can now be put into a variable for comparison +- division by zero now causes a math exception also in floats (previously + inf was returned in cygwin/Unix version and Win32 crashed) +- in mixed arithmetik using integer operators NaN is taken as 0 + +6.5.27 +- new function 'constant' to protect symbol contents from changing +- fixed bug in newlisp-tk.tcl which was introduced after 6.5.23 + which caused problems in Mouse.lsp (_result -> result in 'tk') +- 'div' with NaN value raised exception/crashed in Win32, now + returns NaN +- DOMAIN error messages in the Win32 versions are now silenced + +6.5.28 +- doc changes +- new function 'setq', both 'set' and 'setq' and now can take multiple args + note that old init.lsp should be updated because of macro for 'setq' +- new option number 16 in xml-parse for generating SXML output + +- 7.0.0 pre release +- bug fix for 'string', suppresses all pretty-print formatting +- better error reporting on pop3.lsp and smtp.lsp with debug-flag true +=============================================================================== +- 7.0.1 release October 24, 2002 + merged caveGuy's pop3.lsp mail-id improvements + +- 7.0.2 +- readLineStream was not initizlized during program startup and caused + 'current-line' to crash if not used after a 'read-line' +- direct execution mode with new command line option -e +- in SXML parsing attribute tags where left strings instead of symbols +- 'find' now also does regex when looking up a string in list of strings + +- 7.0.3 +- example in newLISP for put.cgi in newlisp_manual.html +- include cgi.lsp in distribution +- the header in the SMTP interface smtp.lsp was not finished with empty line +- 'save now can save multiple contexts and/or symbols at once +- 'open now has a "append" or "a" option + +=============================================================================== +- 7.0.4 release February 2, 2003 + replace now gives error instead of returning 'nil when second arg not + list or string + new primitive 'lookup' works like assoc with extracting parameter + fixed bug in pop3.lsp + moved to version 5.4 of Freewrap for making the newlisp-tk.exe, which + is now doubled in size because 5.4 doesn't compress anymore (see Freewrap + docs). + +- 7.0.5 + Manual improvements in for correct conversion with HTML2DOC + additional hour offset parameter in 'now' and 'date' + fixed bug in dotree which caused crashes on Windows + 'context', 'dotree' and 'symbols' now accept unquoted + symbol if the symbols is a context. + contexts can be deleted again when empty + The newlisp-tk Windows version is now wrapped with freewrap v.5.5 + and based on Tcl/Tk version 8.4.1 and BWidget v.1.6 + newlisp-tk.tcl has been changed for better usage of 'context' + +- 7.1.0-rc1 + PCRE Perl Compatible Regular Expression support updated to version 4.3 + in 'replace' now replacement pattern with back references and as + lisp expression. Sub expressions are stored in variable $1, $2 ... etc. + $0 contains the whole pattern found. These variables are also filled + in 'regex' 'find' (all functions doing regular expressions). + The new implementation of 'replace' is also faster (about 15%). + example: + (replace "%([0-9A-F][0-9A-F])" str (char (integer(append "0x" $1))) 1) + This will do URL translation i.e.: "xxx%41xxx%42" -> "xxxAxxxB". + +- 7.1.0-rc2 + 'parse' can take regular expressions in sepearator when additional + options parameter is defined (as in find, replace) + +=============================================================================== +- 7.1.0 Release August 28, 2003 + 'search' like 'find' and 'replace' also accepts regular expression + when extra options parameter is given. + [text] and [/text] can be used as string limiters for large text regions + i.e. for HTML in cgi pages written with newLISP. Text limited this way + stays completely unprocessed and contain any characters. + The function 'symbol' accepts unquoted symbol for context parameter + (like 'dotree', 'context', 'symbols') + PCRE Perl Compatible Regular Expression support updated to version 4.4 + extensive manual changes formatting and PDF release + +- 7.1.1 + surpression of some compiler warnings in Mac OSX compile + makefile for linux has strip turned on and readline support + was not the default + +- 7.1.2 + third parameter in 'symbol' for supression of symbol creation, if + not found; return 'nil instead. + HTML manual had formatting error, which caused all after 'regex' + to be in curier. + +=============================================================================== +- 7.1.3 release September 3, 2003 + [text]...[/text] caused problems in TCP/IP communications + +=============================================================================== +- 7.1.4 release September 6, 2003 + uninitialized memory in writeStreamStr() caused problems when + running newlisp-tk and transferring bigger string buffers. + win32_fprintf() did not work right for buffers > 2048, which + caused problems in browsing bigger buffers in newLISP-tk. + +- 7.1.6 + new function 'process' for launching independent child processes + (will not block), new function 'pipe' for use with child processes. + + 'if' now accepts multiple condition-exp pairs and then works like a + cond without parenthesis around condition-value. 'if' with + condition-exp-exp or condition-exp still works like before. + + new 'net-send-udp' and 'net-receive-udp' for UDP communications + without need of net-listen,net-accept and net-connect. + + On Mac OSX 'import' is now enabled using to addtional files + osx-dlfcn.n/h for compiling. This import is for '.dylib' + libaries. + 'append' now also can append binary strings (i.e. containing 0's) + 'joint' now also can joint binary strings (including the joint string) + + if the length of a sublist in slice is 0 then sice returns the empty + list '(), previously returned nil. This is more consistent with the + behavior of slice on strings and at the end of lists. + + 'write-buffer' now acepts both: a symbol or a string + + 'send' now accepts both: a symbol or a string + + 'symbol' pretended to create a symbol although context would not exist + + error messages now include the offending expression/parameter which + caused the error. + + +- 7.1.7 + speedup in UDP communications (no session registration) + memory leak fixed in 'net-receive-udp' + + 'first' of an empty string now returns an empty string, previously nil + + improved cgi.lsp + + 'reverse' now works on strings + +- 7.1.8 + 'throw' now is documented (actually happened in 7.1.7) + + 'collect' and 'select' now also work on strings + i.e: (collect "2001-09-20" 5 6 8 9 0 1 2 3) => "09202001" + + 'slice' couldn't slice lambda's + + memory leak in searchBufferRegex() affecting 'find' and 'replace' was fixed + +- 7.1.9 + 'set' with multiple args had a cell memory leak + + 'transpose' had a memory leak + +- 7.1.10 + logfile support for remote mode -p and -d with '-l logfilename' + + fixed bug in pretty print on command line + + fixed bug in 'save', which went into a loop when saving symbols containing + contexts + +- 7.1.12 + logfile with string -L options also logs remote command line input + + 'fft' and 'ifft' now can take plain numbers instead of complex numbers + or a mixture of both + + regular expression speedup 5 to 50% by chaching the search pattern + and avoiding recompile, speedup greatly depends on complexity of + pattern relatively to the length of the search string + + rearranged functions in source files to make newlisp.c more manageable + + eliminated various unecessary typedefs + + Sun SOLARIS is now supported (not much tested though) + + operating system number in last position of 'sys-info' + linux 1, bsd 2, osx 3, solaris 4, cygwin 5, win32 6 + + strings containig zeros are now displayed correctly i.e. + (pack "c c c" 0 1 2 3) => "\000\001\002\003" + +- 7.1.14 + redundancy in printString() eliminated + + memory leak in 'parse' with regex fixed + + the userdefined function for an error is now reported + + overall speedup since 7104 of about 5% + + commented out undocumented function 'symbol-dump' + +=============================================================================== +- 7.2.0 is 7.1.14 released October 2nd, 2003 + + +- 7.2.1 + moved check for symbol type of lambdaFunc to errorProc for efficiency + + cleanup of unecessary defines in newlisp.h + + defined 'vasprintf()' to take advantage of vasprintf() where available + + 'format' now checks for correct number of arguments and well formed + format string, it should not crash anymore on mismatch of number + and type of parameters + + newLISP-tk is now version 1.0 with changes for multiline 'tk' statements + (stements containing line-breaks), this allows sending bigger Tcl/Tk + code portions in one 'tk' statement + +- 7.2.2 + force creation of $0, $1 ... in MAIN even when used in different context + for the first time + + supress $0, $1 ... in newlisp-tk frontend in variable listbox + (the $ would confuse tk) + +- 7.2.3 + replace-assoc now also uses the system variable $0 for the old + list, which can be reused in the replacement expression, i.e: + + (set 'lst '((a 1)(b 2)(c 3))) + (replace-assoc 'b lst (list 'b (+ 1 (last $0)))) + lst => ((a 1)(b 3)(c 3)) + + replace-nth now also uses the system variable $0 for the old element, i.e: + + (set 'lst '(1 2 3 4)) + (replace-nth 1 lst (+ $0 1)) + lst => '(1 3 3 4) + + added new module 'ftp.lsp' for get/put ftp transfers + + updated module smtp.lsp and program spam-filter + + symbols set with 'constant' now also gets saved with 'constant' + + introduced getContext() for code savings + + added error message in 'import' for win32 + + eliminated win32.cmd + + many documentation changes/fixes, rewritten introduction + added chapter about deprecated functions + + changes in set/define functions for better protection and + error messages of protected symbols + + full stack trace on error messages + +- 7.2.4 + replace-assoc now returns the changed list instead of the old + association found (which is now in $0) + + replace-nth now return the changed list instead of the old + expression found (which is now in $0) + now checks also for missing last argument + + replace now returns changed list or string + for changed list count of replacements in $0 + count for string replacements is not available any more + (could be handled in replacement expression) + now checks also for missing last argument + + remove now returns the changed list + and the number of removed elements in $0 + +- 7.2.5 + chop now also works on lists + + coding improvements in slice/sublist() and substring() + + newlisp-tk 1.02 now on Linux tmp directory is in the home + directory of the user running newlisp-tk + + replace with expression in replacement would overflow CPU stack + after 2048 replacements, now no limit + + cgi.lsp v.1.2 now lives in a context CGI for better isolation + + httpd v.3.0 with bugfixes for big POST buffers + + new module infix.lsp for parsing infix expressions + + in newlisp-tk changed /tmp to tmp for Linux/UNIX + +- 7.2.6 + (new CTX 'CTX2) copies context CTX to CTX2, helps using + contexts a objects, which can be instantiated from a template + context + + 'define' 'constant' used in contexts will always force creation + of the symbol in that context, never overwrite definitions in + MAIN. This is changed behaviour also be reflected in the documentation. + The old way was leading to unexpected definitions in MAIN of symbols + although loaded from a context. 'set' still will first look for a + global in MAIN. + + fixed false error messaging on certain parenthesis errors + + fixed wrong error message when trying to define protected + symbol + + error message 'parameter out of range when calling 'gammai', + 'beta' or 'gammaln' with first parameter 0. + +- 7.2.7 + contexts now can be assigned to variables and referenced + during runtime, i.e. 'contextVar:varName' with late binding + of contextVar. New possibilities of OO programming and lexically + scoped programming, see new chapter in the users manual + about 'Programming with context objects'. + + stronger separation of contexts from context MAIN, only + primitive symbols, context symbols, true and nil are + inherited + + 'new' now returns the new context, formerly 'true' + + 'set', 'setq', 'set!', 'constant' now return the value of + the symbol set when the rvalue is missing i.e: + (constant 'foo) will make foo a constant and return it's + curent value + + protected all symbols in MAIN in newlisp-tk.tcl v 1.03 + against accidental overwrite + + cleaned up toal mess of tem pdir detection in unix mode + + cleaned up init.lsp + + 'nth' now can take multiple indices, i.e.: + (nth 1 2 0 '(1 (a b (c d)))) => c + good for working with matrices or sparse matrices + out of bounds indices return the last in dimension + + 'set-nth' like former 'replace-nth' but multidimensional + like 'nth' + (set-nth 1 2 0 '(1 (a b (c d))) 'x) => (1 (a b (x d))) + +- 7.2.8 + eliminated statics in lambda expression, not necessary + anymore as we have dynamic contexts, which also + create a lexically closure around vars + + fix in dolist, how cleanup is done + +=============================================================================== +- 7.3.0 Released version 2003/11/03 + (cpymen fromAddress toAdress nBytes), address may be integer + or string, only for internal use, not documented. Could be + used with 'dump' to hack lisp-cells and symbols-cells. + i.e. to unprotect a symbol : + (cpymem (pack "c c" 0 32) (last (dump 'sym)) 2) + + fixed error message reporting in 'set-nth' + +- 7.3.1 released Nov 11 2003 + 'import' was broken in Win32 native version when working + inside contexts (odbc.lsp and mysql.lsp) + + (pretty-print line-length indent-string) + experimental not documented yet, to change pretty printing + behaviour, without args returns current status => (64 " ") + 64 length 1 space for indenting + +- 7.3.2 + 'char', 'collect', 'lookup', 'nth', 'pop', 'push', 'select', 'set-nth' + and 'slice' now all accept negative offset which will count from the + end of a list i.e. (slice "newLISP" -4 2) => "LI" + + 'push' and 'pop' now can take multidimensional offsets like + 'nth' and 'set-nth' + + 'collect'/'select' now return the last element for offsets to big + (formerly nil) + + 'pretty-print' now tested and documented + + 1.e-1 or 123. , a decimal point without following digits is + no an accepted number format + + in newlisp-tk the windows position gets now saved when saving + Options/Settings + + fixed bug in 'let' when returning a local var + +- 7.3.3 + new 'push' changed 'nilCell' + +- 7.3.4 + newlisp_manual.html with Kazemori edits + + 'list' now accepts unlimited number of arguments + +- 7.3.5 + 'push' could not append to an empty list + + handling big buffers in newlisp-tk in evaluation + + common floating point exception handling on all + platforms (BorlandC and GCC) + + block mode for remote connection starting with [cmd] + on a line by itself and finishing with [/cmd] on + a line by itself + + sets locale environment on non-US versions of an OS + platform, this enables automatically correct character + handling (i.e. upper-case) on non-engish character sets + +- 7.3.7 + newlisp-tk.tcl now takes advantage of new block mode (multiple + lines in interactive mode). This ways one of the ports in + communication with newlisp could be eliminated and browser-editor + buffers of unlimited length can be evaluated, preferrably in + evaluation without printing (left of the two buttons) + + doc changes for 'silent' + +- 7.3.8 + 'let' now accepts also alternative syntax without the parenthesis + around var - exp pairs: (let (var1 exp1 var2 exp2 ...) body ) + + doc changes for 'let' and chapter 'Lambda expression' + doc change new function 'set-locale' + doc change new sub chapter 'Switching the locale' in chapter + 'Localization and customization' + doc change new file LOCALIZATION + + 'fn' may be used instaed of 'lambda' (save typing) + + 'set-locale' changes usage: (set-locale) => return current + setting, (set-locale "") => switches to local locale with + all option turned on. (set-locale str int) switches to locale + in str with category option int as speicied in "locale.h" of + platform/OS, look for defs of LC_ALL, LC_NUNMERIC etc.. + on startup newLISP tries to swithc to ISO "C" locale. + +- 7.3.9 + 'push' and 'pop' now can take the int-offsets in a list to + work together with new 'ref' which reports the position of an + expression in a nested list + + doc changes (sometimes only small changes) + 'push', 'pop', 'symbol?' new function 'ref' + 'save', 'set', 'Arrays and Hash Tables ...', 'close', + 'cons', 'context', 'delete', 'explode', 'fft', 'find', + 'format', 'intersect', 'lambda?', 'length', 'let' + 'make-dir', 'match', 'net-receive', 'net-select', + 'net-send', 'new' + + changed options flag will trigger recompile when caching regular + expression patterns + + 'select' evaluated args in offset list + + 'join' evaluated args in string list + + 'append'' evaluated the first string arg double + + all type predicates now given an error message if the + argument is missing, previously 'nil' ('true' on atom?) + + getting an int from a 'inf' floating point crashed on Borland Win32 + now returns 0 like on other platforms + +- 7.3.10 + 'remove' didn't check for list type in second arg and bombed + +- 7.3.11 + new compile for Win32 DLL with makefile_win32dll + see file win32dll.readme for unsolved issues + +- 7.3.12 + (replace expr aList) now works like 'remove', but for removing + strings the empty string "" must still be specified: + (replace str aString "") + 'remove' is deprecated and will not be available anymore in 8.0 + + new 'flat' to flatten lists complements multidimensional set + of list functions, example: + (set 'lst '(a (b (c d)))) + (map (fn (x) (ref x lst)) (flat lst)) => ((0) (1 0) (1 1 0) (1 1 1)) + + newlisp.dll now runs qa suite + +- 7.3.14 + DLL now suppresses pop up on FP domain error (thanks Steve) + DLL now also can use print statment, output will be in return + value. + + 'replace' did not work correctly when removing multiple expressions + at the beginning of a list + + doc changes 'replace', 'flat', chapter 'Deprecated functions' + chapter 'DLL module ...' + + error message for "string too long" now reports shorter string + +- 7.3.15 + better error reporting on some string getting functions when arg + is missing + + doc changes license change for documentation, misc. links + + replace could not handle empty search string + + Win32 DLL no contained in Win32 distribution + + fixed error in httpd + +- 7.3.16 + error messages in newlisp.dll where broken becuase of wrong makefile_win32dll + + newlisp-tk.html now reformatted to manual HTML for better maintenance/conversion + + slight optimixation in 'nth' and 'set-nth' + + fix for 'nth' on empty string + + better error messages on missing args in various functions + + link.lsp now also works on win32 DLLs but is not supported anymore + for CYGWIN, use a win32 compiled newlisp.exe and newlisp.dll instead, + both work fine under CYGWIN + + doc change for chapter 'Win32 DLL ...' + + fixed 'silent' mode for DLL + + 'float' conversion noe accepts leading . without zero like the + internal parser + +- 7.3.17 + doc changes as of Sam Cox's and Nigel's postings on + http://www.alh.net/newlisp/phpbb/ on 2003-12-07 + + new functions 'atan2' and 'irr' and documentation + + eliminated compiler warnings for Linux GCC 3.3.1 + +- 7.4.0rc1 + 'irr' now strips of digits less than precision 1e-5 + + 'set-nth' alsow works on strings (singular index) + + 'swap' now works on strings, also return value changed + from swapped pair to changes list/string + + 'pretty-print' had a cell leak + + in the installation for LINUX/BSD etc. the doc directory has been + moved from /usr/doc/newlisp to /usr/share/doc/newlisp + newlisp-tk.tcl 1.07 changed accordingly + + upgrade to PCRE 4.5 files + + 'integer' didn't truncate to -MAX_LONG + + 'integer' did not truncate to MAX_LONG when feeding big + floating point numbers, but crashed on Win32 + + on Win32 float functions on NaN crashed + + doc changes: integer, NaN?, error-event, error-text, atan2 + +- 7.4.0rc2 + enabled error events in Win32 DLL module + + update finger example file and example in doc + doc change 'net-connect' + +- 7.4.0rc3 + floats now work in imported fuctions (tested on x86 platforms) + and up to 14 parameters (previously 10) are accepted, floats + count as two + + nth-set like set-nth but different return value, was in rc2 + but now documented + + doc changes: chapter 'Functions in groups', 'import', 'inc', 'dec' + arithmetik operators +,-,*,/, 'set-nth', 'nth-set' + 'sort', '%', 'mod', '<,>,=,<=,>=' + + doc new file: hacking_newlisp.html with describes previously + undocumented features + + 'for', 'dotimes', 'seqence', 'series' now return a 'invalid parameter: NAN' + error when NaN parameters are passed + +=============================================================================== +- 7.4.0 release 2003/12/20 +- 7.4.1 + commandline switch '-m N' where N is the max number of megabyte newLISP + is allowed to allocate for LISP cells + + setq,set!, define (as set) did not work right with dynamic context vars + +- 7.4.2 + %s format now recognizes precision i.e: (format "%5.2" "hello") => " he" + + various doc changes + + pop3.lsp now handles pop3 servers w/o LAST command, but only on the + functions: get-all-mail and delete-all-mail + + char did not convert the 0 correctly, now: (char 0) => "\000" + +- 7.4.3 + fixed printing context name when in a context other than MAIN + this affected the newlisp-tk frontend since v. 7.2.7 + + many doc corrections, now rev 5 + +- 7.4.4 + (now ... ) returns an additional number 'minutes west of GMT' + for the timezone offset + + the optional time ofset parameter in 'date' and 'now' must now + be given in minutes west of GMT, was previously in hours, + standard when using time zone offsets + + max cell count as specified in command line swith -m now second + number in 'sys-info' if not specified defaults to 0x10000000 + + doc addition of -m commandline switch and change in 'sys-info' + +- 7.4.5 + format now can take unlimited number of parameters, before 2048 + + changes in stat.lsp, smtp.lsp and httpd for new 'sys-info' + +- 7.4.6 + fixed problem in float -> integer conversion of big numbers + + attempt to fix for last parameter of 'now' for solaris (not tested) + +- 7.4.7 + updated to BWidget-1.7 in newlisp-tk (since 7.4.6) + + timezone offset in return value for 'now' set to 0 on SOLARIS + + plotting with stat.lsp and gnuplot was messed up on Win32, now + can also do multiple plot one after another using 'process' instead + of exec + + eliminated 'gettime' example, as that service doesn't run on most + computers these days + + 'import' on Win32 now can use cdecl calling conventions with + additional parameter string "cdecl" when importing functions. + This allows calling many third party DLLs without special wrapper DLLs + On LINUX etc. the extra parameter is ignored. + + mysql.lsp version 2.0, several functions changed and offsets defined + for MySQL v.4.0, previous versions will not work + +- 7.4.8 + improved error message for missing par + + sqlite.lsp - module for SQLite datavase from http://www.sqlite.org + + mysql.lsp small fixes and revised test routine, tested on MySQL v. 4.0 + + 'transpose' now transposes any kind of matrix (previously only matrices + containing numbers; it also rectangualarizes matrices; speed improved + 3 fold. + + in 'if' and 'cond': if the last condition given is the empty listy () + which evaluates to nil in a boolean context, and if no then/else actions + or now cond action is given, then the empty list () is returned (previusly nil) . + + fix for 'date' which crashed at values overflowing int32 (2038 1 19 3:14:07) + + logging has been changed to a fixed filename 'newlisp-log.txt + + new command line switch -h + + better pretty printing of symbols which are constant and global + +=============================================================================== +- 7.5.0 RELEASE 2004-01-21 + cgi.lsp, form.html, form.cgi where missing from FILES inventory + + new 'sqlite.cgi' web script for administering SQLite database in newLISP + + eliminated various unused vars with -w8004 + + fixded bug in 'global' printing + + changed directory structure, new dirs: doc, examples, modules + +- 7.5.1 + (rotate '()) crashed because of list length zero + + fixed nested catch/throw + + fixed lambda stack oberflow after 3000 catch + + eliminated array.lsp instead shorter hash.lsp for hash functions + + changed sqlite.lsp to version 1.6, name change for future + reserved word 'array' + + dynamic context var refs now work inside contexts, this makes + it possible to call constructors from inside the class context + + improvement of floating point speed 60% in simple arithmetik + and 25% in most floating point functions + + (format "%d" 1.23) => "1" before this was not permitted + (format "%5.2f" 10) => "10.00" also allowed now + +- 7.5.2 + (array i j k aList), returns a 1 to 8 dimensional array and + initializes optionally from flat list in aList + + (array-list myArray) returns a list conversion of myArray + + (aray? expr) tests if expression is a list + + all array acces modification via nth, set-nth and nth-set + + also released benchmarks comparing with Perl, Python and Guile, + see at: http://newlisp.org/benchmarks + + +- 7.5.3 + (seek 0) now returns numbers of characters printed to stdout, + works on BSD but on LINUX and Win32 will always return -1 + + 'integer' now takes additional base parameter after the + default parameter, i.e: (integer "1111" 0 2) => 15 + note, that hex numbers still need to be prefixed with 0x + even when specifying base 16 + + added txt2pdf.lsp as a new module in the module directory + + comprehensive manual edit by Brian Clausing (thanks!) + + new chapter about linking LISP source and executable + + all deprecated functions thrown out: + concat, remove, replace-nth, sublist, substring, read-process + read-url, write-process. All have replacements, see manual. + + changed cgi.lsp, stat.lsp, spam-filter for deprecated functions + + 1% overall speed improvement 0.5% size reduction + + nth didn't work on lambda in 7502 + + 'format' increasing of ars beyond 2048 has been rolled back + because of problems when evaluation of args is deeply nested + +- 7.5.3a + changes in newlisp-tk.tcl for deprecated 'remove' + changes in qa for deprecated functions + + +- 7.5.4 + 15% speedup in 'format' + + writeStreamStr() and readStreamText() did not handle zeros + + 'source' like save on strings eliminates tmp directory in + new newlisp-tk v.1.09 + + 1000+ times speedup in XML parsing of bigger files + changing a strncpy() to a memcpy() + +- 7.5.6 + newlisp-tk 1.10 now shows message box when trying to open + debugger with browsers at the same time + + updated FILES inventory + + logging did not work as described (was always on with -p -d) + + net-listen and net-receive-udp take as an additional optional + parameter the address the listening socket should bind for + computers with multiple network adapters + + optional last parameter in net-send-udp for specifying + broadcast mode with 'true' (or anything not evaluating to nil), + not necessary on wome Win OS where '255' on last address byte + is enough to turn on broadcast mode + + Ctrl-C handler simple on Win32 and with continue, exit, reset + menu on LINUX/BSD (somewhat unreliable?) + + Broken Pipe on net-send now handled correctly on Linux/BSD + is handled by socket stack on Win32 + + (slice str 1 -1) does not crash anymore (length arg should + never be negative) + +- 7.5.7 + signal handlers now initialized before loading commandline + scripts + +- 7.5.8 + shorter code for swap + + defunct zombie child processes now cleaned up by 'process' + on UNIXs + + fixed potential bug in regex replace when replacement expression + evaluates to no-string + +- 7.5.9 + all functions changing the contents of a symbol (destructive + functions) will now cause an error when used on symbols protected + with 'constant', previously it worked only with set, set!, setq + and define, define-macro; loop variables in dotimes, for, dolist + and dotree are protected against change by user with an error + message during looping and may not be constant before the looping + starts using them + + new manual chapter about 'Variable names and numbers syntax" + + bug fixes/additions in httpd, now version 3.3 + + fixed potential memory overwrites in nl-web.c + + error message length limited to 1024 characters + +- 7.5.10 + rolled back symbol protection for dotree and dolist, which + is not necessary + +- 7.5.11 + new mode for 'open' "pipe' or "p" opens a named pipe non-blocking + for reading + +- 7.5.12 + rolled back protection for dotimes, for loop variable solving + crash problem in different way + +- 7.5.14 + documentation fixes and compiler warnings fixes + + two additional file for viewing manual in frames with index + + the Win32 installer puts entries in startmenu including an uninstall + + The WIn32 installer puts a newLISP icon in desktop and startmenu links + + protect built-in functions from overwriting with import but the + function can still be imported in a context different from MAIN + + eliminated "pipe" or "p" mode in 'open' instead "non-block" or "n" + as additional option after "read" or "write" option + + net-lookup, net-select, net-send-udp, net-peek did not clear net-error + + net-select now can accept a list of sockets instead of one socket + net-select now has a third mode "exception" or "e" to test error + conditions on socket + + apply works reducing a list when additional reduce count is given + + load takes multiple filenames + +- 7.5.15 + integer and float now return nil or the default value when type + other than string or number is specified, previously this + caused an error message + + expanded chapter on Tcl/Tk Variables in: + "Writing applications with newLISP and Tcl/Tk" + +- 8.0.0rc1 + added more examples to newlisp-tk.html + + allow [cmd] tag in -d mode + + reopen mode in [cmd] section for potential memory leak after + error conditions or on reconnect + + allow contexts to be overcopied (broke benchmarks) + +- 8.0.0rc3 + re-fixes the memory leak for [cmd] tags + +- 8.0.0rc4 + doc changes manpage + + take abs() value in -m commandline option + + reorder help menu for logical sequence of options + + newlisp-tk 1.12 now tolerant for not finding "Fixedsys", + "Lucida Console" or "fixed" fnt. Will take first font found + + newlisp-tk 1.12 now save newlisp-tk.con correctly in home directory + of UNIX (startup dir in Win32) + + man page for LINUX et al, thankyou Nigel Brown + +- 8.0 released April 7 2004 ============================================ + version nunbers changed from 8.0.0 to 8.0 to distinguish + rc versions from final version + + sys-info now returns 7 as OS number of win32dll + + corrections in MemoryManagement.html and newlisp_manual.html + +- 8.0.1 + changed package version number to dotted form for compatibility with + RPM packaging + + changed Makefile install option for RPM compatibility and added + 'make rpm' for makeing rpm package + + man page for newlisp-tk + + array was not serialized correctly in 'source' and 'save' + + negative indices in arrays, which are too big now give out-of-bounds + error (previously took first element as for lists) + + now up to 16 indices can be specified, previously 8 + + changes in docs for array chapter and functions + + in newLISP-tk under Linux/Unix file open dialog now starts + with /usr/share/newlisp/newlisp-tk + + +- 8.0.2 Released 2004-05-02 ============================================ + + httpd version 3.5 + + doc changes + +- 8.0.3 + constant did not allow multiple args + + parse now recognizes zero length token and stops parsing + instaed of going into a loop + + fix for contextvars in tcl/tlk IDE v1.15 and p_context() + + bug fixes in cgi.lsp now v.1.5 + + documentation corrections + + a bug fix in the reset routine + +- 8.0.4 + fixed the fix in reset + + cell leaks in error messages in catch/throw situations are now avoided + +- 8.0.5 + filter now filters nil symbols like nil values (like if, while, not etc) + this effects the function index in the same way + + access system variables $0, $1 ... etc. with an index ($ 0), ($ 1) .. ($ i) + where i is an integer + + bug fix for catch when result variable has same contents as return from + catch statement + +- 8.0.6 Released 2004-06-06 ============================================ + new env replaces deprecated environ, getenv, putenv (still available but + to be eliminated in 8.1) + + additional paragraph about ovewriting global symbols in the chapter + 'Contexts' + +- 8.0.7 + net-receive-udp can take an additional timeout parameter + + doc changes for net-receive-udp + + new example whitelist-filter for email filtering + +- 8.0.8 + trim now can take optional second trim-character parameter: + (trim "---HELLO===" "-" "=") => "HELLO" + (trim "0001234" "0" "") => "1234" + allows trimming of only one side (empty string) or different + trimming left and right + + new functions 'utf8' and 'unicode' to convert between utf8 + and UCS-4 encoded Unicode + + UTF-8 versions of: char, upper-case, lower-case, first, rest, + chop, explode, last, trim, collect select, + nth, set-nth, nth-set + + any positions/indices in the UTF-8 versions of char, nth + set-nth and nth-set refer to (multibyte)character positions + rather than byte positions + + find and regex return byte positions, slice takes byte positions + reverse always works on byte level, to reverse utf8 strings use: + (join (reverse (explode str))) + + changed parsing of octal numbers 090 now "0" "90" + +- 8.0.9 + 'source' now also working on context symbols + fix for 'trim' in utf8 version + fix for 'set-nth' and 'nth-set' in utf8 version + version 3.7 httpd fixing problems with post on IE + +- 8.0.10 + 'net-sessions' now registers connecting peer in -p -d modes + makefiles for MinGW compiler for newlisp.exe and newlisp.dll + MinGW will eventually replace Borland BCC 5.5 as the default + compiler for the Win32 binary distribution + +- 8.0.11 + a fix for server crash in -d mode when reconnecting on Linux + +- 8.0.12 + now will reset when client exits in -d demon mode (still does + not maintain demon mode on slackware 2.4 but Debian 2.6 + Linux Mandrakae 9.2/2.4.22 and FreeBSD 4.7 are OK) + + new function (dup expr n) repeats expression n times in + list or string + function 'pipe' works on MinGW compiled version + +- 8.0.13-14 + fix of 'test-pipe' in fle qa + new option in Makefile: make uninstall + /usr/share/newlisp/init.lsp now tries to load $HOME/.init.lsp + as a user specific .init.lsp after the system wide init.lsp + $HOME gets defined as (env "HOME") or (env "USERPROFILE") + or (env "DOCUMENT_ROOT") + whatever is available in that sequence + fixes restart problem in demon mode + +- 8.0.15 + makefiles for newlisp as a shared library on Linux and BSD: + newlisp.so, the function to import is: newlispEvalStr + + 'print' and 'println' in newlisp.dll now are always + returned correctly in the return value of 'dllEvaStr' + was not working correctly before in many cirumstances + + 'newlispEvalStr' will replace 'dllEvalStr' in future + version in newlisp.dll, at the moment both work + this change was made for consistency over platforms + + new chapter "Shared library newlisp.so on Linux/BSD" in users manual + +- 8.0.16 + doc changes for 'net-receive-udp' + 'net-receive-udp' can now receive on a specific IP address, this + was documented already but not working + + 'net-connect' and 'net-listen' ca use a "udp" option to do + nonblocking UDP data exchange with net-send and net-receive and + without immediate closing of socket as happening using + net-receive-udp and net-send-udp. See documenataion for + net-listen and net-connect in the manual + + improved error message for missing parenthesis + + newlisp.vim VIM syntax file now included in source distribution + thanks to David from http://www.geocities.com/excaliborus/ for + this contribution + + updated the CREDITS file + + all predicates, which ended in p when using HTML (i.e. listp for list?) + have been renamed to using the '?' instead of 'p' in HTML to make + utilities, which position in the newlisp_manual.html work + +- 8.1.0rc1 + fixed memory leak in 'irr' + + new 'net-receive-from' and 'net-send-to' for non-blocking UDP + communications over open connections + +- 8.1.0rc2 + an almost double speed and smaller parser for pack/unpack format strings, + which does not need spaces in between the format specifiers + + a fix in net-send-udp not closing the socket after the new changes in rc1 + + doc changes + +- 8.1.0 Released version on 2004-08-10 ======================================== + two new example programs: udp-server.lsp and udp-client.lsp to demo + non-blockig UDP communications + + merged bugfixes from dlcompat as of cvs 2004-07-12 Peter O'Gorman + this affects only Mac OSX + + added -c option for suppressing the prompt + + added node.lsp in modules directory for building newLISP clusters. + + new versions of several modules and example files to account for + new version numbering + +- 8.1.1 + sleep now rounds to the nearest full second on systems where nanosleep() + is not available. + + timeout option in net-receive-udp works again + +- 8.1.2 + 'make install_home' and 'make uninstall_home' of installations on Linux/UNIX + in the home directory of the user in $HOME/bin and $HOME/share/ + + 'search' crashed on invalid filehandles + + new 'expand' for expanding variable bindings in lists + +- 8.1.3 + a fix for 'get-url' on some Solaris installations + +- 8.1.4 released August 21st, 2004 ========================================== + doc changes ansd new option 'make version' for changing version numbers + in all affected files + +- 8.1.5 + nl-sock.c missed a change for Win CE, PocketPC + + qa - testfile now complete with all functions, use: ./newlisp qa to test + without process and test functions using process, or use: ./newlisp qa ext + to test for all function (only Win32 and Linux) + + a fix for timeout values > 1000000 usec on BSD and Solaris in net-select + and net-receive-udp + + in net-listen and net-connect specify "multi" or "m" instead of "udp" + for UDP Multicast mode + +- 8.1.6 + 'collect' and 'select' are collapsed into 'select' which is now also + type polymorph on the second parameter. + + new makefile_solaris_utf8 + + new 'fork' function for lauching a newLISP child process thread + on Linux/UNIX only and CYGWIN on Win32. + +- 8.1.7 + fixed rounding error in 'sleep' when compiled with NANOSLEEP + + improved qa routines using 'fork' on Linux/UNIX for some tests + +- 8.1.8 + new 'wait-pid'for watching the status of child threads created with 'fork' + and proccesses created with 'process' + + upgraded to PCRE v. 5.0 + + more tweaks in qa file + + fixed potential memory leak in 'new' + +- 8.2.0 Release September 21st, 2004 ====================================== + +- 8.2.1 + write-buffer can now take string instead of file handle to write + to a string in a string growing (concatenating) fashion, this is + much faster then doing (set 'str (append str content)) now: + (write-buffer str content) + + 'symbol' now can overwrite global symbols from MAIN (i.e. built-ins) + i.e. (symbol "print" 'MyContext) + + 'process' now ca take to addtioal pipe handle parameters, which + get mapped to stdin and stdout for the new process: + (map '(myin bcout) (pipe)) + (map '(bcin myout) (pipe)) + (process "bc" bcin bcout) + (write-buffer myout "3 + 4\n") + (read-line myin) => "7" + + 'semaphore' lets you create wait and signal semaphores + (set 'sid (semaphore)) ; aquire + (semaphore sid -1) ; wait + (semaphore sid 1) ; signal + (semaphore sid) => 1 ; status + (semaphore sid 0) ; release/delete + + 'share' to create shared memrory regions + (share) => address off mmap share + (share addr exp) => sets addr to exp for integers, floats and strings + (share addr) => returns integer, float or string exp + + added newLISP-Excel-Import.xls example to examples/ directory + added prodcons.lsp - demo for fork, wait-pid, semaphore and share + +- 8.2.2 + 'write-line' with string device like 'write-buffer', in both + symbol is now protected if protected with constant + + share was broken for strings + +- 8.2.3 + + pipe is now also available on CGWIN and Borland compiled versions + on all Win32 versions pipe can now remap std I/O like on Linux/UNIX: + + (map '(myin bcout) (pipe)) + (map '(bcin myout) (pipe)) + (process "bc" bcin bcout) + (write-buffer myout "3 + 4\n") + (read-line myin) => "7" + + process on Win32 can hide or minimize window: + (process application 0 0 0) => hide app + (process application 0 0 1) => show app + (process application 0 0 2) => minimize app + + 'share' and 'semaphore' are now also available on Win32 + + improvements in qa file, now tests all functions by default w/o ext option + better syncronization on some tests with semaphores + + 'match' in list mode now only returns matched expressions + + (map set '(x y) (match '(a (? c) d *) '(a (b c) d e f))) + x => b + y => (e f) + + when using match with an optional third parameter 'true', it works + in the old fashion: (map pattern aList true) => works like before + + The context default function is a userdefined function with the same name + as the context it resides in, i.e: (define (ctx:ctx a b) (+ a b)) and can + be called just with the context name (ctx 3 4) => 7. + Default functions should only be called rom MAIN, or have already been + loaded or their context created before referred to in another context or + default function. Not yet 'official' see doc/default_functions.html + + fixed cell leak in 'match' on backtracking + + bug fix in let which did not honor protected symbols + +- 8.2.4 + deprecated collect, getenv, putenv and environ completely eliminated from + newlisp and examples, modules: httpd, cgi.lsp, sqlite.lsp + + '+' new wildcard operator 'match': take one or more + + net-error now returns error number and text separate in a list + + net-connect failure did not set net-error + + 'now' has now the daylight-savings-flag 0 or 1 as last parameter + + new 'sys-error' for reporting C-library errno values + + 'newlisp -e' without a command string crashed + + 'push' now optimized when pushing as last element with -1 + + (new ...) now will not overwrite existing symbols, to allow true + mixins of other contexts. To overwrite symbols as before version + 8.2.4 use the true as a third parameter i.e. (new A 'B true). + +- 8.2.5 + 'symbol?' can now be used on dymamic context vars, i.e + (set 'ctx MyCTX) ; MyCTX is existing context + (symbol? 'ctx:x) ; true if MyCTX:x exists, nil if not + This checks the xistence without inadvertantly creating it. + previously (symbol "x" ctx nil) had to be used. + + 'replace' can now take an additional option bit 0x8000 for replacing + only once in a string: (replace "a" "aaa" "A" 0x8000) => "Aaa" + + + 'define-new' copies individual funtions from + other contexts with or without renaming them to a new function:. + (define-new 'foo:func 'bar:func) copy to different context + (define-new 'foo:func 'foofa) copy to current and rename + + forward referece to a symbol in symbol did not work in mixin mode + of 'new' + + the space between optioncharacter (-s,-m,-p,-d,-e) and optionvalue + can now be omitted, i.e. -s 10000 and -s10000, both work. + + 'date' without an argument returns the character string for the current + local time, this avoids the construct (date (apply date-value (now))) + + 'date-value' without and argument returns the time of seconds + since 1970-1-1 0:00 equivalent to (apply date-value (now)) + +8.2.6 + 'delete' now can delete an entire context without removing conatined + symbols first + + serialization of contexts to a file using 'save' now is done correctly + when the context context contains overwrites of global symbols. + + a more flexible and faster 'symbol' function, which can take any character + sequence and numbers, and can be used this way for hash-like associative + memory access. New module hash.lsp to show usage. + + 'define-new' renamed to 'def-new', for shorter typing and for not + associating it to 'define' but rather to 'new' (was introduced in 8.2.5) + + 'letn' works similar to 'let' but incrementally uses the local variable + bindings like multiple nested let when evaluating the initializer expressionsi + for locals. + +8.2.7 + 'address' (previously only documented in 'hacking_newlisp.html') now also + returns addresses to integer and double float data type, useful when passing + int * or double * to imported functions, now documented in main manual + + 'sym' is an abbreviated form of 'symbol', since 'symbol' starting in 8.2.6 + can take any sequence of characters, including strings which are illegal + symbols in newLISP syntax, and is used for hash/dictionat like lookups, it + is used more often, therefore this shorter form 'sym' is introduced + + added configuration variable in newlisp-tk.config to specify a newLISP + application. See newlisp-tk.html "Delievering Applications" for details + + 'apply' and 'map' now can be used on macros + + 'pack' and 'unpack' have new format specifier 'b' for unsigned 8bit numbers + + 'encrypt' crashed on empty strins in key + +8.2.8 + 'encrypt' crashed on empty key-string, now gives error message + + 'int' as shorter writing of 'integer' + + 'pack' now converts all types as needed, i.e. (unpack "b" (pack "b" -1.0)) => 255 + from-to integer-floats, did it before only for "f" and "lf" + + 'flt' converts a number to a 32bit float repesented by an integer for usage + in calling imported library routines, which take floats. + + 'array' skipped wrong index types instead of giving error message + +8.3.0 Released Nov 21st, 2004 + +8.3.1 Released Nov 23rd, 2004 ============================================ + 'nth-set' gave error on protected symbol in index + + 'apply' 'map' on macro was returned to 8.2.0 behaviour + +8.3.2 + more cleanup in qa file + + cleaned up makefiles -D definitions eliminating redundant -DOPSYS + + eliminated 'break', which did not do anything after introduction + of 'debug' in version 6.3.07 + + overall speedup of about 5% by predefining system symbols + $0 -> $15, speedup of 80% to 100% in functions using system + symbols like set-nth, nth-set, find, parse, regex, replace + + new 'do-while' and 'do-until' check condition _after_ evaluating + the body expressions + + new 'read-key' reads nonblocking keyboard character code + not working on Mac OSX but all other flavors + + superflous args in user defined function call caused cell leak + never happened, i.e.: (define (foo x) ..) and (foo a b c) + + 'get-url' now handles "Transfer-Encoding: chunked" correctly + + 'amb' picks an argument at random and evaluates it + + -x command line switch for server mode with handler function + 'x-event' i.e: newlisp my-httpd -x 8080 + my-httpd is a lisp file containing the user defined handler + function i.e: (define (x-event request) .....) + this way servers for different protocols / requests can be simply + programmed using 'print','read-line', etc., for IO to the specified + port, the connection stays up until closed by the client. + See chapter 'Command line options ...' in the manual + + fixed a bug in 'new' and 'def-new' when the source was MAIN + this fix was necessary to write a function (def-static ....) + for writing statically scoped functions (see int the manual + chapter 'Lexical, static scoping in newLISP', subchapter + of 'Programming with context objects'. + +8.3.3 + 'debug' did not handle default functions written without colon + + 'save' 'source' did not space symbols under sum circumstances + + 'dolist' now double as fast and safe to break out with 'throw' + + 'catch' now has an additional syntax with just one argument to write + easier returns from functions, loops or blocks, ie: + (catch (dotimes (x 1000) (if (x 500) (throw "fin"))) => "fin" + returns the result or throw argument + +8.3.4 + 'save' 'source' spacing-fix was incomplete + +8.3.5 + If the a '!' is entered as the first character on the command line immediately + followed y a shell command, that command will be executed, i.e. !lsi in Unix + or !dir in Win32 would show a directory listing. There should be no space + between '!' and the shell command. + + URL length in get-url and post-url is now unlimited + +8.3.6 + manual corrections, additions and new sub-chapter about XML-RPC + + BASE64 encoding and decoding with 'base64-enc' and 'base64-dec'. + + new sign-on message, and different for remote modes + + added 'xmlrpc-server' to examples directory + added 'xmlrpc-client.lsp' to modules directory + + fix for 'Transfer-encoding: chunked' if 'Content-length:' + is given too (which should not happen but is found occasionally) + +8.4.0 Released 2005-01-18 ============================================ + added xmlrpc.cgi for handling XML-RPC requests as CGI + + fixed a file descriptor leak in -d -x modes + + after the 'debug' fix in 8.3.3 debug did not recurse into funcs + + 'args' can take an index argment i.e. (args 0) (args 1) etc. + +8.4.1 + fixed signon message missing 'n'ewLISP + + added UTF-8 to signon message + + added f-prob to stat.lsp (probability of F ratio for df1/def2) + + (throw-error expr) throws an error with message printed in expr + error thrown this way can be handled like any other newLISP error + using (catch foo 'result) or with (error-event ...) + + changed/added docs for catch, throw, throw-error and chapter: + Integer abnd Floating point ... + + newlisp-tk.exe now wrapped with freewrap v.6.0 and Tcl/Tk 8.4.8 + suppresses occasional display of tcwish console + + added updated newlisp.jsf syntax file for JOE editor to distribution + +8.4.2 + [cmd] tags did not work when compiled with READLINE option + + (args) which previously worked only in macros now too works in + functions. The behaviour of (args) has changed: only unbound arguments + for which there is now local variable in the macro (or function) are + returned in the list. This makes changes in existing macros necessary, + which specify both, local variables and they use args. Most changes + lead to simpler macros or function, because (args) already contains + only the unassigned args. + + changed macro definition of 'tk' in newlisp-tk.tcl to function + + changed plot 'macro' in stat.lsp and 'defun' in init.lsp + +8.4.3 Release 2005-02-12 ================================================= + cleanup from (args) changes, protect $args from deletion + +8.4.4 + misplaced paren in conditional def of defun in init.lsp + + OS number in sys-info was incrementing on every call when DLL or UTF-8 + + decimal point setting from locale is now used correctly when parsing source + i.e. after performing (set-locale "German_Germany.1252") in Germany + 1,23 will be recognized corectly as a decimal number with comma as the + decimal separator. + + qa_comma QA test file for German or other locales using ',' comma as + decimal separator, qa renamed to qa_dot for decimal-dot locales. + In comma locales both, qa_dot and qa_comma should work, in decimal + dot countries onlz qa_dot will work. + + daylights savings field in 'now' function now shows a flag 1/0 if time + zone may have DST at certain time of the year on Linux/UNIX. On Win32 + it shows a 'daylight minutes bias' for timezones which may have DST. + Note that flag/bias is set through all the year even if DST is not + in effect at a given moment. May not work on all platforms. + + additional format parameter in (date num offset fmt), see GNU gcc + strftime() function for details + + Win32 installation now to $PROGRAMFILES/newlisp, which is + c:\Program Files\newlisp on English Windows. This defines a + fixed location for $PROGRAMFILES/newlisp/newlisp.dll for applications + loading newlisp.dll. 'PROGRAMFILES' is an environment variable available + on all MS Windows installations. + + newLISP is now correctly registered in the + 'control panel/add or remove programs' applet + +8.4.5 + newlisp.exe compiled on MinGW or Borland now will look for init.lsp + in the same directory where newlisp.exe resides + + installer now sets path on Win32, this allows to import the DLL without + specifying the full path and allows to start newlisp or newlisp-tk from + anywhere on Win32 + + installer now allows installing without newlisp-tk + + 'nth' upgraded to 16 indices (like set-nth and nth-set) + + 'sort' now allows any binary operator user defined function as + compare funtion in third parameter + + 'implicit indexing' on lists, arrays and strings i.e.: + (lst 1 3) equivalent to (nth 1 3 lst) + (ary 0 -1) equivalent to (nth 0 -1 ary) + ("newLISP" 3) equivalent to (nth 3 "newLISP") + unlimited number of indices and faster than explicit form + + 'pack' and 'unpack' now allow switching between little and big endian + byte order using new format characters '<' and '>' + + +8.4.6 + 'new' and 'def-new' did not replicate arrays, could cause crash + +8.4.7 + added 'upload.htm', 'uplload.cgi' to examples directory + minor fix in xmlrpc.cgi xmlrpc-server + + better handling of bad server responses in get/post/put-url avoiding + an ifinite loop on some types of bad server responses + + fix for endian switch in 'unpack' which changed the original buffer + + re-arranged arrays, hashes and indexing chapters in the manual and + enhanced hashing chapter, added Win32 trailing slash warning to + manual entries of 'directory' and 'directory?' + + experimental implicit indexing with nrest: + (1 '(a b c)) => (b c) + (1 "abc") => "bc" + +8.4.8 + implicit indexing with slice: + (3 2 '(a b c d e f g)) => (d e) + (-4 2 "abcdefg") => "de" + + updated infix.lsp to version 1.4/5 was broken after newLISP 8.2.0 + because of change in 'symbol' functioanality + + possibility to check legality of a string as a newLISP source symbol + with (symbol? string), i.e: (symbol? "a b") => nil + + illegal symbols are now serialized correctly in 'save' using a + set expression with (sym str context) + + the Win32 installer now will correctly change settings in + newlisp-tk.config when chaning the install path during installation + will only work Windows 2000 and later + +8.4.9 + did not evaluate length in implicit slice-length + +8.4.10 + separated legal symbol? functionality into 'legal?' function. 'symbol?' + back to pre 8.4.8 functionality + +8.5.0 Released April 8, 2005 + '=' fixed problem when comparing strings and binary buffers + + 'args' with negative index did hang + + 'main-args' nor can be indexed like args, both accept negative indices + +8.5.1 + newlisp-tk tripped over file spec "", changed to "." in lastLoadedFile + on MacOSX. Changed Demo.lsp to work with TLCKAqua on MacOSX. + + new function 'factor' for factoring numbers up to 15 digits + (must give floats for numbers bigger max int) + + in newlisp.so and newlisp.dll main-args was initilized to nil instead of + the empty list () + + list in 'dolist' now safe to modify (back to 8.3.2 behaviour), but can + leave with 'throw' without leaking cells + + signalling SIGUSR1 will perform a 'reset' but not kill newLISP + + 'timer' start a one shot timer event and registers a user defined + event handler, i.e: (define (ticker) (println (date)) (timer 'ticker 1)) + defines a self starting and retriggering ticker. + +8.5.2 + added debug option to SIGINT handler, eliminated SIGUSR1 handler, because + is redundant + +8.5.3 + added 'signal' for userdefined signal handlers: (signal sig-no symbol) + + args was not reset to '() when left unused in recursion levels + +8.5.4 + signal handler can pass the signal number as an argument (see manual) + + new makefiles for OSX/Darwin UTF-8: make 'osx_utf8' and make 'darwin_osx_utf8' + (Darwin means: OSX + readline support) + + when compiled with readline support newLISP will now exit pressing Ctrl-D + (Linux/UNIX) + + 'net-select' crashed on an empty list + +8.5.5 + fixed UTF-8 problems in file names in newlisp-tk.tcl (thanks Norman) + + UTF-8 symbols where not treated as legal symbols in 'save' , 'legal?' + This prevented UTF-8 symbols to show up in the editor/browser listbox. + This is now fine on all UTF-8 and non-UTF-8 version. + + UTF-8 now handled correctly in hostnames in net-xxx routines + + UTF-8 now handled correctly in 'float' and 'integer', took some + UTF-8 characters for numbers. + + 'net-connect' and 'net-select' did not accept/convert floats for + portnumbers/sockets + + sqlite3.lsp v.1.3 now handles FLOAT and BLOB datatypes and finds the correct + library/location depending on the OS platform + + newlisp-tk did not save pathnames correctly in newlisp-tk.conf. New + + version newLISP-tk 1.26 now works correctly when installing on MacOSX + use 'sudo make install' after build with 'make darwin' or 'make osx' + needs TclTk Aqua installed with darwin port tools + +8.5.6 + fixed potential problem in 'net-connect' with multicast option on + big-endian CPUs (MacOSX) + + added broadcast option to 'net-connect' as udp mode plus broadcast specified + with "b" or "broadcast" instead od "udp". Broadcast mode was already possible + in 'net-send-udp'. Now broadcast can be set up in non-blocking mode on the + receiver side. + + +8.5.7 + big speedup of 'replace' with strings on a file of 100k about 30x on + 500k about 500x times speedup. + + added example/tcltk.lsp for showing how to make GUIs without newlisp-tk + controlled from a newlisp script + + +8.5.8 + added true/nil as allowed data in memory shares + + added new make flavor osx_lib for shared library newlisp.so + + MacOSX binary are smaller now because since 10.3 osx-dlfcn.o + is not required anymore, but extra makefile_osx_10.2 for older + Mac's + + flushing stdio after output if not in terminal mode lets newLISP + now serve as a UNIX inetd handler + +8.5.9 + 'timer' now can take fractions of a second, i.e. (timer 'alarm 0.1) + for 100 millisec + + 'read-buffer' now can take an optional wait string as 4th parameter + similar to 'net-receive' with wait string + + added Mac OSX package preperation to Makefile + + dropped cygwin support. MinGW and Borland remain as Win32 options + #ifdef's for cygwin are still there but have not been tested for + several versions + +8.5.10 + fixed a crash when hitting cursor-up inbetween [cmd]...[/cmd] tags + + 'timer' now avalailable on Win32 + + fixed a regex error, when expression found is of length 0 + only one replacement was made + + implicit indexing did not accept indices after a var-index, if + var-index was the first. + +8.6.0 released June 10 2005 + a bug fix for unpack when passing a number as an address on + OpenBSD where virtual memory pointers may be > 0x7fffffff + + new function crc32, version: http://www.w3.org + + share on Win32 leaked memory + +8.6.1 + 'sql3:open' now returns nil and sets error the message when trying + to sql3:open twice. + + 'timer' now returns the elapsed time when calling just with the + event symbol, useful for checking timer progress or programming + timelines/schedules. + + 'source' now works like 'save' and can take multiple symbols; + context symbols are serialized including all of the contained + symbols. + + Files are now created without execution permission with rw-rw-rw + which results in rw-r--r-- on UNIX systems assuming a user mask + of 0022. + + 'peek' similar to 'net-peek' but for any file descriptor, returns + number of bytes ready to read works also on std I/O 0/1. Only UNIX. + + Added gmp.lsp for GNU Multi Precision library, contains + integer functions for arithmetik, see header of file gmp.lsp + for details. + + optional parameter 'true' in 'difference' and 'intersect' puts + these functions in list-mode (versus normally set-mode). + + new function 'title-case' upper-cases first character and + optionally lowercases the rest characters + +8.6.2 + changed makefile_darwin_utf8 to work on standard 10.4 installation + + a parameter in utf8 version of upper/lower was evaluated twice + caused by new title-case code in 8.6.1 + + fixed append mode in file 'open' which created file with ------ + permissions when file did not exists + + optional 'true' flag in net-lookup to force hostbyname() lookup + for strings like "216.16.84.66.sbl-xbl.spamhaus.org" + + huge speedup for 'difference' and 'intersect'. On a 10000 elment + list about 100 times speedup, both functions now scale linearly + with n+m instead of n*m, when n an m are the lenghts of the two + lists + + speedup of 'count' for big item lists now scales m+n instead m*n + when m is the list of items to count in list with length n + +8.6.3 + 'difference' did sometimes not unique, 'nil' treated incorrectly + +8.6.4 + fixed problems in 'count' and 'sort' caused by changes in 'sort' + necessary in new version of 'count', 'difference', 'intersect' and + 'unique' + +8.6.5 + 'catch' did not respect protection of symbols in the catch symbol + + make version with sed finally working on UNIX previously only + cygwin + + new function 'randomize' shuffles the elements of a list + + new function 'net-eval' evaluates a batch of functions remotely + on newlisp servers, manages Tcp/Ip communications and data collection + with multiple servers started with: newlisp -c -d + timeout and optional callback/idle function + + 'array' with 0 length dimension crashed, now ignores 0-length + + -d mode would exit when loss of communication in multiline [cmd] mode + now just cycles to restart + + 'error-event' only worked in programs loaded interactively, now works + also defined in scripts started on the command line + + -l and -L now usable for logging in normal console mode, -l logs only + user input -L logs both user input and newLISP output (without prompt) + new chapter for logging in users manual + + when evaluating multiple expressions on the command line or a batch + of expressions enclosed in [cmd],[/cmd] tags multiple results are now + separated by one space. + +8.6.5-7 + 'ramdomize' looped on listlen 1 + + 'load' now throws an eror when the file cannot be found or returns + the value of the last expression in the file evaluated. Before 'load' + returned 'nil' when file was not found and else 'true'. Note that this + required a change in init.lsp to catch error when trying to load + $HOME/.init.lsp + + eliminated all sprintf() to avoid security warnings on openBSD compiles + + 'erf' and 'sgn' new functions + + took out txt2pdf which is broken, will come back when fixed + + fixed leak in evluateStream introduced with 'net-eval' + +8.7.0-rc1 released October 10th 2005 + 'get-url' now acccepts https:// pages in main url or moved location + + 'sgn' extended with optional triconditional functionality + + fixed result stack leak in 'net-eval' + + 'get-url', 'post-url' and 'put-url' now can take a timeout parameter + + 'read-buffer' with wait string now will put bytes read in buffer + including when the wait string was not found. When no bytes are + read buffer is nil. + + 'date-value' returned negative numbers on dates earlier 1970, now returns + 0 on dates previous to 1970 + + 'net-eval' would loop on connection errors, more detailed error messages + +8.7.0 released October 15th + 'append-file' like 'write-file' but appends + + 'select' on lists with an empty selection list now returns the empty list + previously nil. + +8.7.1 RELEASE Nov 7th, 2005 + fixed bug for push -1 optimization and various doc corrections + + replaced 'integer' with 'int', 'get-integer' with 'get-int' and 'symbol' + with 'sym' in several examples/ and modules/ files + + (nth ) now throws error (list index only allowed in + push/pop and implicit indexing) + +8.7.2 development Release November 20th + new (net-ping host wait-time) returns ip-no or multiple ip-no for multiple + addresses in batch-mode or broadcast. Must have root privileges to use, or + set the newlisp executable set-user-ID with: chmod u+s /usr/bin/newlisp or: + chmod 4755 /usr/bin/newlisp; only on UNIX + + 'time' now safe for midnight wrap + + 'dup' with optional 'true' flag now can force list return when a string argument + is given; by default 'dup' concatenates the string + + sys-error now reset after readline(), which caused it set to 22 + + 'transpose' on empty lists segfaulted when on zero length dimension in the + first row, now an error message will be issued if the first row is empty + + imnplicit rest failed strings when n was >= length of string + + 'count', 'difference' and 'intersect' crashed when handling identical lists + +8.7.3 development release November 27th + added "list" flag to 'get-url', which permits capturing header and page in a list. + + added custom header option to get-url, post-url and put-url + + string display translation for char > 126 to \nnn format + +8.7.4 development release December 5th, 2005 + expanded functionality for 'context': (context 'CTX "symstr" value) + adds symbol to context CTX, (context 'CTX "symstr") returns value + this is a short form for: (set (sym "symstr" 'CTX) 123) + + expanded form of 'context?' for checking existence of a symbol + + 'time' takes an additional parameter for the number of times the + expression should be evaluated for timing + + cleanup format, file and directory routines (less code) + + the terminating character from an expression returned in the console has been + changed from a space to a line feed + +8.7.5 Development release December 23rd + added util/newlisp.plist syntax file for OSX BBEdit or TextWrangler editors + + raw mode in 'net-eval' now documented + + recognize simple path-href in 'location:' header spec in get/post/put -url + + in 'process' on UNIX an optional pipe handle for standard error can be specified + if not present standard error gets redirected to stdout + + allow default functions to be defined as primitives + + shortened symbol param loop in evaluateLambda and evlaluateMacro + + getContext() now safe for debug mode + + 'replace-assoc' gets additional (long overdue) syntax to remove associations + + help-option in context console menu on newlisp-tk (not working on OS X) + +8.7.6 + Help buttons now work on MacOS X in newlisp-tk + + fixed and issue with 'case' when a 'true' clause was assembled from an + evaluated 'true + + handle some cases of self reference in set-nth/nth-set, i.e: the replacement sub + expression itlself changes the place its supposed to be assigned: + (set-nth i L (set-nth i L 99)) ) + + : (colon) now will be returned as token even if attached to other following chars + + 'parse' without regex parameter couild overrun string when it ended in \ + +8.7.7 + regular expression support in 'directory' + + new 'number?' works like (or (float? x) (integer? x)) + + in newlisp-tk help on hightlighted reserved word now works on MacOS X bringing + up browser with manual on right spot. (Ctrl-Left-Button for context menu) + + new (bayes-train list-A list-B [list-C ...] context-symbol) lists contain + string tokens; and (bayes-query list-query context), not documented yet, + still testing and modifying + + memory error fix in 'get-url' for chunked pages + +8.7.8 development release January 16th 2006 + 'apply' now works on lists with unlimited length, no stack limit + + both Bayesan modes: Chain Bayesian and R.A. Fisher CHi2, are now supported with + new 'bayes-train' and 'bayes-query', working and tested, see manual for + details + + moved 'prob-chi2' and 'pob-z' in manual to "Simulation and modelling" group + together with 'bayes-train' and 'bayes-query' + + ATTENTION: + + calling into a context now changes the current run-time context: + + (context 'FOO) + (define (foo) (context)) + (context MAIN) + + (FOO:foo) => MAIN ; old behaviour + + (FOO:foo) => FOO ; new behaviour + + The new behaviour is more intuitive and is what most programmers would expect. + Only applications using 'eval-string' or 'sym' (w/o specifying a context) are + effected. From all apps published by newlisp.org (blog, wiki, ide) only the file + cgi.lsp packaged with these applications is affected and should be changed to + the new cgi.lsp v.1.9 packaged with 8.7.8. + + Users should check all applications using 'eval-string' and 'sym' (or the + deprecated 'symbol'). Pre 8.7.8 'eval-string' and 'sym' work with the runtime- + context beeing MAIN, the context where the program was started. Now both functions + work with the context they are part of: + + (context 'FOO) + (set 'x 999) + (define (foo s) (eval-string s)) + (define (bar s) (eval (sym s))) + (context MAIN) + (set 'x 123) + + (FOO:foo "x") => 123 ; old behaviour + (FOO:bar "x") => 123 ; old behaviour + + (FOO:foo "x") => 999 ; new behaviour + (FOO:bar "x") => 999 ; new behaviour + + Changes to old code: + + (1) Replace all cgi.lsp in newlisp-ide, newlisp-blog and newlisp-wiki apps. + the replacement will also work with newLISP versions previous to 8.7.8. + + (2) Change old apps by preceding the 'eval-string' statement with (context MAIN) + or other required context change. Most of the time it's MAIN, the context where + th whole program was started. + + (3) Change old apps adding explicitly the desired context in 'sym' as a + second parameter, i.e. (sym s 'MAIN) or (sym s ctx) where 'ctx' is a context + variable. + + The new behaviour is more intuitive and will make OO based programming based + on contexts easier, it also increases isoloation of contexts because the current + run-time context is not dependend from where the program was started originally, + but only on the situation internal to that context. + +8.7.9 + added a configure script for compatibility with the popular autoconf/configure + system. An installation of autoconf is not required but the same sequence + of commands as on autoconf systems will work to make newLISP. newLISP's old + ways of making newLISP will also still work: + + ./configure will just try to discover the platform and give a message + make will try to discover the platform and make it + + if make cannot discover the platform it will give a message + + the module/context is now reported in error messages + + 'load' will never cause the runtime context changed, but the same run-time + context that was valid before the call to 'load' will be valid when 'load' + returns + + 'eval-string' now can specify the context under which it's string argument + should be parsed and evaluated. + + 'log' can be specify an additional parameter for a different base than the + default natural log + + fixed a problem with reading very long UTF-8 source string constants + + big speedup of parse with regular expression, now scaling linear + this enables tokenizing big documents in one piece + + args in functions should be evaluated in callers context + (for: sym, context, eval-string) + +8.7.10 + raw string ouput (upper ascii in \nnn codes) in the newLISP commandline shell + return value only when locale is the default "C" locale. + + 'trim' was changing the original string in UTF-8 mode + + 'find', 'replace' and 'search' now do binary in both regex and non-regex modes + searched buffer, key/patterns string and replacement string can all contain + binary 0s + +8.7.11 + 'string' now optimized double fast on string arguments + + getCreateContext() checking symbol protection + + 'load' switches to context MAIN when loading file except if different + context is specified in file, on return 'load' switches back to callers + context (8.7.9) + + 'reset' adds an additional parameter for restarting newLISP with same + command line parameters with fresh memory in a new process space. + + many security improvements for OpenBSD compiles + + 'reset' with optional 'true' (or non 'nil') parameter will restart + newLISP with the same commandline parameters, reloading files etc. + Not available on Win32 (execv() leave the system unstable when compiling + with MinGW. + +8.8.0-p1 pre-release 1 + 'reset' was always exiting on UNIX after the change in 8.7.11 + + text buffers returned in 'net-eval' > 2048 characters and containing zero + characters where throwing a 'string too long error' + +8.8.0-p2 pre-rlease 2 + Many doc corrections + + system symbols in set-nth was broken in 8.7.6 + + self refs in set-nth now safe + + added and changed some cases to qa_dot and qa_comma, now safe again + for memory leak tests. + +8.8.0 released February 20th, 2006 + large file system support for files > 2 GB can now be turned on in newlisp.h + specifying #define LFS. File positions > 2^31 must then be specified as + floats up to 999999999999999.0 for 999 terabyte (TB). 'seek' will always + return a float, file positions should be handled as floats using + add, sub, mul, div instead +,-,*,/ + + Documentation corrections (thanks Ryon, Nigel et al.) + + moved sql.c and types.c into the util directory + + updated newlisp.vim (v1.27) and newlisp.jsf (v.1.9) + + bug fix in cgi.lsp for '=' in key value strings + +8.8.1 + realloc compiler warning fix in nl-filesys.c/readBuffer() + + error-event, net-eval (edited 4/13/20060), signal and timer can now take + a function or lambda expression, previously only a symbol holding a lambda: + (signal 2 exit) + (timer (fn () (println "hello")) 5) + The old syntax still works too. + + Could not compile to a library (also fixed in re-release of 8.8.0) + + code cleanup for allocMemory() + memset() => callocMemory() + + now memory cleanup after exception in functor passed by: + 'filter', 'index', 'net-eval' and 'replace'. + + implicit n-rest and slice on default lists and strings: + (set 'foo:foo '(a s d f g h j)) + (2 foo) => (d f g h j) + (-3 2 foo) => (g h) + + 'save' and 'source' will always serialize from context MAIN perspective + (like 'load') (source reverted back in 8.8.2) + + fixed odd/even problem for 'rand' on FreeBSD, NetBSD, OpenBSD + +8.8.2 + 'source' reverted back to 8.8.0 behaviour: serialize to current context + +8.8.3 + 'signal' fixed format of internal symbol when passing functions + + suppress saving/sourcing system symbols starting with '$' unless specified + specifically + + new built-in function 'real-path' translates a relative path into an + absolute path. (read-path) same as (real-path ".") returns the current + working directory + +8.8.4 + 'real-path' now also in Win32 + + handle self reference of result of while expression in condition + + allow (sys-info 3) or (sys-info -1) as with 'args' and 'main-args' + + 'dup' will assume 0 for negative values + + when entering multiline expressions/definitions bracketed by [cmd] ... [/cmd] + tags (each on a separate line] and hitting after the closing + [/cmd], newLISP compiled with lib readline support segfaulted, this long standing + bug as finallly been fixed + + in 'xml-parse' when a closing CDATA tag was preceded by a forward slash, then + an extra text element containing part of the closing tag was emmitted, + this is fixed + + support for MySQL v. 5.0 was added with mysql5.lsp + +8.8.5 + 'read-key' now also works on MacOS X + + a bug in the second syntax of 'context' has been fixed now can do: + (push i (context 'CTX "foo")) which now works if CTX:foo is a list + + 'load' now can take http:// (and file://) URL prefixes in filnames to retrieve/load + files via HTTP from remote servers + + 'xml-parse' now can take a context to place symbols/tags from SXML conversion + + zlib.lsp: new module for in memory and .gz compatible file compression + + 'net-eval' idle loop did not pass parameter (broken in 8.8.1) + + fixed a cell leak caused by 'while' self ref handling in 8.8.4 + +8.8.6 + + fix for error reporting of strings, which are too long + + an optional break condition in all looping constructs allows early return: + (for (i from to step condition) ...) + (dotimes (i N condition) ...) + (dolist (i lst conditon) ...) + When condition returns non-nil the loop returns with the value of the condition. + When loop comes to end end the result of the last body expression gets returned. + + describing the effects of non-rectangular matrices in the "Data types" chapter + and for the functions 'multiply', 'invert' and 'transpose'. + + sqlite.lsp vor SQLite v.2.x has been discontinued, use sqlite3.lsp and SQLite3 + + error message was printed for each catch level where error was not caught, + should only be printed on top level if uncatched + + new 'letex': let expression with expansion of let vars into body expressions + before evaluation + + file open for append now atomic + +8.8.7 + new 'clean': + (clean predicate? aList) works like: + (filter (fn (x) (not (predicate? x))) aList) + + "Transfer-Encoding: chunked" did not trigger chunked decoding + when more than one space after the ':' before 'chunked' + + $0 counter did not count first element when in remove mode of + 'replace' + + 'unify' does Prolog like unification with occur-check + (unify '(f (g A) A) '(f B xyz)) => ((B (g xyz)) (A xyz)) + + 'unify' can take additional assoc params list: + (unify '(A (B) X) '(A (A) Z) '((A 1) (Z 4))) + => ((A 1) (Z 4) (B 1) (X 4)) + this is useful when chanining/nesting 'unify' to pass on + a newly bound environment + + new mode in 'expand' with parameter assoc list: + (expand '(a (B (c) (d a B))) '((a 1) (B 2) (c 3) (d 4))) => + (1 (2 (3) (4 1 2))) + + new mode in 'expand' without symbol or assoc list: + (set 'X 2) + (expand '(a ((X)) b)) => (a ((2)) b)) + expands only uppercase variables for use with the new Prolog like + 'unify' function + + added file syntax.cgi for syntax highlighting in HTML of newLISP source + to examples directory + +8.8.8 + eliminates several cell leaks in unify + + 'pop' can be used on strings (pop str [pos] [len]) pos can be negative + 'push' can be used on strings (push str [pos]) pos can be negative + 'push' now will only do list mode when lst is list or nil: + (push new lst) lst has to be list or nil, previous to string mode of push + any existing datatype non-list was initializeed to () now only nil is allowed + + system var $idx contains the offset in dolist: + (dolist (e '(a b c d e)) (println $idx "->" e)) + 0->a + 1->b etc. + + indexing mode of 'args' now works with multiple indices, i.e (args 3 -1) + and is much faster + + implicit indexing syntax now allowed in 'nth-set' and 'set-nth': + (set 'd '(a b c d e f g)) + (nth-set (d 3) 99) => d + d => (a b c 99 e f g) + or with default functor: + (set 'db:db '(a b c d e f g)) + (nth-set (db -1) 99) => g + db:db => (a b c d e f 99) + This also works for strings and arrays + + many fixes/changes/additions in the manual and reference + +8.8.9 + 'net-ping' didn't work on localhost + + 'nth-set/nth-set' bugfix for new feature breaking old + + complete manual pass of the first 3 chapters by Michael - thanks + +8.8.10 + rotate works also on strings + + (cons item lst -1) for consing at the end of the list (undocumented) + + allow 0 length in chunked pages happening on put-url + + give error message for unterminated [text] in interactive console + +8.9.0 Release June 25th + complete pass through Users Manual by Michael Michaels + + example programs in Appendix are now syntax highlighted + + dolist $idx safe for nested loops + + member works for strings + + (starts-with s k true) should behave like the default (starts-with s k) + same with ends-with. This bug never surfaced because nobody specified + anything for the default of case sensitivity + +8.9.1 + (rand x n) returned n+1 after fix in 8.9.0, also looped on n=-1 + + new 'zero?' was broken for floats with fractional parts + + newlisp -c -d and newlisp -c controlled by inetd now understand + simple HTTP GET requests. This feature is mainly intended for use with + (get-url "http://...) and (load "http://...) for retrieving or loading + files from remote newlisp/inetd worker nodes in a distributed computing + environment. + + manual reviewed/edited up to and including the letter C + +8.9.2 + + new (find-all pattern string [func [options]]) finds all regex-patterns in a + string and returns a list of matching strings: + (find-all {\d+} "asdf2kjh44hgfhgf890") + => ("2" "44" "890") + (find-all {(new)(lisp)} "newLISPisNEWLISP" (append $2 $1) 1) + => ("LISPnew" "LISPNEW") + + the parameters in 'format' after the format string can now also be + given in a list: (format "%d %s" '(123 "hello")) + + 'read-key' did not work on SUSE Linux + +8.9.3 + default values in function and macro parameters: (define (foo (a 1) (b 2)) (list a b)) + (foo) => (1 2) + (foo 3) => (3 2) + (foo 3 4) => (3 4) + no performance loss for normal syntax without defaults + + format partly rewritten for better portability, + no tru64.c or ffi required after removing TRU64 for p_format in nl-string.c + +8.9.4 + removed tru64.c and changed makefile_true64 + + starts-with and ends-with can do reguluar expressions and take a regex option number, + the old nil-option for case insensitivity still works and is translated to regex + option = 1, but is deprecated and will be eliminated in the future + + member for strings can take regular expressions, the old case insensitivity option + will not work (member for strings was introduced only recently + + 'symbol' the old writing for 'sym' has been eliminated + + fixed create context bug in newlisp-tk.tcl + + (<< num) works like (<< num 1), (>> num) like (>> num 1), (div num) like (div 1.0 num) + + function 'uuid' for creating Universal Unique IDs type 1 and 4 (RFC 4122) + + -C command option for Emacs forces prompt even if in pipe mode + + manual edits up to letter J, thanks Michael + +8.9.5 + type 4 UUID now closer to RFC 4122 specification + + trying to use set-nth or nth-set on an empty list corrupted the list + +8.9.6 + UUID type 1 got timestamp wrong, UUID 4 always started the same sequence + + +-------------------------- 64 Bit Integers ------------------------------------ + + +8.9.7 + all integer arithmetik 64 bit + + 'factor' now takes integers with max 64 bits and is 4x faster than previously + + 'import', 'pack', still take ints as 32bit, taking the least significant 32 bits + to pack 64bits do: (pack "ldld" int64 (>> int64 32)) for little endian + for big endian do: (pack "ldls" (>> int64 32) int64) + + 'format' has new 64 bit formats "%lld", "%llu" "%llx" for 64bit decimals and + hex numbers on UNIX on Win32 use "%I64d", "%I64u", "%I64x" + + 'format' now also recognises 'e' and 'E' scientific folating point formatting + + 32 bit format strings "%d" "%u" "%x" will truncate on int64 numbers + + in float->int conversions floats out of range are converted to min/max 64 bit int + -9223372036854775808, 9223372036854775807 and 18446744073709551615 for unsigned + + if an int32/uint32 is required by a function int64 values overflow to + min/max 32 bit int -2147483648/2147483647 and 4294967295 for unsignde int + + LFS (large file support) in file operations for files opened with 'open' + now full 64 Bits (before 40 Bits) + + (for (i from to step)...) has float in i, only when optional step value is specified + (sequence from to step) produces float only when optional step value is specified + (dotimes (i N)...) always has integer in i + this is consistend with 'inc' and 'dec' + + net-select now can go to 68 :) years waiting time specifying 64bit higher timeout + values and a timeout of -1 waits forever + + 'net-close' with optional parameter: (net-close sock true) will suppress shutdown() + before closing the socket. In this case net-close will wait for undergoing traffic + to finish + + new function (gcd x y ...) for greatest common deviser of n arguments + + (pow x) defaults to (pow x 2) + + wrong format could segfault (this bug was introduced in 8.9.3) + + when replacing the first element in an association list with 'replace-assoc' and + an error occured when evaluating the replacement expression a segfault occured + (thanks to Ingo for catching this) + + Note that bits shifts <<,>> now work on 64-bit integers too (added 2006-09-12) + +8.9.8 + 'net-eval' now evaluates node parameters, before constants where required + (set 'host "localhost" 'port 4711 'cmd "(+ 3 4)") + (net-eval '((host port cmd)) 1000) = (7) + + 'net-eval' if no timeout specified waits forever + + 'net-eval' short form for one node: (net-eval host port cmd [timeout idle-loop]) + timeout an idle loop are optional: (net-eval host port cmd) + + Similar as for (load "http:// ...) and (get-url "http//..) in 8.9.1; + server mode: newlisp -c with -p or -d, now understands HTTP PUT requests + for saving/writing text files to a newLISP server node on UNIX using: + (save "http://..." ...) and (put-url "http://...") ...) + The server mode together with the beefed up 'net-eval', 'load', 'save' + 'get-url' and 'put-url' assemble a nice toolset for distributed applications + with newLISP. The server node can also be started by inetd or xinetd. + (See manual). Must give full path-file-name in URLs i.e: + (put-url "http://localhost:50001//Myfiles/afile.txt" (read-file "somefile")) + + newLISP server mode with HTTP capabilities in not yet available on Win32. + + target context MAIN is now disabled in 'def-new' and 'new' because it would + cause ambigous situations when copying context vars after fixing a related + bug: def-new and new on context-vars + + on UNIX a shared memory address obtained with 'share' can be unmapped using + (share nil
) + + 'put-url' with "Pragma: append\r\n" in header option appends when talking + to newLISP server + + 'read-file', 'write-file' and 'append-file' accept "http:// ..." and + for HTTP mode and "file://..." for normal file mode. + in HTTP mode they work exactly like 'get-url', 'put-url' and 'put-url' + with "Pragma: append" in the header option. + + new QA file qa-net for testing newLISP server modes with: + net-eval, load, save, read-file, write-file, append-file + + new QA file qa-utf8 to display UTF8 characters, this is not a test for + newLISP but rather the UTF8 display capabilities of the platform running on + +8.9.9 + matrix operations now can be performed on arrays (previously only lists) + matrix operations will return the type (list or arrray) which was given + as input. In case of mixed input (i.e. in multiply), array type is + returned. + + new function 'det' returns the determinant of a square matrix expressed + as a list or array. + + fixed cell leak in define-macro when exercising default values + + 64-bit integers where not displayed correctly in Win32 MinGW + +8.9.10 + 'append', 'first', 'last', 'rest', 'slice' (and implicit slicing) now also + available for arrays + + (timer 'event 0) did not stop on Win32 + + a fix in Curl_base64_decode() for bad base64 strings + + 20% speed up for append on strings and join + +8.9.11 + 'append' did not append correctly to lambda lists, which lost lambda attribute + + 'qa-net' fixed (this file only tests on UNIX) + +8.9.12 + 'int' did a signed instead of unsigned conversion + + 'save' did not save global protected symbols in a way they + could be reloaded + +8.9.13 + 'local' like 'let' but no initialization of locals (all nil): + (local (x b x) body) + + 'swap' has a third syntax pattern to swap the contents of symbols: (swap x y) + +8.9.14 + speedup and memory savings on 'apply' + + fixed INT64->string conversion in sym for True64/WINCC + + error checking on all reallocs() + + changed to realloc() in writeStream() routines + +8.9.15 + (join '(1 2 3)) was hanging, instead of wrong datatype error message + + support "\x41\x42\xff" in string hex format equivalent to "\065\066\255" + + new 'ref-all' returns a list of index vectors for all ref's of an expression + (ref-all 'a '(a b c (d a f (a h a)) (k a (m n a) (x)))) + => ((0) (3 1) (3 3 0) (3 3 2) (4 1) (4 2 2)) + +9.0.0 Release October 15th, 2006 + +9.0.1 + 'read-file' did not read extended http:// mode parameters correctly + + new 'doargs' works like 'dolist' iterates through (args) + (define (foo) (doargs (i) (println i))) + (foo 1 2 3) => prints 1 2 3 + implemented on top of 'dolist' also does $idx and break-expressions + + 'explode' takes extra parameter for # of characters (works on UTF-8 too): + (explode "newlisp" 2) => ("ne" "wl" "is" "p") + + new 'utf8len' length of a string in UTF-8 characters + + new scalar matrix operations (matrix is a 2 dimensional list or array): + (set 'A '((1 2 3) (4 5 6)) + (set 'B A) + (mat + A B) => ((2 4 6) (8 10 12)) + (mat - A B) => ((0 0 0) (0 0 0)) + (mat * A B) => ((1 4 9) (16 25 36)) + (mat / A B) => ((1 1 1) (1 1 1)) + Note that all matrix operations are in floating point + +9.0.2 + explode works on lists: + (explode '(a b c d e)) => '((a) (b) (c) (d) (e)) + (explode '(a b c d e) 2) => '((a b) (c d) (e)) + many structural transformations can be done combining 'explode' and 'transpose' + + fixed cell-leak in 'ref-all' + + in (mat A B) B can be a single number: + (mat + '((1 2 3) (4 5 6)) 2) => ((3 4 5) (6 7 8)) + + some fixes for HTTP mode on UNIX + + HTTP mode now working on Win32 but with some timing issues, + see header of file qa-net for details + +9.0.3 + $idx was broken after 9.0 starting with 1 instead of 0 + +9.0.4 + fixed midnight rollover in 'timer' on Win32 + + new (round ) rounds a number to precision digits + left (positive) or rigt (negative) of the decimal point + + new hyperbolic functions sinh cosh tanh + + fixed push -1 optimization when popping only remaining element in list + + new 'ostype' symbol holds os type string + + new 'delete-url', needs to be enabled on target www server (most aren't) + else => "ERR: server code 405: HTTP/1.1 405 Method Not Allowed\r\n" + and must have file permissions set accordingly on target file; + additional parameters like timeout and custom headers are available + exactly as in 'get-url', the feature is also available in: + (delete-file "http://......"), similar to HTTP mode in 'read-file', + 'write-file' and 'append-file' and is also implemented in newlisp + server mode (not working on Win32 newlisp server mode) + + GET queries are now supported in newlisp server mode (not yet Win32) + +9.0.5 + 'and' and 'or' now () when failing and last evaluation was () + + GET and POST cgi now working on UNIX and Win32 (9.0.6) + + new -w commandline switch + useful for changing working directory after newlisp startup: + newlisp -c -d 8080 -w /Users/lutz/ide + this is the same as going into the directory and starting newlisp + newlisp -c -d 8080 + + newlisp can now run as a webserver doing newlisp based CGI. It runs both + newlisp-ide-x.x.tgz and newlisp-wiki-x.x.tgz, to run the ide on the local + machine: + newlisp -c -d 8080 -w /usr/home/www/ide + then in a webbrowser enter the URL http://localhost:8080/ + index.cgi and index.html are looked for by default if no filename is + specified in URL + + httpd example programm has been eliminated, because httpd mode now built-in + into newLISP + + 'file-info' now correctly reports filesizes > 2G (2147483647) bytes + now also can index: (file-info 0) => filesize + + the -x commandlne switch has been disabled, use newlisp server modes instead + + fixed problems with break-condition in dolist/doargs introduced in 9.0.1 + fixed problem when break-condition is the loop symbol itself + +9.0.6 + 'nth' now with similar syntax options as 'net-set/set-nth' + new in 'nth': + (nth (L ...)) + (nth (L )) ; where is a list of indices + new in 'set=nth', 'nth-set' + (set-nth (L ) ) + (nth-set (L ) ) + + 'file-info' now distinguishes in the mode field (12th bit) between links + and normal files: + (define (link? fname) (= 0x2000 (& (file-info fname 1) 0x2000))) + not on Win32, who knows the correct Win32 function for lstat() on MinGW gcc?A + +9.0.7 + HTTP server mode looks for procedure httpd-conf for processing/transforming + the path-file-name of the request. This way security checks, remappings etc + can be performed. In this case a file httpd.conf containing the definition + of httpd-conf can be loaded when starting the server: + newlisp httpd.conf -c -d 8080 -w www/httpddocs + if the file httpd.conf contains: + (define (httpd-conf request) + (if (ends-with request ".exe") "errorpage.html" request)) + now any request for a file which finishes in .exe will be transformed into a + request for errorpage.html containing an error message for the client. + + fixed HTTP server mode crash on LINUX + + fixed 'nth' which failed on old mode when indices where expressions + +9.0.8 + new syntax of 'nth' should work on protected symbols + + new syntax of 'set-nth/nth-set' did not check for index maximum of 16 + + make httpd-conf safe for non-string returns + + server mode now correctly remaps directory paths when performing CGI + in directories not web root, i.e. http://ahost.com:/ide/ will work with CGI, + note that directories need to end with "/" to make the resolve to index.html + or iondex.cgi work correctly + + new -http flag like -c (suppressing prompts) but only allow HTTP commands + no newLISP statements (-c allows both), this is a 'safe' HTTP mode not + allowing 'net-eva' or other commandline protocols. + The following configurations can be used: + + (1) serve HTTP requests only + newlisp -http -d -w + newlisp -http -w # started vi INIX inetd or xinetd + + (2) serve 'net-eval', HTTP and command line without prompt + newlisp -c -d -w + newlisp -c -w # started via UNIX inetd or xinetd + this mode is useful when running newLISP server in a controlled environment + behind a secured firewall in a distributed computing environment where + newLISP server must answer to both: net-eval and HTTP requests. + + Note that on Win32 a \tmp directory must be created on the same drive + which is current for CGI processes for newLISP HTTP mode to work correctly + for CGI processing. On UNIX /tmp is standard. + + fixed 'invert' crash (since v.9.0.2) on not-invertible matrices + + upgraded to better random number generation in 'rand' and 'random' + (not available on Win32) + + fixed (rotate '(1) -1) + +9.0.9 + another fix for 'nth' and protected symbols + + if 'httpd-conf' returns 'nil' nothing will be processed, this can be + used to completely hand off CGI request processing to httpd-conf + +9.0.10 + moved env variable creation of DOCOUMENT_ROOT earlier, so it is available + in httpd-conf.lsp + + added httpd-conf.lspi to the examples directory in the source distribution, + now filters csertain file extensions and does not allow access to files + outside the web directory tree specified with the -w option: + newlisp httpd-conf.lsp -http -d 8080 -w /wwwdocs + or outside the startup directory if no -w is given, also takes care + of request for directories when no trailing '/' is present + + cleaned up nthArray and implicitIndexList/array code + + trying to 'set-nth' and empty list should return the empty list not nil + + more tests in qa-dot and qa-comma for symbol protection and 'nth' + +9.0.11 + rework of whole indexing area, now correctly honors symbol protection in + all modes if symbol is nested inside an expression. The old flat mode: + (nth i j alist) + is much slower, instead use one of the following modes: + (nth (alist i j)) or (alist i j) or (nth (alist aref)) or (alist aref) + ehere aref is a list of nymbers, i.e.: (1 2), same modes in set-nth,nth-set + + reworked nil and empty list detection throughout all files. 'nil' and the + empty list '() are logic false, things work like this: + (map true? '(nil () 0 "")) => (nil nil true true) + (map nil? '(nil () 0 "")) => (true nil nil nil) + (map not '(nil () 0 "")) => (true true nil nil) + (map null? '(nil () 0 "")) => (true true true true) + in v9.0.0: + (true? '()) => true, which was wrong because also + (true? (not '()) => true, which is correct + this affects filter and index usage with true? as predicate, but does not + affect: if, unless, while, until, do-while, do-until, which always worked + correctly assuming '() as logical false + + 'name' also can take contexts i.e.: + (set 'L:L '(a b cd)) (set 'x L) (name x) => "L" + + now when evaluating a context by itself it returns the default symbol + if the default symbol does not exists it gets created: + (set 'foo:foo '(a b c d e f g)) + (foo) => foo:foo + (eval (foo)) => '(a b c d e f g) + this can be used for reference passing: + (define (mysort ctx func) + (sort (eval (ctx)) func)) + (mysort foo >) => (g f e d c b a) + foo:foo => (g f e d c b a) + previously a passed context could only be used for functions using + index lists and implicit indexing as in (nth-set (ctx idx) value) etc. + now functions working on the entire list can be used with reference passed + data. THIS FUNCTIONALITY HAS BEEN DISABLED IN 9.0.14, as a workaround + use (sym (name ctx) ctx) to retrieve the functor + +9.0.12 + the newLISP-tk installer now contains a file md5-checksums.txt with + checksums for newlisp-tk.exe, newlisp.exe and newlisp.dll + + bit not ~ was still on 32 bits now 64 like all integer arithmetik since 9.0 + + all buffer variables moved to size_t and ssize_t type in preparation for + 64-bit model LP64 compile for 64-bit memory addressing. + + get-char, get-int, get-float and get-string failed when using on 64-bit + addresses, which where not truncated correctly on little-endian CPUs. + This affected the mysql.lsp and mysql5.lsp modules when using with newLISP + versions 8.9.7 and later and on Intel CPUs. On Mac PPC and other big-endian + architectures this problem did not occur. All other modules where not affected + on any architecture. + + <,>,<=,>=,= when given only one argument compare agains 0, "" or (), + all other data types return true as before + (< 1) =>nil, (= 0) =>true, (> "abc") => true, (= "") =>true etc. + + 64-bit file poisitioning fixed under Win32 (now runs qa-lfs) + +9.0.13 + fixed problems in the new <,>,<=,>=,= single argument feature + +9.0.14 + further fix in 64-bit ~ function + + a context feature intoduced in 9.0.11 to extract the default functor from an + unknown context has been disabled, instead use the workaround: + (set 'foo:foo '(a b c d e f g)) + (set 'ctx foo) + (sym (name ctx) ctx) => foo:foo + (sort (eval (sym (name ctx) ctx)) >) => (g f e d c b a) + foo:foo => (g f e d c b a) + a more elegant way will be supplied in the future + + both string and list versions of 'explode' now return an empty list if optional + length <= 0 + + 'nt-set/set-nth' did not honor constant protection of default functors + + now compiles for LP64 64-bit memory model on 64-bit LINUX using the makefile: + make -f makefile_linux64LP64 + or simply: + make linux64LP64 + + the old makefile for making a ILP32 32-bit newlisp on 64-bit LINUX has been + renamed: + make -f makefile_linux64ILP32 + or simply: + make linux64ILP32 + + tested on a AMD64 CPU with LINUX 2.6 64-bit Fedora 3 + + enjoy up to 17,179,869,184 gigabytes or 16 exabytes of RAM, on AMD64 + the LP64 compiled version is 12 to 25% faster than the ILP32 version + + avoid sign extension when unpacking signed 32bit into unsigned 32bit displayed + in 64-bit: (unpack "lu" (pack "ld" -1)) => (4294967295) ; not (-1) + + added 'get-long' and "Ld", "Lu" 64-bit packing formats + + new 'parse-date' for parsing date strings (not yet working for Win32) + +9.0.15 + more manual additions and changes, moved all predicates into own group + + fixed dynamic symbols compare + + fixed warnings fo missing -Wno-strict-alasing GCC message on older Solaris + and BSD GCC versions + + fixed parsing of [text] tag on 64-bit compiles + + fixed 'flt' for TRU64 compile + + tried Linux debian package, Ok on Ubuntu, will be included from now on + in newlisp.org releases, but appreciate help in getting it into Ubunto + and Debian for inclusion into their lists + + The Tru64UNIX compile using makefile_tru64 is now a large pointer model LP64 + compile, thanks to Peter for porting and testing on an Alpha CPU + + added makefile_darwin_LP64 for 64-bit compile/link, but cannot test it + on my PPC-G4 (I believe I need a G5 for this) + + fixed 'char' on UTF-8, bug due to 64-bit changes + + LP64 mode for Solaris workng, use makefile_solarisLP64 + + new 'make test' to run qa-dot, qa-net, qa-xml + +9.0.16 + OS/2 compile flavor now part of distribution + + fix for Solaris in some networking routines broken in 9.0.2 ! + + fixed: (dup x -1), which was broken since 9.0.14 + + 'make test' now does qa-dot, qa-xml, qa-setsig, qa-net all one after + another. The qa-setsig script will drop out on Win32 with a message. + + A small change in the 'test-process' routine in the qa-dot script will + cause less failure message for 'process' on slow computers. + + qa-dot now will set to locale "en_US' when testing an UTF-8 version, + this has been done to suppress failure messages for UTF-8 'upper-case' + and 'lower-case' which do not work in the default 'C' locale in + UTF-8 mode on some platforms. + qa-comma always sets to "de_DE" + + 'asinh', 'acosh', 'atanh' complete the triginometric functions + + up to 8 'callback' routines cain be defined to be called by an imported + library, example for Glut lib: + (glutDisplayFunc (callback 0 'draw)) + (glutKeyboardFunc (callback 1 'keyboard)) + (glutMouseFunc (callback 2 'mouse)) + up to four parameters (32-bit ints) are received by the user-defined + callback handlers. See the file newlisp-9.0.16/examples/opengl-demo.lsp + for details. Note that OpenGL passes floating point data, which are only + handled correctly on x86 based platforms. On the Mac PPC this file will + not work (although the callback interface itself does work, but no + drawing will be visible). + +9.0.17 + fixed 'non-blocking' bug for write on Linux, thanks Peter! + + number of maximum cells was not reported correctly in 64-bit newLISP + + 'ref' and 'ref-all' now can take a comparison functor (like 'sort') for + comparison: (ref-all key List func), if no func is specified + assumes = (equal), ref-all now much faster on big lists with many finds. + + 'find' and 'replace' (both in their list forms) can take a comparison + functor like 'sort', 'ref', 'ref-all'. + 'replace' for lists now also processes $0 (old entry) in replacement + expression. + + using replace for lists with 'match' or 'unify' as comparison functor + makes 'replace' as powerful as 'replace for strings with regular expressions. + This is an important new feature with many applications. It also gives + the much overlooked 'match' and 'unify' the more frequent usage they deserve. + + new logic functions 'exists' and 'for-all' apply a condition to each + element in a list and return the result. + + match now will accept atoms in the entry expressions to make it usable + for 'ref' and 'ref-all' + +9.0.18 + fixed a bug in (pop ) + +9.0.19 + (find [