11 News
2******
3
40.92.7
5======
6
7   * Assume 'stack-direction' upwards for 'hppa' and 'metag' arches.
8     (Debian patch) [Helge Deller]
9
10   * Make build reproducible [Bernhard M. Wiedemann]
11        x make 'doc-strings' sort the output by default
12        x allow overriding 'build-info' build time, hostname and
13          username.
14
15   * Update 'librep.spec' [Allan Duncan]
16
17   * Update 'config.guess', 'config.sub' and 'install-sh' [Christopher
18     Bratusek]
19
200.92.6
21======
22
23   * Fix 'inline_Fcons' multiple definition errors with gcc 5.
24     [Christopher Bratusek]
25
26   * Make detection of stack direction more robust [Andreas Schwab]
27
28   * Remove 'debclean' target from Makefile, improve 'gitclean' target
29     [Christopher Bratusek]
30
31   * Fix checking version of libtool in 'autogen.sh' [Christopher
32     Bratusek]
33
34   * Update config.guess and config.sub to 2015-08-20 [Christopher
35     Bratusek]
36
37   * Debian GNU/Linux code review:
38        + Rename configure.in to configure.ac [Christopher Bratusek]
39        + Fix various spelling errors found by 'codespell' [Christopher
40          Bratusek]
41        + Fix the address of the FSF in various files as spotted by
42          'licensecheck' [Christopher Bratusek]
43
440.92.5
45======
46
47   * Assume stack-direction 'downwards' for all sparc, hppa, mips,
48     mipsel, ia64 and alpha variants (fixes compilation) [Christopher
49     Bratusek]
50
51   * Fix compilation due to bug in libtool 2.0+ if /bin/sh is not
52     /bin/bash [Christopher Bratusek]
53
54   * rules.mk clean-up [宋文武] [Daniel M. German]:
55        x Variables that depend on prefix should not be recursive
56        x Don't set prefix, datadir, libdir, datarootdir and repdir
57        x Use pkg-config to get the absolute path for repcommonexecdir
58
59   * Update .gitignore [Meng Zhang]
60
61   * Update config.sub to 2014-09-11 from autoconf
62
630.92.4
64======
65
66   * Fix building librep on ARM [Togan Muftouglu, Christopher Bratusek]
67
68   * Fix building librep on AArch64 [Kim B. Heino]
69
70   * Misc.  updates to debian packaging scripts [Christopher Bratusek]
71
720.92.3
73======
74
75   * More entities support for xml-reader (gt, umlauts, esszett)
76
77   * Fix address of FSF in all files [Togan Muftouglu]
78
79   * Assume stack-direciton 'downwards' for all ppc and s390 variants
80     [Kimb B. Heino]
81
82   * Updated 'install-sh' to version 2011-01-19.21.
83
84   * Added 'program-exists-p' [Mark Triggs]
85
860.92.2.1
87========
88
89   * Assume stack-direction 'downwards' on ARM [Kim B. Heino]
90
910.92.2
92======
93
94   * Sync librep.spec with Fedora [Kim B. Heino]
95
96   * Assume stack-direction 'downwards' for x86_64.  Self-detection
97     doesn't work with gcc >= 4.7.0 [Kim B. Heino]
98
99   * read_line no longer aborts at 400 characters [Timo Korvola]
100
1010.92.1b
102=======
103
104   * Fixed a bug in librep.pc
105
1060.92.1
107======
108
109   * Fixed building REP on OS-X 10.6 by not exporting librepm.sym via
110     libtool[John Harper]
111
112   * Fixed building REP on OS-X 10.7 by defining a proper ALIGN if ffi.h
113     doesn't provide one [John Harper]
114
115   * Fixed detection of FFI, if ffi.h isn't found [John Harper]
116
117   * Added various missing symbols in librep.sym [John Harper]
118
119   * Fixed a warning from configure regarding librep.pc [Christopher
120     Bratusek]
121
122   * Removed VPATH from Makefiles, to allow building REP using 'makepp'
123     [Daniel Pfeiffer]
124
125   * Added 'position' meta-function [Jeremy Hankins] [Eli Barzilay]
126
127   * Imported utility-functions from Sawfish: 'beautify-symbol',
128     'remove-newlines', 'option-index' and 'string->symbol'.
129
1300.92.0
131======
132
133   * Bumped soname to 16.0.0 [Ian Zimmermann]
134
135   * Make librep loading shared-objects, rather than libtool-archives
136     [Kim B. Heino]
137
138   * Removed architecture and version from installation paths
139     [Christopher Bratusek]
140
141   * Improved debian packaging-scripts [Ian Zimmermann, Christopher
142     Bratusek]
143
1440.91.1
145======
146
147   * 'rep.ffi.util' module [Sergey Bolshakov]
148
149     A new module containing utils for rep's ffi binding is added.
150
151   * Fixed librep.pc to prevent a possible build issue in rep-gtk or
152     sawfish (occurred on fedora 14) [Christopher Bratusek]
153
154   * New functions [Teika Kazura]
155
156     'function-name' returns the name of the function object.  (*note
157     Functions::)
158
159     'remove-hook-by-name' removes functions from a hook by their name.
160     (*note Normal Hooks::)
161
162   * Documentation [Teika kazura]
163
164     Function 'in-hook-p' now has the documentation.  (*note Normal
165     Hooks::)
166
167     New sections "Module Aliases" (*note Module Aliases::), "Module
168     Limits" (*note Module Limits::).
169
170   * Minor bugfix: 'remove-hook' used to emit an error if the hook was
171     unbound, but it's fixed.  [Teika kazura]
172
173   * fixed the spec-file [Kim B. Heino]
174   * updated debian packaging-scripts (mostly) to the new format
175     [Christopher Bratusek]
176
1770.91.0
178======
179
180   * Update note [important]:
181
182     You need to rebuild rep-gtk and sawfish against this version of
183     librep, because of an ABI-change.
184
185     Your lisp files have to be byte-compiled again, too.
186
187   * Halfway improved 'debug-on-error' and 'backtrace-on-error' [Teika
188     Kazura]
189
190     Previously, setting these values to 't' triggered the debugger /
191     backtracer even if the error was signalled inside of
192     'condition-case'.  This behavior can still be obtained by setting
193     them to the symbol 'always'.
194
195     Now, if they're 't', the debugger / backtracer is invoked only if
196     the control is not inside of any 'condition-case'.  Notice that the
197     condition is NOT if the error is actually handled by an error
198     handler.  It is not the best, but we can't improve it.
199
200     The default value of 'backtrace-on-error' is now 't'.
201
202   * When you evaluate a closure interactively, the module it belongs to
203     is printed, too.  [Teika kazura]
204
205   * Improved functions' docstring support [Teika Kazura]
206
207     Handling of functions' docstring is improved.  The revised
208     'documenation' function is ensured to return the docstring of
209     functions, macros, and special forms (*note Docstrings::).
210
211     Previously, fuctions' docstrings of byte-compiled user-files (eg:
212     pager.jlc) were lost, but not now.
213
214   * New function 'subr-structure' [Teika Kazura]
215     It returns the module a subr belongs to.
216
217   * Major documentation revision [Teika kazura]
218
219     Reorganized documentation files.  Many capital letter name files
220     were updated or merged into the info.
221
222     New entries: *Note Crash course for Elisp users::, *Note
223     Closures::, on leading tilde in a filename and tarball access
224     (*note File Handlers::), fully revised the module section (*note
225     Modules::), improved description on invocation (*note
226     Invocation::), improved "fluid" and 'let' descriptions (*note Fluid
227     Variables::, and *note Local Variables::), improved the read syntax
228     of character (*note Characters::).  Module names are supplied for
229     all functions.
230
231     Supplied documentation to some functions: Input stream functions
232     'peek-char', 'read-char' (*note Input Functions::), list functions
233     'remove-if', 'remove-if-not' (*note Mapping Functions::),
234     'table-size' (*note Hash Tables::), 'setcar', 'setcdr' and 'cdddr'
235     family (*note Cons Cells::), 'assoc-regexp' (*note Association
236     Lists::).
237
238   * 'define-special-variable' is replaced by 'defvar-setq' [Teika
239     kazura]
240
241     The former is still valid, but it's a very confusing name,
242     therefore the latter is introduced.
243
244   * Makefile's uninstall rule has been fixed [Christopher Bratusek]
245
2460.90.6
247======
248
249   * renamed 'file-uid-p' to 'file-uid' and 'file-gid-p' to 'file-gid'
250     [Christopher Bratusek]
251
252   * Minor doc improvements [Teika Kazura]
253
254     Describes functions 'signal' and 'string-split'.  Correction in
255     suffix handling of 'load' function.  More details on the function
256     'require'.
257
258   * improved specfile [Kim B. Heino]
259   * Process execution failure emits better message.  [Teika Kazura]
260
2610.90.5
262======
263
264   * Byte compiler bugfix in docstring loss [Teika Kazura]
265
266     Practical effect: Previously, if a user byte-compile files, then
267     the docstring is lost in sawfish-config.  This is fixed.
268
269     Details: Loss of docstring happened only if (1) byte compiler is
270     not given '--write-docs', so only byte-compilation by user (2)
271     defvar is invoked within macro definition, including 'defcustom' in
272     Sawfish.  Plain defvar was not affected by this bug.  It was
273     because in 'trans-defvar' in lisp/rep/vm/compiler/rep.jl, the
274     docstring is stored in a wrong property 'variable-documentation'.
275     It is corrected to 'documentation'.
276
277     Symbol 'variable-documentation' is not used elsewhere, including
278     Sawfish and emacs' sawfish-mode.
279
280   * Our own implementation of dlmalloc is disabled since 2002, as it
281     breaks librep on several architectures.  From this version on, we
282     don't ship it.  [Kim B. Heino]
283
284   * Our own implementation of alloca/memcmp is not needed, rely on
285     libcs instead.  [Kim B. Heino]
286
287   * Majorly improved the debian and rpm packaging scripts [Christopher
288     Bratusek] [Kim B. Heino]
289
290   * Install headers to $includedir/rep/ instead of $includedir/
291     [Christopher Bratusek]
292
293   * Autotools improvements (Makefile, autogen.sh & Co.)  [Christopher
294     Bratusek]
295
296   * Added 'file-gid-p' function for getting the gid of a file
297     [Christopher Bratusek]
298
299   * Added 'file-uid-p' function for getting the uid of a file
300     [Christopher Bratusek]
301
3020.90.4
303======
304
305   * Library version bumped to 9.4.1
306
307   * Use $prefix/lib instead of $prefix/libexec
308
309   * Fixups for OpenBSD [Jasper Lievisse Adriaanse]
310
311   * Don't hardcode /usr in manpage installation path
312
3130.90.3
314======
315
316   * Added 'file-executable-p' function
317
318   * Improved spec-file [Kim B. Heino]
319
320   * Improved ebuild [Fuchur, Christopher Bratusek]
321
322   * Fallback check for ffi, if there's no libffi.pc [Vincent Untz]
323
324   * Removed rep-config script (use librep.pc instead)
325
326   * Added man-pages for 'rep', 'repdoc', 'rep-remote' and
327     'rep-xgettext' [Debian]
328
329   * Added debian packaging scripts based on the official ones
330
3310.90.2
332======
333
334   * Fixed a major defunct with prin1 + utf8 [Timo Korvola]
335
336   * Fixed descriptions of formats %s and %S in streams.c
337
3380.90.1
339======
340
341   * Properly terminate the rep interpreter [Jürgen Hötzel]
342
343   * Use readline history in interactive mode [Jürgen Hötzel]
344
345   * Tar file-handler does now support XZ compressed tarballs
346
347   * Tar file-handler does now support LZMA compressed tarballs
348
349   * Improved regex for parsing tar output in the file-handler [Alexey
350     I. Froloff]
351
352   * We do now correctly check for libffi
353
354   * Improved libffi-binding [Alexey I. Froloff]
355
356   * Updated librep.sym for missing entries [Alexey I. Froloff]
357
358   * Fixed an incomplete definition
359
360   * Added -L$prefix to libs section of the .pc file
361
362   * No C++ style comments in C code
363
3640.90.0
365======
366
367   * Added UTF-8 Support!  [Wang Diancheng]
368
369   * Remove scheme and unscheme modules
370
371   * Going on with code-cleanup
372
3730.17.4
374======
375
376   * Don't ignore datarootdir setting
377
378   * Fixed an aclocal warning from configure.in
379
380   * Improved configures ending message
381
382   * Doc update in 'Numbers' section.  Lacking description on machine
383     dependence is added.  [Teika]
384
385   * Remove tar target from Makefile [Ritz]
386
3870.17.3
388======
389
390   * Updated MAINTAINERS
391
392   * Dropped rep.m4 - use librep.pc instead
393
394   * Improved librep.pc
395
396   * Updated librep.spec
397
398   * Add -L/lib$libsuff to READLINE_LIBS [T2 Patch]
399
400   * Fix compilation on PPC64 [Marcus Comstedt]
401
402   * Small fixup in src/fake-libexec [SuSE]
403
404   * No rpath in src/rep-config.sh [Fedora]
405
406   * Added ebuild [Harald van Dijk]
407
408   * Improved Makefile's distclean rule
409
410   * Reworked autogen.sh
411
412   * Reworked configure.in
413
414   * Major rework of the spec-file
415
416   * Improved configure's ending message
417
418   * Fixed configure.in's templates for autoheader
419
420   * BSD-Tar is not supported by librep, give users a useful warning
421     message [Mark Diekhans]
422
4230.17.2
424======
425
426   * fixups for configure.in
427
428   * updated BUGS, HACKING and README
429
430   * define inline if undefined (fixes compiler warnings)
431
432   * create the destination directory for the .pc file before installing
433     it
434
435   * fixed in issue with FreeBSD in numbers.c [FreeBSD patch]
436
437   * improved a function of numbers.c [FreeBSD patch]
438
439   * rep_file_fdopen has not been listed in librep.sym
440
441   * added -tag=CC to libtool in several places
442
443   * don't ignore $LDFLAGS upon build
444
445   * dropped some useless code in sdbm.c
446
447   * make sure inline is defined
448
4490.17.1
450======
451
452   * started code-cleanup
453
454   * added a .pc file
455
456   * added -no-split to makeinfo [FreeBSD patch]
457
458   * added -enable-paranoia to configure [compile with CFLAGS+="-Wall
459     -ansi"]
460
461   * updated the spec file
462
463   * replaced a static void by a void in main.c [Debian patch]
464
465   * use correct shebang in rep-xgettext.jl [ALT-Linux patch]
466
467   * trim trailing / to mkdir(2) [NetBSD patch]
468
4690.17
470====
471
472   * Added 'rep.ffi' module (Foreign Function Interface).  Uses gcc's
473     libffi.  Very untested.
474
475   * Partial implementation of guile's 'GH' interface.
476
477   * Bug fixes:
478
479        - Don't hang in select for a second when starting processes via
480          the 'system' function (race condition that only seems to show
481          up on Linux 2.6 kernels)
482
483        - Miscellaneous fixes for Mac OS X.
484
485        - Don't return a reversed list of items from the XML parser.
486          (Alexander V. Nikolaev)
487
488        - Fixes to string capitalization functions.  (Charles Stewart)
489
4900.16
491====
492
493   * New modules 'rep.data.trie', 'rep.threads.proxy'
494
495   * Also added 'rep.xml.reader' and 'rep.xml.printer', though these
496     should probably be used with extreme caution
497
498   * Appending to queues is now O(1) not O(n)
499
500   * Many changes to 'rep.net.rpc' module, protocol is incompatible with
501     previous version.  Should be more robust
502
503   * 'rep.i18n.gettext' module exports the 'bindtextdomaincodeset'
504     function (Christophe Fergeau)
505
506   * Slightly more secure way of seeding the rng
507
508   * 'inexact->exact' can now convert floating point numbers to
509     rationals (though not optimally).  This means that 'numerator' and
510     'denominator' also work better with floats now
511
512   * New function 'file-ttyp'
513
514   * Some random bug fixes
515
5160.15
517====
518
519   * Parser can now associate lexical location (file name and line
520     number) with parsed objects.  Added 'call-with-lexical-origins' and
521     'lexical-origin' functions.  This adds memory overhead but is only
522     enabled in interpreted mode, or other times it could be useful
523     (e.g.  when compiling)
524
525   * The compiler enables line-numbering, and uses the information when
526     it prints errors.  It also prints errors in a more standard format
527     (intended to mimic GCC), and distinguishes warnings from errors
528
529   * Debugger is much improved, and supports emacs-style emission of
530     line number tokens.  Use the included 'rep-debugger.el' elisp code
531     to source-debug rep programs in Emacs!
532
533   * New command line option '--debug'.  When given, rep starts up in
534     the debugger
535
536   * Reformatted backtrace output.  Also backtraces only ever include
537     evaluated argument lists now.  They also include lexical
538     information when possible
539
540   * Syntax errors include error description and line number
541
542   * Now supports weak reference objects.  New functions
543     'make-weak-ref', 'weak-ref', 'weak-ref-set'.  A weak reference is a
544     pointer to another object.  When that object is garbage collected,
545     the pointer in the weak reference is set to false.
546
547   * New 'error helper' module.  When an error is handled, this module
548     is called and tries to print a human-understandable message
549     explaining why the error may have occurred
550
551   * REPL commands may now be specified by their shortest unique set of
552     leading characters, e.g.  ',o' instead of ',open'
553
554   * Added an '#undefined' value.  Returned by '%define' and the macros
555     using it ('defun', 'defmacro', etc...)
556
557   * New function 'table-size' in module 'rep.data.tables'
558
559   * 'thread-suspend' returns true iff the timeout was reached (i.e.
560     return false if 'thread-wake' was used to unsuspend the thread)
561
562   * Objects defined using the 'object' macro now have an implicit
563     'self' binding - the object representing their self (or their most
564     derived self)
565
566   * Added TIMEOUT parameter to 'condition-variable-wait' and
567     'obtain-mutex' functions
568
569   * New 'rep.threads.message-port' module, implements a simple message
570     queue for threads
571
572   * 'log' function now optionally accepts a second argument, the base
573     of the logarithm
574
575   * Use gmp to generate random numbers when possible (if at least
576     version 3 of gmp is found) [disabled in librep 0.15.1 - gmp seems
577     to be buggy?]
578
579   * The 'string-replace' function may now be given a function as its
580     TEMPLATE parameter
581
582   * Bug fixes:
583
584        - Signal an error if writes don't write all characters they were
585          asked to.  Also, some functions could write fewer characters
586          than they were supposed to even if no errors occurred
587
588        - Remembered that file sizes may not fit in fixnums
589
590        - Don't preserve trailing slashes in results of
591          canonical-file-name (to make the path canonical)
592
593        - Don't signal an error when end of file is encountered
594          immediately after reading '#\X' syntax
595
596        - 'current-thread' and 'all-threads' will create a thread object
597          for the implicit thread if there isn't one already
598
599        - In C subrs that take optional integer arguments, signal an
600          error if the given value isn't an integer or undefined
601          (false).  Also, accept all types of numbers where it makes
602          sense to do so
603
604        - Signal an error if end of file is read while parsing a block
605          comment
606
607        - Don't ever return a null object from 'current-time-string'
608
609        - Catch errors signalled during command line option processing,
610          and pass them to the standard error handler
611
612        - Right hand side of 'letrec' bindings may now have more than
613          one form
614
615        - The 'object' macro now evaluates its BASE-OBJECT parameter
616          exactly once
617
618        - Finally removed 'define-value'
619
620        - Ignore null lines (or lines which only have comments) in the
621          repl
622
623        - In the compiler, don't expand macros which have have been
624          shadowed by local bindings
625
626        - Don't print some compiler errors/warnings twice
627
628        - Fixes for 'mips-compaq-nonstopux' architecture (Tom Bates)
629
630        - Fixed ',reload' and ',unload' repl commands not to try to
631          remove non-existent structures
632
6330.14
634====
635
636   * New module 'rep.util.md5', has two functions for generating MD5
637     message digests (of files or strings)
638
639   * Changes to the 'rep.io.sockets' function:
640
641     In the 'socket-server' function the HOST and/or PORT arguments may
642     be false, meaning to listen on all addresses and to choose a random
643     unused port.
644
645     New functions 'socket-peer-address' and 'socket-peer-port', these
646     always returns the details of the far end of the connetion.
647     'socket-address' and 'socket-port' have been changed to always
648     return the details of the local connection point.
649
650   * New function in 'rep.system' module, 'crypt'.  A wrapper for the
651     system's 'crypt' function (if it has one)
652
653   * New function in 'rep.threads' mdoule, 'make-suspended-thread'
654
655   * New module 'rep.net.rpc', provides a text-stream based RPC
656     mechanism for Lisp programs.  Similar in some ways to untyped
657     CORBA. (This is still in the experimental stage - its interface may
658     change in forthcoming releases)
659
660   * New functions in 'rep.data' module, 'list->vector' and
661     'vector->list'
662
663   * New macro 'define-special-variable'.  A combination of 'defvar' and
664     'setq' - it always makes the variable special and it always sets it
665     to the given value
666
667   * New module 'rep.test.framework' implementing 'assert', 'check' and
668     'test' macros.  This provides a framework for implementing unit
669     tests in Lisp modules (such that running the interpreter with the
670     '--check' option will run all tests that have been set up to be
671     autoloaded
672
673   * Bug fixes:
674
675        - When reading from strings, don't choke on zero bytes
676
677        - When writing into sockets, be aware that the socket is in
678          non-blocking mode
679
680        - SDBM and GDBM modules now close any open databases before the
681          interpreter exits
682
683        - Fixed the 'rep_parse_number' function not to require a
684          terminating null character in the string when parsing bignums
685
686        - Only define 'Qrep_lang_interpreter' once
687
688        - Don't assign vm registers to physical registers on 68000
689          architectures - it's been reported to crash
690
691        - When running asynchronous subprocesses, open and initialize
692          the pty slave before forking to avoid a race condition with
693          the child process
694
695        - Flush symbols from the module cache at another point
696
697        - Fixes for Unixware
698
699        - When compiling non-top-level 'defvar' forms, add any doc
700          string they have to the database
701
7020.13.5
703======
704
705   * Tar file handling no longer requires GNU tar
706
707   * The 'defvar' special form can now take only a single argument
708
709   * The reader now treats '#\return' characters as white space
710
711   * Other miscellaneous bug fixes...
712
7130.13.4
714======
715
716   * Don't restrict symbols exported from plugin libraries, some need to
717     export symbols to work properly (this bug only seemed to appear on
718     Solaris systems)
719
720   * Added 'rep_file_type' and 'rep_guardian_type' to the list of
721     symbols exported from librep
722
723   * Fixed the 'install-aliases' script (Peter Teichman)
724
725   * New module 'rep.threads.condition-variable'
726
727   * Added 'string-split' and 'string-replace' to the gaol
728
7290.13.3
730======
731
732   * Try to only export public symbols from 'librep.so' and modules
733
734   * When expanding file names translate '/..' to '/'
735
736   * Set an upper bound on the allowed recursion depth when regexp
737     matching, prevents the stack from overflowing in pathological cases
738
739   * Added optional second arg to 'readline' function, a function to
740     call to generate completions.  The 'rl-completion-generator' method
741     of supplying this function is deprecated
742
743   * Fixed bugs when handling character-case in regexp module (Andrew
744     Rodionoff)
745
746   * Added an 'premature-end-of-stream' error.  This is signalled
747     instead of 'end-of-stream' when reading characters in the middle of
748     a syntax form.  The 'end-of-stream' error is only signalled when
749     the end of the stream is reached before encountering anything other
750     than whitespace characters
751
752   * Fixed bug of expanding declarations in the 'define' macro expansion
753
7540.13.2
755======
756
757   * Fix 'define' so that it tracks bound variables and ignores shadowed
758     keywords when traversing code
759
760   * Added checks to compilation process for the kind of missing
761     shared-library problems that many people see
762
763   * Fixed the 'install-aliases' shell script
764
765   * New configure option: '--enable-full-name-terminator'
766
7670.13.1
768======
769
770   * Added functions 'remove-if' and 'remove-if-not'
771
772   * Various bug-fixes for non-linux or solaris systems (John H.
773     Palmieri, Philippe Defert)
774
775   * '#f', '#t', '#!optional', '#!key' and '#!rest' are now uninterned
776     symbols.  Keywords are interned in a separate obarray
777
778   * Fixed bug of caching regexps even when their string has been
779     modified
780
781   * Fixed some bugs in the ftp remote file handler and the 'pwd-prompt'
782     function
783
784   * Fixed 'define' to ignore 'structure' and 'define-structure' forms
785
7860.13
787====
788
789   * The end-of-list / boolean-false object is no longer the symbol
790     'nil'.  Instead there is a special object '()' fulfulling these two
791     roles.  For modules importing the 'rep' module, the symbol 'nil'
792     evaluates to '()'.  This allows the 'scheme' module to be more
793     compliant with the Scheme standard
794
795   * Parameter list changes:
796
797        - Deprecated '&optional' and '&rest', in favour of '#!optional'
798          and '#!rest'.
799
800        - Added keyword parameters.  Use '#!key' to declare them.
801          Keyword syntax is '#:PARAM'.  For example:
802
803               ((lambda (#!key a b) (list a b)) #:b 2 #:a 1) => (1 2)
804
805        - '#!optional' and '#!key' parameters may now have default
806          values, syntax is '(VAR DEFAULT)'.  For example:
807
808               ((lambda (#!optional (a 1)) a)) => 1
809
810   * The module namespace is now hierarchical.  '.' characters in module
811     names denote directory separators, e.g.  'foo.bar' translates to
812     the file 'foo/bar'
813
814     All module names prefixed with 'rep.' are reserved for librep,
815     other top-level names should be picked to be as unique as possible
816
817     The existing modules have been renamed to fit this scheme (see the
818     file 'TREE' in the distribution for the hierarchy details).
819     However, old module names will still work for the time being
820
821   * The 'rep' module no longer includes the 'rep.regexp', 'rep.system',
822     'rep.io.files', 'rep.io.processes' or 'rep.io.file-handlers'
823     modules.  These need to be imported explicitly
824
825   * Doc strings are now indexed by module name as well as symbol name.
826     The 'define' macro now takes a doc string as its optional third
827     parameter
828
829   * Record constructors may include all lambda-list keywords (e.g.
830     keywords and/or default values)
831
832   * Incompatible virtual machine changes, hence bytecode files will
833     need to be recompiled.  Improvements include:
834
835        - Only heap-allocate variables when absolutely necessary
836
837        - Closure analysis to allow inlining of some types of 'letrec'
838          expressions
839
840        - Added a 'safe' virtual machine, which makes no assumptions
841          regarding validity of bytecode, so is safe for untrusted code
842
843   * Added an 'unscheme' module.  Another Scheme implementation, but the
844     goal of this one is to integrate cleanly with the librep runtime
845     environment, even if this is at the expense of R4RS compliance
846
847     For example, in 'unscheme' code, '#f => ()' and '#t => t'.  This
848     allows rep and unscheme functions to call each other without
849     needing to convert any data
850
851   * By default, it is now illegal to modify top-level variables that
852     have not previously been defined
853
854   * New macro 'define-structures' to export multiple views of a single
855     underlying environment
856
857   * The librep runtime no longer handles the '--help' option itself,
858     this should be done by scripts
859
860   * Don't search '$LD_LIBRARY_PATH' for plugins, but prepend all
861     directories in colon-separated '$REP_DL_LOAD_PATH' to
862     'dl-load-path'.  Similarly, the contents of '$REP_LOAD_PATH' is
863     prepended to 'rep-load-path'
864
865   * '(/ X) => (/ 1 X)'
866
867   * Extra string-manipulation functions: 'string-replace',
868     'string-split' (in the 'rep.regexp' module)
869
870   * '#f' and '#t' are now primitive symbols, not special objects
871
872   * Special case tail-recursive calls to 'apply', to ensure they get
873     eliminated
874
875   * The '0x123' and '0123' read syntaxes have been deprecated, use
876     '#x123' and '#o123' instead
877
878   * '#| ... |#' comments now nest correctly
879
880   * New modules: 'rep.i18n.gettext', 'rep.vm.safe-interpreter',
881     'rep.vm.assembler', 'unscheme', 'rep.data.objects',
882     'rep.www.quote-url', 'rep.www.fetch-url', 'rep.util.ispell',
883     'rep.util.base64', 'rep.util.autoloader', 'rep.io.sockets',
884     'rep.util.time', 'rep.net.domain-name'
885
886   * Bug fixes, including:
887
888        - Find size of 'long long' type on AIX, IRIX and Solaris (Dan
889          McNichol, Albert Chin-A-Young)
890
891        - Never allow macros to be called as functions
892
893        - Make bitfields unsigned (Albert Chin-A-Young)
894
895        - Fixed bounds-checking when parsing non-base-10 fixnums
896
897        - Thread fixes (and much lower thread-switch latency in many
898          cases)
899
900        - Fixed 'DEFUN' macro for C++ (Matt Tucker); also fixed header
901          files to avoid C++ keywords
902
903        - Make error message for bytecode version mismatches more
904          meaningful
905
906        - Fixed: 'default-boundp', 'continuation-callable-p'
907
908        - Only the evaluate the value of 'defvar' forms if the symbol
909          isn't already bound
910
911        - Compile else-less 'case' expressions correctly; eliminate
912          tail-recursion in 'cond' forms when possible
913
914        - Various fixes in 'scheme' module
915
9160.12.4
917======
918
919   * Support building without GNU MP, '--without-gmp' option to
920     configure.  Use 'long long' for non-fixnum integers (promote to
921     floats when out of range); no exact rationals.  There's also an
922     option to disable continuations/threading
923     ('--disable-continuations')
924
925   * Sanitized function inlining:
926
927        - Use '(declare (inline NAMES...))' to tell the compiler that it
928          might be useful to inline the named functions
929
930        - Don't even think about inlining across module/file boundaries
931          (for now anyway)
932
933   * Cleaned up the 'gaol' module.  Interface is essentially:
934     'gaol-define', 'gaol-define-special', 'gaol-define-file-handler'.
935     Added 'gaol-open' to import complete modules.  Still supports old
936     interface
937
938   * Be a lot more efficient when printing quoted strings and symbol
939     names (for some streams there used to be a system-call per
940     character!)  Also, when quoting weird symbol names, be more
941     intelligent
942
943   * Removed code to autoload from modules (which didn't really work
944     anyway)
945
946   * Be more intelligent about deciding when to flush the module cache
947
948   * Build fixes for IRIX (David Kaelbling)
949
950   * Other miscellaneous bug-fixes and performance tweaks
951
9520.12.3
953======
954
955   * New function 'thread-join', waits for a specified thread to exit,
956     then returns the value of the last form it evaluated
957
958   * Added a rudimentary profiler (',profile FORM' command in repl)
959
960   * Reorganized 'ring' module, sanitized the interface (preserving
961     compatibility with old functions), also added a 'ring->list'
962     function
963
964   * 'rplaca' and 'rplacd' (but not 'setcar' and 'setcdr') functions now
965     return the cell being modified, not the value being stored into it,
966     for compatibility with CL (Karl Hegbloom)
967
968   * 'unwind-protect', 'catch', 'condition-case': these special forms
969     are now macros
970
971   * When signalling 'bad-arg' or 'missing-arg' errors, try to include
972     the function as the first element of the error data
973
974   * 'load' function now _only_ loads files without suffixes if
975     NO-SUFFIX arg is non-'nil' (prevents picking up un-suffixed files
976     by mistake, e.g.  from the current directory)
977
978   * Fixed some bugs when reading rationals
979
980   * Fixed bug of 'gettext' module not redefining '_' binding in 'rep'
981     module
982
983   * Fixed bug when building 'rep-config' script (Mark Hewitt, Dan
984     Winship)
985
986   * Fixed bug of 'rep_INTERN_SPECIAL' macro not looking for default
987     values of special variables
988
989   * Fixed interpreted versions of 'min' and 'max' when operating on
990     non-numeric values
991
992   * If unable to allocate heap space, just print an error and terminate
993     the program (the low-memory handling doesn't currently work
994     properly)
995
996   * Fixed bug when extracting doc strings from 'define' forms
997
998   * Fixed bug when compiling structure definitions in non-top-level
999     environments
1000
1001   * Fixed bug of being unable to 'load' empty files
1002
1003   * When recursively macro-expanding, dereference identifiers in the
1004     correct module
1005
10060.12.2
1007======
1008
1009   * The tar file-handler now caches the unpacked archive (wins big when
1010     loading sawfish themes)
1011
1012   * The 'gaol' module can now create multiple gaols, each with it's own
1013     namespace
1014
1015   * More performance tweaks
1016
1017   * Miscellaneous bug-fixes (more vm stack smashing, 'defconst' never
1018     evaluates its constant)
1019
10200.12.1
1021======
1022
1023   * Some virtual machine performance tweaks
1024
1025   * Fixed nasty stack smashing bug (when using compiler declarations)
1026
1027   * Some 64-bit cleanups (George Lebl)
1028
1029   * Fixed non-ANSI C syntax (Sam Falkner)
1030
10310.12
1032====
1033
1034   * Added a basic module system.
1035
1036     Modelled after the Scheme48 system, but simpler.  At its simplest,
1037     include a 'define-structure' form in each file representing a
1038     module:
1039
1040          (define-structure NAME INTERFACE CONFIG BODY...)
1041
1042     The external definitions of this module can then be imported by
1043     other modules through their CONFIG statements, e.g.  '(open
1044     NAMES...)'.  Most modules will open 'rep' to get the standard
1045     language definitions.
1046
1047     'foo#bar' reads as '(structure-ref foo bar)'
1048
1049     The 'timers', 'tables', 'sdbm', 'gdbm', 'readline', 'gettext',
1050     'ring', 'mutex', 'memoize', 'lisp-doc', 'disassembler', 'compiler',
1051     'date', 'cgi-get', 'gaol' features are all now modules (this is
1052     backwards compatible, since modules may be imported using
1053     'require')
1054
1055     See the "Modules" section of the manual for more details.
1056
1057   * The repl now contains meta-commands for inspecting and configuring
1058     the module system (amongst other things)
1059
1060   * Added a facility for creating new primitive types: 'make-datum',
1061     'datum-ref', 'datum-set', 'has-type-p', 'define-datum-printer'
1062
1063   * Added an SRFI 9 compatible 'define-record-type' macro for defining
1064     data structures (the 'records' module)
1065
1066   * Added fluid variables--a method of creating dynamically scoped
1067     bindings that fit well with lexically scoped definitions
1068     ('make-fluid', 'fluid', 'fluid-set', 'with-fluids', 'let-fluids')
1069
1070   * Added a 'queues' module providing a basic queue type
1071
1072   * Added stream functions: 'peek-char', 'input-stream-p',
1073     'output-stream-p'
1074
1075   * Interpreter now also eliminates tail-calls
1076
1077   * Changed handling of inexact numbers to be compatible with the
1078     Scheme standard:
1079
1080        - Many operations now produce inexact outputs if any of their
1081          inputs are inexact (e.g.  'min', 'max', 'floor', 'ceiling',
1082          'round', 'truncate')
1083
1084        - 'eql' and 'equal' no longer ignore exactness when comparing
1085          numbers.  '=', '/=', '<', '>', '<=' and '>=' _do_ ignore
1086          inexactness.  E.g.
1087
1088               (eql 2 2.) => nil
1089               (= 2 2.) => t
1090
1091   * Support most of Scheme's read-syntax for numbers (i.e.  '#b', '#o',
1092     '#d', '#x' radix prefixes, and '#e', '#i' exactness prefixes).
1093
1094   * Implemented Scheme's 'string->number' and 'number->string'
1095     functions
1096
1097   * Included a basic R4RS Scheme implementation (module: 'scheme').  Do
1098     ',new foo <RET> ,open scheme' to test it in the repl, use '(open
1099     scheme)' instead of '(open rep)' to use it within modules.
1100
1101     The compiler also knows enough about Scheme to be able to compile
1102     it.  Also, use the '-s' or '--scheme' options to load a file of
1103     Scheme code.
1104
1105   * The debugger works better (and can be used to walk the stack
1106     history somewhat)
1107
1108   * Last arg of 'append' and 'nconc' may be a non-proper-list now
1109
1110   * Implemented the Scheme 'do' macro for iteration
1111
1112   * 'define' supports curried functions.  E.g.  '(define ((plus a) b)
1113     (+ a b))', then '(plus 1)' evaluates to the function that adds one
1114     to its argument.
1115
1116   * Many performance improvements:
1117
1118        - Allocates less memory (so garbage collects less often)
1119
1120        - Much faster at bytecode-to-bytecode function calling
1121
1122        - Much reduced VM overhead (when compiled with GCC)
1123
1124   * Compiler improvements:
1125
1126        - Supports the '(declare CLAUSES...)' form.  See the "Compiler
1127          Declarations" section of the manual for details on the actual
1128          declarations supported.
1129
1130        - Is cleverer about detecting when to create new bindings when
1131          tail recursing, and when the old bindings can just be
1132          overwritten
1133
1134        - Groks the module system, and the language of the module being
1135          compiled (so that it can compile both rep and Scheme code)
1136
1137        - Splices bodies of top-level 'progn' and 'begin' forms
1138          themselves into the top-level (for when macros expand into
1139          multiple definitions)
1140
1141        - Compiling already defined functions (or whole modules of
1142          functions) now (mostly) works
1143
1144        - Coalesce and compile non-defining top-level forms
1145
1146   * Many bug fixes (see ChangeLog files for details)
1147
11480.11.3
1149======
1150
1151   * Fixed bug of throwing uninitialized errors when autoloading
1152
1153   * Fixed bug of interpreting '(let () ...)' as a named let
1154
11550.11.2
1156======
1157
1158   * Replaced many special forms by macros--'let', 'let*', 'function',
1159     'if', 'and', 'or', 'prog2', 'defmacro', 'defun', 'defconst',
1160     'define-value', 'setq-default'
1161
1162   * 'let' now supports Scheme's named-let construct for iteration via
1163     tail recursion
1164
1165   * Parse some standard Common Lisp and Scheme syntax: '#| ... |#'
1166     block comments, '#\C' or '#\NAME' characters (where NAME may be one
1167     of: 'space', 'newline', 'backspace', 'tab', 'linefeed', 'return',
1168     'page', 'rubout'), and '#(...)' vectors
1169
1170   * When comparing symbols, compare their names as strings
1171
1172   * Implemented Scheme's 'dynamic-wind' function
1173
1174   * Fixed bug of sometimes evaluating function arguments in the
1175     environment of the callee not the caller
1176
1177   * Fixed bug when calculating how long to sleep for when no threads
1178     are available
1179
1180   * Fixed bugs in mutex implementation (Damon Anderson)
1181
1182   * Work around bugs in Tru64 'RTLD_GLOBAL'; everything should work on
1183     Tru64 now (Aron Griffis)
1184
1185   * Fixed bug of not saving current regexp state across continuations
1186
11870.11.1
1188======
1189
1190   * The compiler now eliminates single-function tail calls (instead of
1191     leaving it to the virtual machine)
1192
1193   * Updated to use libtool-1.3.4
1194
1195   * Miscellaneous bug fixes and minor changes
1196
11970.11
1198====
1199
1200   * Better support for numerical computting.  Now supports bignums,
1201     rational numbers (numerator and denominator are bignums), and
1202     floating point values as well as the original fixnums.  Many new
1203     numerical functions supporting these types.  Promotes and demotes
1204     hopefully as you'd expect (never demotes an inexact number to an
1205     exact number).  Tries to follow the Scheme numeric system as much
1206     as possible
1207
1208   * Supports "guardian" objects through the 'make-guardian' function
1209     (as described in Dybvig's paper).  These are a clean mechanism for
1210     allowing the programmer to control when arbitrary lisp objects are
1211     finally deallocated.  Also added a new hook: 'after-gc-hook'
1212
1213   * The default error handler can now be redefined.  If the variable
1214     'error-handler-function' contains a function then it will be called
1215     to handle the error, with arguments '(ERROR DATA)'.
1216
1217   * New special form 'case', switches on a key value and sets of
1218     constants
1219
1220   * New function 'call/cc' (also available through the alias
1221     'call-with-current-continuation').  Provides scheme-like
1222     continuation functions.  Special variables are now deep-bound to
1223     support this correctly
1224
1225   * Supports "soft" preemptive threads using continuations and a
1226     general "barrier" mechanism (used either for restricting control
1227     flow, or for receiving notification when control passes across a
1228     barrier)
1229
1230   * Parameter lists in lambda expressions now support improper lists,
1231     as in scheme.  E.g.  '(lambda (x . y) ...)'
1232
1233   * Implements the scheme 'define' syntax, with support for inner
1234     definitions
1235
1236   * The 'tables' plugin implements hash tables, with extensible hashing
1237     and comparison methods; supports both strongly and weakly keyed
1238     tables
1239
1240   * Included a GDBM binding; DOC files are now stored in GDBM files
1241     (SDBM has limits on datum sizes)
1242
1243   * 'put' and 'get' functions now use 'equal' to compare property names
1244
1245   * Virtual machine / compiler improvements:
1246
1247        - Variable references and mutations are classified by type:
1248          lexical bindings use (one-dimensional) lexically addressed
1249          instructions, global non-special bindings have their own
1250          instructions, everything else uses the original instructions.
1251          Similar classification when creating new bindings
1252
1253        - Eliminate tail-recursive function calls wherever possible in
1254          compiled code (when the calling function has no dynamic state)
1255
1256     Compiled lisp code will need to be rebuilt to run on the modified
1257     virtual machine.
1258
1259   * When expanding macros, bind 'macro-environment' to the macro
1260     environment it was called with.  This allows macros to reliably
1261     expand inner macro uses
1262
1263   * New hook 'before-exit-hook'.  Called immediately before exiting
1264
1265   * 'rep-xgettext' now has an option '--c'.  This makes it output
1266     pseudo C code containing the string constants found
1267
1268   * Fixed misfeature of interpreting filenames 'FOO//BAR' as '/BAR'.
1269     Contiguous path separators are now merged (i.e.  'FOO/BAR')
1270
12710.10
1272====
1273
1274   * Updated support for dumping (freezing) lisp definitions to handle
1275     lisp-1 nature with closures.  Also now generates C code instead of
1276     assembler for portability; creates a plugin that may be loaded
1277     through the REP_DUMP_FILE environment variable
1278
1279   * Plugin '.la' files may now contain rep-specific settings:
1280     'rep_open_globally=yes' and 'rep_requires='FEATURES...''
1281
1282   * New function 'define-value'.  A combination of 'set' and 'defvar',
1283     but without implying dynamic scope
1284
1285   * 'load' scans AFTER-LOAD-ALIST for plugins as well as lisp libraries
1286
1287   * '(if t)' now evaluates to 'nil' not 't'
1288
1289   * Fix regexp bug in matching simple non-greedy operators (Matt Krai)
1290
1291   * Borrowed guile's bouncing parentheses for readline (Ceri Storey)
1292
1293   * New C functions 'rep_load_environment' and 'rep_top_level_exit'
1294
1295   * 'defvar' allows symbols to be redefined in protected environments
1296     if they haven't also been defined by unprotected environments
1297
1298   * Detect GCC's with broken '__builtin_return_address' functions
1299     (George Lebl)
1300
1301   * Try to use libc 'gettext' implementation, but only if it looks like
1302     it's the GNU implementation
1303
13040.9
1305===
1306
1307   * Support for using GNU readline (give configure the
1308     '--with-readline' option)
1309
1310   * New functions: 'letrec', 'caar', ..., 'cddr', 'caaar', ...,
1311     'cdddr', 'in-hook-p', 'make-variable-special'
1312
1313   * Changed 'unless' to have the Common Lisp semantics--return 'nil'
1314     when the condition evaluates true, not the value of the condition
1315
1316   * Fixed/added some compiler optimisations
1317
1318   * Fixed 'rep-xgettext' script to remove duplicated strings and to
1319     search exhaustively
1320
1321   * 'add-hook' forces the hook variable to be special (in case it
1322     wasn't declared using 'defvar')
1323
13240.8.1
1325=====
1326
1327Fixed some documentation bugs; fixed some build problems
1328
13290.8
1330===
1331
1332   * Default scoping is now lexical, only variables declared using
1333     'defvar' are dynamically scoped.
1334
1335   * There is now only a single namespace for symbols (excepting
1336     property lists), this means that the 'fset', 'symbol-function' and
1337     'fboundp' functions have been removed
1338
1339     This allows all elements in procedure-call forms to be evaluated
1340     equally (as in scheme), so things like:
1341
1342          ((if t + -) 1 2)
1343
1344     now work.  Related to this, function names (i.e.  symbols and
1345     lambda expressions) are no longer dereferenced by any operations
1346     taking functions as arguments.  Only built-in subroutines and
1347     closures are considered functions.
1348
1349     This means that where before you'd write something like:
1350
1351          (mapcar '+ '(1 2 3))
1352
1353     this is now illegal; the '+' function must be evaluated:
1354
1355          (mapcar + '(1 2 3))
1356
1357   * 'lambda' is now a special form evaluating to a closure (as in
1358     scheme); this means that the following are exactly equivalent:
1359
1360          (lambda (x) x) == (function (lambda (x) x)) == #'(lambda (x) x)
1361
1362     An alternative method of enclosing a lambda expression is to use
1363     the 'make-closure' function.
1364
1365   * 'gaol' module providing semi-safe environment for untrusted code to
1366     evaluate in
1367
1368   * Support for i18n through 'gettext' module; also support for '%1$s'
1369     type format specifiers
1370
1371   * New functions 'string-equal' and 'string-lessp'
1372
13730.7.1
1374=====
1375
1376   * Added '--with-rep-prefix' option to autoconf AM_PATH_REP macro
1377
1378   * Fixed bug when inserting a new timer before an existing timer
1379
1380   * Fix the malloc tracking code
1381
1382   * Fix dlmalloc for FreeBSD
1383
1384   * Use install when installing, not cp
1385
1386   * Some fixes for compiling with SUN's C compiler on Solaris
1387
13880.7
1389===
1390
1391   * Added file handler for read-only access to the contents of tar
1392     archives, access files like 'foo.tar.gz#tar/bar'
1393
1394   * 'process-id' function now returns pid of lisp interpreter when
1395     called with zero arguments
1396
1397   * Added (untested) support for loading dynamic objects via 'shl_load'
1398     (HP-UX)
1399
1400   * Added (untested) support for systems that prefix symbol names in
1401     dynamic objects with underscores
1402
1403   * Fix bug when compiling 'last' function
1404
1405   * Fix bug of not closing files in the 'load' function
1406
14070.6.2
1408=====
1409
1410   * Added 'autoload-verbose' variable; set it to 'nil' to turn off the
1411     messages when autoloading
1412
1413   * Fix problems when '--prefix' option has a trailing slash
1414
1415   * Updated libtool files to version 1.3.3
1416
1417   * Initial (incomplete) support for building under Tru64, from Aron
1418     Griffis
1419
14200.6.1
1421=====
1422
1423No new features; minor portability tweaks and build changes.  Fix bug of
1424trying to load directories as Lisp scripts
1425
14260.6
1427===
1428
1429   * Add 'unsetenv' function
1430
1431   * 'system' now uses 'process-environment'
1432
1433   * Workaround compiler bug with GCC 2.95 on sparc
1434
1435   * Fix build problem where libsdbm.la can't be located
1436
14370.5
1438===
1439
1440   * New function 'set-input-handler', registers an asynchronous input
1441     handler for a local file
1442
1443   * Don't abort on receipt of unexpected 'SIGCHLD' signals
1444
1445   * Upgrade libtool to version 1.2f
1446
1447   * The 'rep' binary by default always loads a script named 'rep', not
1448     named by it's 'argv[0]' (this breaks under the newer libtool)
1449
14500.4
1451===
1452
1453   * Sending a rep process a 'SIGUSR2' prints all debug buffers
1454
1455   * Added '--with-value-type', and '--with-malloc-alignment' configure
1456     options.  Also added code to automatically detect the first of
1457     these options.
1458
1459   * Fixed some 64-bit problems
1460
1461   * Removed the difference between static and dynamic strings
1462
14630.3
1464===
1465
1466   * New compiler command line option '--write-docs'
1467
14680.2
1469===
1470
1471   * The variables 'error-mode' and 'interrupt-mode' control where
1472     errors and user-interrupts (i.e.  'SIGINT' signals) are handled.
1473     The three possible values are: 'top-level', 'exit' and 'nil'
1474     (denotes the current event loop).
1475
1476   * Fixed bug where all dynamic types were erroneously 'symbolp'.
1477
1478   * 'SIGINT', 'SIGHUP' and 'SIGTERM' signals should now be caught more
1479     successfully.
1480
1481   * Added a new directory to 'dl-load-path': 'LIBEXECDIR/rep/ARCH' to
1482     contain third-party shared libraries.
1483
14840.1
1485===
1486
1487First public release.
1488