This stable release adds minor new functionality and fixes bugs.
Thanks to everybody who participated in developing this release with suggestions, bug reports and fixes.
Downloads page: http://www.newlisp.org/index.cgi?Downloads
Downloads directory: http://www.newlisp.org/downloads
Thanks, Lutz!
BTW, when you make a release like this, do you ping the port maintainers of newlisp on the BSDs, or do they have to keep up with the releases by keeping their own eye out for them? Just curious. I've always meant to ask you this.
In the past it worked pretty well without pinging package maintainers. I guess most of them watch either http://www.newlisp.org/rss.cgi or https://twitter.com/newlisp
But if anyone wants to be pinged for new versions, contact me in a private message with your email.
In case of BSDs, I always test on OpenBSD (64-bit and v.5.4 this time) and FreeBSD (64-bit and v.9.3 this time). They are not always updated to the latest but I guess it helps. For this release, I changed from 'CC = gcc' to 'CC = cc' to make it work for the Clang compiler. My FreeBSD installation on https://www.nearlyfreespeech.net now works with 64-bit and libffi stuff installed. On OpenBSD, I have to work without libffi, but of course the simple ffi works.
I don't have access to any Red-Hat/Fedora system, but people seem to be happy compiling on it without problems.
Thanks a lot for this new release Lutz!
Thanks a lot for the update Lutz, can I send you a development donation as a thank you?
Your "Thanks" is all what is needed :)
Hello, Lutz.
I am translating the manual to Japanese and have some suggestions.
line 23636 in newlisp_manual v10.6.2
Quote
Setting the option bit to <tt>0x8000</tt> in >int-option will force
↓
Setting the option bit to <tt>0x8000</tt> in regex-option will force
And, no problem but
line 23405
Quote
<h4>syntax: (regex-comp str-pattern [>int-option])</h4>
↓
<h4>syntax: (regex-comp str-pattern [regex-option])</h4>
Also, following is no problem
There are both regex-option and regex-options.
For example, regex-options are in directory (//http) and search (//http).
Regards,
Thanks Johu, all updated to regex-option:
http://www.newlisp.org/downloads/newlisp_manual.html
Thank You Lutz from Germany :-)
Thanks Lutz.
I finished translartions of manuals.
newlisp_manual-10602
CodePatterns-10602
There are in here (//https).
Many thanks Johu, all Japanese translations are online here:
Users Manual and Reference: http://www.newlisp.org/newlisp_manual-jp.html
Code Patterns: http://www.newlisp.org/CodePatterns-jp.html
Guiserver: http://www.newlisp.org/guiserver-jp/
The links for "UBUNTU Linux Debian 64-bit installers v.10.6.2" are not working at the time of writing.
Thank you,
Thanks, I missed the name change from i386 to amd64. Now corrected.
Regarding the gethostbyname() buffer overflow announced here:
http://marc.info/?l=bugtraq&m=142237866420639&w=2
Since version 10.2.9, released in May 2010, newLISP does not use this API and is not affected by this.
Excellent, Lutz. Kudos for the quick announcement.
Lutz, fix for the website:
In the manual section for the "replace" function, you have this:
(set 'str "ZZZZZxZZZZyy") → "ZZZZZxZZZZyy"
(replace "[x|y]" str "PP" 0) → "ZZZZZPPZZZZPPPP"
str → "ZZZZZPPZZZZPPPP"
The regex [x|y] should be (x|y). Although your example works, the use of the pipe '|' character is an idiom that goes with parens (), not needed inside a character class [].
I made the following function for printing strings so newLisp can read them back in:
(define (nl-esc a) (replace {(\|")} a (string {} $it) 0))
For reasons I didn't have time to investigate too deeply, when I put the '' and '"' characters inside a character class, only the first substitution was made. Sometimes.
Thanks Walther, now corrected: http://www.newlisp.org/downloads/newlisp_manual.html#replace
Another: in the Manual, for "union", the link to "intersect" is broken, it should be #intersect, not #interset
Thanks Ted: http://www.newlisp.org/downloads/newlisp_manual.html#union
Lutz, I found a segfault in 10.6.2. It happens on Mac OS and on Debian Linux, 64bit Intel platform. Any ideas? I need tracebacks for debugging, so this is my attempt at it. Once it is working, I'll disable the println statements in it, and a function can do its own (println $stack) to show its own traceback. Much less verbose than the (trace) function provided already.
The segfault happens when I actually call the define-traced macro. At the moment, it looks like the segfault happens inside the expand function.
(define-macro (define-traced)
(if (list? (args 0))
(eval (expand
'(define call-pattern
(if (and $stack (list? $stack))
(push call-pattern $stack)
(setq $stack (list call-pattern)))
(println $stack " -> ")
(set 'rval call-body)
(pop $stack)
(println $stack " <- ")
rval)
'((call-pattern (args 0)) (call-body (cons 'begin (rest (args)))))
true))
(eval (expand '(define var-name var-value) '((var-name (args 0)) (var-value (args 1))) true))
)
)
(define-traced (foo a b) (println a " says hi to " b) (bar a b))
(define-traced (bar a b) (println b " blushes at " a) (baz a b))
(define-traced (baz a b) (println a " and " b " shake hands."))
(println "foo: " foo)
(foo "John" "Tracy")
Fixed here: http://www.newlisp.org/downloads/development/inprogress/