1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
4 <META HTTP-EQUIV=
"CONTENT-TYPE" CONTENT=
"text/html; charset=utf-8">
6 <META NAME=
"GENERATOR" CONTENT=
"NeoOffice 2.2 (Unix)">
7 <META NAME=
"CREATED" CONTENT=
"20070718;17381700">
8 <META NAME=
"CHANGED" CONTENT=
"20080130;10321700">
9 <STYLE TYPE=
"text/css">
11 H1 { font-family: "Georgia", "Times New Roman", "Times", serif; line-height: 120% }
12 P { font-family: "Georgia", "Times New Roman", "Times", serif; line-height: 120% }
13 H3 { font-family: "Georgia", "Times New Roman", "Times", serif; line-height: 120% }
14 BLOCKQUOTE { font-family: "Georgia", "Times New Roman", "Times", serif; line-height: 120% }
18 <BODY LANG=
"en-US" DIR=
"LTR">
19 <H1 STYLE=
"margin-left: 0.2in; margin-top: 0in">newLISP
<FONT SIZE=
2>tm
</FONT>
20 v
.9.3 Release Notes
<FONT SIZE=
2>February
1st,
2008, rev
4</FONT></H1>
21 <H3 STYLE=
"margin-left: 0.2in; margin-top: 0in">Improved newLISP-GS
22 Graphics Server module and editor
</H3>
23 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in">This is the
24 second release with the new Java based graphical user interface (GUI)
25 server for newLISP. Since newLISP-GS appeared for the first time in
26 release
9.2 new functions have been added, many bugs where fixed, and
27 the newLISP-GS based multi tab editor has much improved behavior when
28 launching applications. The monitor area at the bottom of the editor
29 now works as an interactive newLISP shell.
31 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in">The new way
32 of doing Graphics and GUIs in newLISP using the Java based newLISP-GS
33 module has been well received by the community. newLISP can also
34 still be used with
<A HREF=
"http://www.gtk-server.org/">GTK-Server
</A>
35 or Tcl/Tk.
</BLOCKQUOTE>
36 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in; text-decoration: none">
37 As in previous releases, most new functionality and changes where
38 asked for or contributed by the community of newLISP users.
</BLOCKQUOTE>
39 <H3 STYLE=
"margin-left: 0.2in">Full support for nested association
41 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in; text-decoration: none">
42 This version has a new set of functions for managing nested
43 association lists. Nested association lists are frequently the result
44 from converting XML into Lisp s-expressions. XML has established
45 itself as a format for data interchange on the internet. The new
46 functions permit access, modification and deletion of associations in
47 nested association lists. These functions also work together with
48 FOOP, which represents objects as associations.
</BLOCKQUOTE>
49 <H3 STYLE=
"margin-left: 0.2in; margin-top: 0in">FOOP – Functional
50 Object Oriented Programming
</H3>
51 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in">Using the
<FONT FACE=
"Lucida Sans Regular, sans-serif">:
52 </FONT>colon operator to implement
<SPAN STYLE=
"font-style: normal">polymorphism
</SPAN>
53 in method application and using context namespaces to encapsulate all
54 methods of an object class, an object oriented programming system for
55 newLISP has been designed. Thanks to
<I>Michael Michaels
</I> from
56 <A HREF=
"http://www.neglook.com/">neglOOk
</A> for designing most of
57 this new way of object oriented programming in newLISP and for
58 creating the training video series: “Towards FOOP”. FOOP melts
59 contexts, the new colon operator
<FONT FACE=
"Lucida Sans Regular, sans-serif">:
60 </FONT>and functional programming into a simple and efficient way of
61 <SPAN STYLE=
"font-style: normal">object oriented programming
</SPAN>
62 in newLISP. The system features polymorphism and inheritance and can
63 have anonymous objects, which are memory managed automatically by
65 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in">A very
66 short description of FOOP can be found in the Users Manual. For a
67 more in depth treatment of this topic see
<I>Michael Michaels
</I>'s
68 video series accessible from the
<A HREF=
"http://newlisp.org/index.cgi?Documentation">newLISP
69 documentation
</A>page and the
<A HREF=
"http://www.neglook.com/">neglOOk
</A>
71 <H3 STYLE=
"margin-left: 0.2in; margin-top: 0in">New functions
</H3>
72 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">assoc-set,
73 set-assoc, pop-assoc
</FONT> – change or delete an association,
74 handle nested associations.
</BLOCKQUOTE>
75 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">bind
</FONT>
76 – the function binds expressions to symbols from an association
77 list and is normally used in logic programming together with
<FONT FACE=
"Lucida Sans Regular, sans-serif">unify
</FONT>.
78 This function was already persent in earlier versions, but was not
79 documented.
</BLOCKQUOTE>
80 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">destroy
</FONT>
81 – destroys a process addressed by the process id returned by yhr
82 newLISP functions
<FONT FACE=
"Lucida Sans Regular, sans-serif">process
</FONT>
83 or
<FONT FACE=
"Lucida Sans Regular, sans-serif">fork
</FONT>.
</BLOCKQUOTE>
84 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">dostring
</FONT>
85 – iterates over a string with the character value in the loop
86 variable. On UTF-
8 compiled newLISP UTF8 character values are
87 returned by the loop variable.
</BLOCKQUOTE>
88 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">NEWLISPDIR
</FONT>
89 - this environment variable will be registered on startup as
90 <FONT FACE=
"Lucida Sans Regular, sans-serif">/usr/share/newlisp
</FONT>
91 on Unix and Unix like OSs and as
<FONT FACE=
"Lucida Sans Regular, sans-serif">%PROGRAMFILES%/newlisp
</FONT>
92 on Win32. This allows writing platform independent code for loading
93 modules. An already existing definition of
<FONT FACE=
"Lucida Sans Regular, sans-serif">NEWLISPDIR
</FONT>
94 will not be overwritten during startup.
</BLOCKQUOTE>
95 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">ref-set,
96 set-ref, ref-set-all
</FONT> – these functions modify one or all
97 elements in a list searched by a key. The key can be any type of
98 expression and
<FONT FACE=
"Lucida Sans Regular, sans-serif">unify
</FONT>,
99 <FONT FACE=
"Lucida Sans Regular, sans-serif">match
</FONT> or a
100 user-defined function can be specified as comparison function. Like
101 the
<FONT FACE=
"Lucida Sans Regular, sans-serif">nth
</FONT>,
<FONT FACE=
"Lucida Sans Regular, sans-serif">set-nth
</FONT>
102 and
<FONT FACE=
"Lucida Sans Regular, sans-serif">nth-set
</FONT>
103 family of functions these new list search-and-replace functions can
104 pass lists by reference using a context name which is interpreted as
105 a
<I>default functor
</I>.
</BLOCKQUOTE>
106 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">when
</FONT>
107 – works like
<FONT FACE=
"Lucida Sans Regular, sans-serif">if
108 </FONT>without the
<I>else
</I>clause evaluating a block
109 conditionally and without the necessity of
<FONT FACE=
"Lucida Sans Regular, sans-serif">begin
</FONT>.
</BLOCKQUOTE>
110 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in">The
<FONT FACE=
"Lucida Sans Regular, sans-serif">:
111 </FONT>(colon) now also works as a function and can be attached to a
112 symbol following it. The operator forms a context symbol from the
113 symbol following it and the context symbol found as the first element
114 of the list contained in the next argument. The colon operator is
115 used to implement polymorphism in FOOP.
</BLOCKQUOTE>
116 <H3 STYLE=
"margin-left: 0.2in; margin-top: 0in">Enhancements and
117 changes to existing functionality
</H3>
118 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">assoc
</FONT>
119 – now handles nested multilevel associations.
</BLOCKQUOTE>
120 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">count
</FONT>
121 – has been rewritten to be many times faster on Unix and Unix like
123 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">dup
</FONT>
124 - without the repetition parameter will assume
2.
</BLOCKQUOTE>
125 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">find
</FONT>
126 – when used with a comparison functor puts the last found
127 expression into
<FONT FACE=
"Lucida Sans Regular, sans-serif">$
0.
</FONT></BLOCKQUOTE>
128 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">find-all
</FONT>
129 – can now be used on lists too.
</BLOCKQUOTE>
130 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">get-url,
131 post-url, put-url, delete-url
</FONT> - have been extended and
132 reworked to return more error information as supplied by the server
133 and have improved debugging support.
</BLOCKQUOTE>
134 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">last,
135 nth, nth-set, set-nth
</FONT> – now have last element speed
136 optimization as previously only present in
<FONT FACE=
"Lucida Sans Regular, sans-serif">push
</FONT>
137 and
<FONT FACE=
"Lucida Sans Regular, sans-serif">pop
</FONT>.
</BLOCKQUOTE>
138 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">nth,
139 set-nth, nth-set, push, pop
</FONT> – when used on lists, indices
140 overshooting the beginning or the end of the list now will cause an
141 error to be thrown. Before, out of range indices would pick the first
142 or last element in a list. The new behavior is consistent with the
143 behavior of indexing arrays.
</BLOCKQUOTE>
144 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">pack
</FONT>
145 – now can take lists for data.
</BLOCKQUOTE>
146 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">process
</FONT>
147 – this reworked function now creates the new process without the
148 previous time and memory overhead on Unix. No extra newLISP fork will
149 be created to launch the new process. In most cases the full path
150 must now be given for the command in
<FONT FACE=
"Lucida Sans Regular, sans-serif">process
</FONT>.
</BLOCKQUOTE>
151 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">rand
</FONT>
152 – integer random number generation with better statistical quality
153 on Win32.
</BLOCKQUOTE>
154 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">ref
</FONT>
155 – when used with a comparison function puts the last found
156 expression into
<FONT FACE=
"Lucida Sans Regular, sans-serif">$
0.
</FONT></BLOCKQUOTE>
157 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">set-assoc
</FONT>
158 – renamed
<FONT FACE=
"Lucida Sans Regular, sans-serif">replace-assoc
</FONT>
159 changes an association, handles nested associations.
</BLOCKQUOTE>
160 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">set-nth,
161 nth-set
</FONT>– now return the old list or value when the second
162 argument is not present. They behave now like
<FONT FACE=
"Lucida Sans Regular, sans-serif">set
</FONT>
163 without the value argument. Before both,
<FONT FACE=
"Lucida Sans Regular, sans-serif">set-nth
</FONT>
164 and
<FONT FACE=
"Lucida Sans Regular, sans-serif">nth-set
</FONT>returned
165 <FONT FACE=
"Lucida Sans Regular, sans-serif">nil
</FONT> when the
166 value argument was missing.
</BLOCKQUOTE>
167 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in"><FONT FACE=
"Lucida Sans Regular, sans-serif">signal
</FONT>
168 – the
<FONT FACE=
"Lucida Sans Regular, sans-serif">nil
</FONT> flag
169 now specifies
<FONT FACE=
"Lucida Sans Regular, sans-serif">SIG_IGN
170 </FONT>and the
<FONT FACE=
"Lucida Sans Regular, sans-serif">true
</FONT>
171 flag
<FONT FACE=
"Lucida Sans Regular, sans-serif">SIG_DFL
</FONT>.
172 Before
9.3 <FONT FACE=
"Lucida Sans Regular, sans-serif">nil
</FONT>
173 would specify an empty newLISP handler and the
<FONT FACE=
"Lucida Sans Regular, sans-serif">true
</FONT>
174 flag was not available. This allows to reset the signal handler for a
175 specific signal to its OS default.
</BLOCKQUOTE>
176 <H3 STYLE=
"margin-left: 0.2in">Other additions and changes
</H3>
177 <P STYLE=
"margin-left: 0.2in"><FONT FACE=
"Lucida Sans Regular, sans-serif">newlisp.vim
</FONT>
178 – the syntax highlighting and editing control file for the
<A HREF=
"http://www.vim.org/">VIM
</A>
179 text editor has been much improved by
<A HREF=
"http://wagner.pp.ru/~slobin/"><I>Cyril
181 <P STYLE=
"margin-left: 0.2in"><FONT FACE=
"Lucida Sans Regular, sans-serif">crypto.lsp
</FONT>
182 – this module has been expanded to offer
<FONT FACE=
"Lucida Sans Regular, sans-serif">hmac
</FONT>
183 encryption using MD5 or SHA-
1 hashing.
</P>
184 <P STYLE=
"margin-left: 0.2in"><FONT FACE=
"Lucida Sans Regular, sans-serif">amazon.lsp
</FONT>
185 – this new module interfaces to the Amazon Web Services, S3 storage
187 <P STYLE=
"margin-left: 0.2in"><FONT FACE=
"Lucida Sans Regular, sans-serif">newlispdoc
</FONT>
188 – this utility has been improved to handle indices and links to
189 external
<A HREF=
"http://newlisp.org/modules">module collections
</A>.
</P>
190 <P STYLE=
"margin-left: 0.2in"><FONT FACE=
"Lucida Sans Regular, sans-serif">wordnet.lsp
</FONT>
191 - this new module interfaces to the WordNet
3.o datebase
</P>
192 <P STYLE=
"margin-left: 0.2in">The amazon.lsp and wordet.lsp modules
193 are not part of the distribution, but can be accessed in the new
194 <A HREF=
"http://newlisp.org/modules">http://newlisp.org/modules
</A>
196 <H3 STYLE=
"margin-left: 0.2in; margin-top: 0in">Bug fixes and
197 documentation corrections
</H3>
198 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in">Many bugs
199 have been fixed in this release stabilizing some of the new features
200 in the previous
9.2 release and fixing older previously undetected
201 bugs. For more detail on bug fixes and changes see the CHANGES file
202 in the source distribution of newLISP v
.9.3.0 in
203 newlisp-
9.3.0/doc/CHANGES. This file details fixes changes for the
204 development versions between
9.2.0 and to
9.3.0.
</BLOCKQUOTE>
205 <BLOCKQUOTE STYLE=
"margin-left: 0.2in; margin-right: 0in; text-align: center">