source: trunk/third/librep/NEWS @ 17362

Revision 17362, 32.0 KB checked in by ghudson, 23 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r17361, which included commits to RCS files with non-trunk default branches.
Line 
1News
2****
3
40.15
5====
6
7   * Parser can now associate lexical location (file name and line
8     number) with parsed objects. Added `call-with-lexical-origins' and
9     `lexical-origin' functions. This adds memory overhead but is only
10     enabled in interpreted mode, or other times it could be useful
11     (e.g.  when compiling)
12
13   * The compiler enables line-numbering, and uses the information when
14     it prints errors. It also prints errors in a more standard format
15     (intended to mimic GCC), and distinguishes warnings from errors
16
17   * Debugger is much improved, and supports emacs-style emission of
18     line number tokens. Use the included `rep-debugger.el' elisp code
19     to source-debug rep programs in Emacs!
20
21   * New command line option `--debug'. When given, rep starts up in
22     the debugger
23
24   * Reformatted backtrace output. Also backtraces only ever include
25     evaluated argument lists now. They also include lexical information
26     when possible
27
28   * Syntax errors include error description and line number
29
30   * Now supports weak reference objects. New functions
31     `make-weak-ref', `weak-ref', `weak-ref-set'. A weak reference is a
32     pointer to another object. When that object is garbage collected,
33     the pointer in the weak reference is set to false.
34
35   * New `error helper' module. When an error is handled, this module
36     is called and tries to print a human-understandable message
37     explaining why the error may have occurred
38
39   * REPL commands may now be specified by their shortest unique set of
40     leading characters, e.g. `,o' instead of `,open'
41
42   * Added an `#undefined' value. Returned by `%define' and the macros
43     using it (`defun', `defmacro', etc...)
44
45   * New function `table-size' in module `rep.data.tables'
46
47   * `thread-suspend' returns true iff the timeout was reached (i.e.
48     return false if `thread-wake' was used to unsuspend the thread)
49
50   * Objects defined using the `object' macro now have an implicit
51     `self' binding - the object representing their self (or their most
52     derived self)
53
54   * Added TIMEOUT parameter to `condition-variable-wait' and
55     `obtain-mutex' functions
56
57   * New `rep.threads.message-port' module, implements a simple message
58     queue for threads
59
60   * `log' function now optionally accepts a second argument, the base
61     of the logarithm
62
63   * Use gmp to generate random numbers when possible (if at least
64     version 3 of gmp is found) [disabled in librep 0.15.1 - gmp seems
65     to be buggy?]
66
67   * The `string-replace' function may now be given a function as its
68     TEMPLATE parameter
69
70   * Bug fixes:
71
72        - Signal an error if writes don't write all characters they were
73          asked to. Also, some functions could write fewer characters
74          than they were supposed to even if no errors occurred
75
76        - Remembered that file sizes may not fit in fixnums
77
78        - Don't preserve trailing slashes in results of
79          canonical-file-name (to make the path canonical)
80
81        - Don't signal an error when end of file is encountered
82          immediately after reading `#\X' syntax
83
84        - `current-thread' and `all-threads' will create a thread
85          object for the implicit thread if there isn't one already
86
87        - In C subrs that take optional integer arguments, signal an
88          error if the given value isn't an integer or undefined
89          (false). Also, accept all types of numbers where it makes
90          sense to do so
91
92        - Signal an error if end of file is read while parsing a block
93          comment
94
95        - Don't ever return a null object from `current-time-string'
96
97        - Catch errors signalled during command line option processing,
98          and pass them to the standard error handler
99
100        - Right hand side of `letrec' bindings may now have more than
101          one form
102
103        - The `object' macro now evaluates its BASE-OBJECT parameter
104          exactly once
105
106        - Finally removed `define-value'
107
108        - Ignore null lines (or lines which only have comments) in the
109          repl
110
111        - In the compiler, don't expand macros which have have been
112          shadowed by local bindings
113
114        - Don't print some compiler errors/warnings twice
115
116        - Fixes for `mips-compaq-nonstopux' architecture (Tom Bates)
117
118        - Fixed `,reload' and `,unload' repl commands not to try to
119          remove non-existent structures
120
121
1220.14
123====
124
125   * New module `rep.util.md5', has two functions for generating MD5
126     message digests (of files or strings)
127
128   * Changes to the `rep.io.sockets' function:
129
130     In the `socket-server' function the HOST and/or PORT arguments may
131     be false, meaning to listen on all addresses and to choose a
132     random unused port.
133
134     New functions `socket-peer-address' and `socket-peer-port', these
135     always returns the details of the far end of the connetion.
136     `socket-address' and `socket-port' have been changed to always
137     return the details of the local connection point.
138
139   * New function in `rep.system' module, `crypt'. A wrapper for the
140     system's `crypt' function (if it has one)
141
142   * New function in `rep.threads' mdoule, `make-suspended-thread'
143
144   * New module `rep.net.rpc', provides a text-stream based RPC
145     mechanism for Lisp programs. Similar in some ways to untyped CORBA.
146     (This is still in the experimental stage - its interface may
147     change in forthcoming releases)
148
149   * New functions in `rep.data' module, `list->vector' and
150     `vector->list'
151
152   * New macro `define-special-form'. A combination of `defvar' and
153     `setq' - it always makes the variable special and it always sets
154     it to the given value
155
156   * New module `rep.test.framework' implementing `assert', `check' and
157     `test' macros. This provides a framework for implementing unit
158     tests in Lisp modules (such that running the interpreter with the
159     `--check' option will run all tests that have been set up to be
160     autoloaded
161
162   * Bug fixes:
163
164        - When reading from strings, don't choke on zero bytes
165
166        - When writing into sockets, be aware that the socket is in
167          non-blocking mode
168
169        - SDBM and GDBM modules now close any open databases before the
170          interpreter exits
171
172        - Fixed the `rep_parse_number' function not to require a
173          terminating null character in the string when parsing bignums
174
175        - Only define `Qrep_lang_interpreter' once
176
177        - Don't assign vm registers to physical registers on 68000
178          architectures - it's been reported to crash
179
180        - When running asynchronous subprocesses, open and initialize
181          the pty slave before forking to avoid a race condition with
182          the child process
183
184        - Flush symbols from the module cache at another point
185
186        - Fixes for Unixware
187
188        - When compiling non-top-level `defvar' forms, add any doc
189          string they have to the database
190
191
1920.13.5
193======
194
195   * Tar file handling no longer requires GNU tar
196
197   * The `defvar' special form can now take only a single argument
198
199   * The reader now treats `#\return' characters as white space
200
201   * Other miscellaneous bug fixes...
202
203
2040.13.4
205======
206
207   * Don't restrict symbols exported from plugin libraries, some need
208     to export symbols to work properly (this bug only seemed to appear
209     on Solaris systems)
210
211   * Added `rep_file_type' and `rep_guardian_type' to the list of
212     symbols exported from librep
213
214   * Fixed the `install-aliases' script (Peter Teichman)
215
216   * New module `rep.threads.condition-variable'
217
218   * Added `string-split' and `string-replace' to the gaol
219
220
2210.13.3
222======
223
224   * Try to only export public symbols from `librep.so' and modules
225
226   * When expanding file names translate `/..' to `/'
227
228   * Set an upper bound on the allowed recursion depth when regexp
229     matching, prevents the stack from overflowing in pathological cases
230
231   * Added optional second arg to `readline' function, a function to
232     call to generate completions. The `rl-completion-generator' method
233     of supplying this function is deprecated
234
235   * Fixed bugs when handling character-case in regexp module (Andrew
236     Rodionoff)
237
238   * Added an `premature-end-of-stream' error. This is signalled
239     instead of `end-of-stream' when reading characters in the middle
240     of a syntax form. The `end-of-stream' error is only signalled when
241     the end of the stream is reached before encountering anything other
242     than whitespace characters
243
244   * Fixed bug of expanding declarations in the `define' macro expansion
245
246
2470.13.2
248======
249
250   * Fix `define' so that it tracks bound variables and ignores
251     shadowed keywords when traversing code
252
253   * Added checks to compilation process for the kind of missing
254     shared-library problems that many people see
255
256   * Fixed the `install-aliases' shell script
257
258   * New configure option: `--enable-full-name-terminator'
259
260
2610.13.1
262======
263
264   * Added functions `remove-if' and `remove-if-not'
265
266   * Various bug-fixes for non-linux or solaris systems (John H.
267     Palmieri, Philippe Defert)
268
269   * `#f', `#t', `#!optional', `#!key' and `#!rest' are now uninterned
270     symbols. Keywords are interned in a separate obarray
271
272   * Fixed bug of caching regexps even when their string has been
273     modified
274
275   * Fixed some bugs in the ftp remote file handler and the
276     `pwd-prompt' function
277
278   * Fixed `define' to ignore `structure' and `define-structure' forms
279
280
2810.13
282====
283
284   * The end-of-list / boolean-false object is no longer the symbol
285     `nil'. Instead there is a special object `()' fulfulling these two
286     roles. For modules importing the `rep' module, the symbol `nil'
287     evaluates to `()'. This allows the `scheme' module to be more
288     compliant with the Scheme standard
289
290   * Parameter list changes:
291
292        - Deprecated `&optional' and `&rest', in favour of `#!optional'
293          and `#!rest'.
294
295        - Added keyword parameters. Use `#!key' to declare them.
296          Keyword syntax is `#:PARAM'. For example:
297
298               ((lambda (#!key a b) (list a b)) #:b 2 #:a 1) => (1 2)
299
300        - `#!optional' and `#!key' parameters may now have default
301          values, syntax is `(VAR DEFAULT)'. For example:
302
303               ((lambda (#!optional (a 1)) a)) => 1
304
305   * The module namespace is now hierarchical. `.' characters in module
306     names denote directory separators, e.g. `foo.bar' translates to
307     the file `foo/bar'
308
309     All module names prefixed with `rep.' are reserved for librep,
310     other top-level names should be picked to be as unique as possible
311
312     The existing modules have been renamed to fit this scheme (see the
313     file `TREE' in the distribution for the hierarchy details).
314     However, old module names will still work for the time being
315
316   * The `rep' module no longer includes the `rep.regexp',
317     `rep.system', `rep.io.files', `rep.io.processes' or
318     `rep.io.file-handlers' modules. These need to be imported
319     explicitly
320
321   * Doc strings are now indexed by module name as well as symbol name.
322     The `define' macro now takes a doc string as its optional third
323     parameter
324
325   * Record constructors may include all lambda-list keywords (e.g.
326     keywords and/or default values)
327
328   * Incompatible virtual machine changes, hence bytecode files will
329     need to be recompiled. Improvements include:
330
331        - Only heap-allocate variables when absolutely necessary
332
333        - Closure analysis to allow inlining of some types of `letrec'
334          expressions
335
336        - Added a `safe' virtual machine, which makes no assumptions
337          regarding validity of bytecode, so is safe for untrusted code
338
339   * Added an `unscheme' module. Another Scheme implementation, but the
340     goal of this one is to integrate cleanly with the librep runtime
341     environment, even if this is at the expense of R4RS compliance
342
343     For example, in `unscheme' code, `#f => ()' and `#t => t'. This
344     allows rep and unscheme functions to call each other without
345     needing to convert any data
346
347   * By default, it is now illegal to modify top-level variables that
348     have not previously been defined
349
350   * New macro `define-structures' to export multiple views of a single
351     underlying environment
352
353   * The librep runtime no longer handles the `--help' option itself,
354     this should be done by scripts
355
356   * Don't search `$LD_LIBRARY_PATH' for plugins, but prepend all
357     directories in colon-separated `$REP_DL_LOAD_PATH' to
358     `dl-load-path'. Similarly, the contents of `$REP_LOAD_PATH' is
359     prepended to `rep-load-path'
360
361   * `(/ X) => (/ 1 X)'
362
363   * Extra string-manipulation functions: `string-replace',
364     `string-split' (in the `rep.regexp' module)
365
366   * `#f' and `#t' are now primitive symbols, not special objects
367
368   * Special case tail-recursive calls to `apply', to ensure they get
369     eliminated
370
371   * The `0x123' and `0123' read syntaxes have been deprecated, use
372     `#x123' and `#o123' instead
373
374   * `#| ... |#' comments now nest correctly
375
376   * New modules: `rep.i18n.gettext', `rep.vm.safe-interpreter',
377     `rep.vm.assembler', `unscheme', `rep.data.objects',
378     `rep.www.quote-url', `rep.www.fetch-url', `rep.util.ispell',
379     `rep.util.base64', `rep.util.autoloader', `rep.io.sockets',
380     `rep.util.time', `rep.net.domain-name'
381
382   * Bug fixes, including:
383
384        - Find size of `long long' type on AIX, IRIX and Solaris (Dan
385          McNichol, Albert Chin-A-Young)
386
387        - Never allow macros to be called as functions
388
389        - Make bitfields unsigned (Albert Chin-A-Young)
390
391        - Fixed bounds-checking when parsing non-base-10 fixnums
392
393        - Thread fixes (and much lower thread-switch latency in many
394          cases)
395
396        - Fixed `DEFUN' macro for C++ (Matt Tucker); also fixed header
397          files to avoid C++ keywords
398
399        - Make error message for bytecode version mismatches more
400          meaningful
401
402        - Fixed: `default-boundp', `continuation-callable-p'
403
404        - Only the evaluate the value of `defvar' forms if the symbol
405          isn't already bound
406
407        - Compile else-less `case' expressions correctly; eliminate
408          tail-recursion in `cond' forms when possible
409
410        - Various fixes in `scheme' module
411
4120.12.4
413======
414
415   * Support building without GNU MP, `--without-gmp' option to
416     configure. Use `long long' for non-fixnum integers (promote to
417     floats when out of range); no exact rationals. There's also an
418     option to disable continuations/threading
419     (`--disable-continuations')
420
421   * Sanitized function inlining:
422
423        - Use `(declare (inline NAMES...))' to tell the compiler that
424          it might be useful to inline the named functions
425
426        - Don't even think about inlining across module/file boundaries
427          (for now anyway)
428
429   * Cleaned up the `gaol' module. Interface is essentially:
430     `gaol-define', `gaol-define-special', `gaol-define-file-handler'.
431     Added `gaol-open' to import complete modules. Still supports old
432     interface
433
434   * Be a lot more efficient when printing quoted strings and symbol
435     names (for some streams there used to be a system-call per
436     character!)  Also, when quoting weird symbol names, be more
437     intelligent
438
439   * Removed code to autoload from modules (which didn't really work
440     anyway)
441
442   * Be more intelligent about deciding when to flush the module cache
443
444   * Build fixes for IRIX (David Kaelbling)
445
446   * Other miscellaneous bug-fixes and performance tweaks
447
448
4490.12.3
450======
451
452   * New function `thread-join', waits for a specified thread to exit,
453     then returns the value of the last form it evaluated
454
455   * Added a rudimentary profiler (`,profile FORM' command in repl)
456
457   * Reorganized `ring' module, sanitized the interface (preserving
458     compatibility with old functions), also added a `ring->list'
459     function
460
461   * `rplaca' and `rplacd' (but not `setcar' and `setcdr') functions
462     now return the cell being modified, not the value being stored
463     into it, for compatibility with CL (Karl Hegbloom)
464
465   * `unwind-protect', `catch', `condition-case': these special forms
466     are now macros
467
468   * When signalling `bad-arg' or `missing-arg' errors, try to include
469     the function as the first element of the error data
470
471   * `load' function now _only_ loads files without suffixes if
472     NO-SUFFIX arg is non-`nil' (prevents picking up un-suffixed files
473     by mistake, e.g. from the current directory)
474
475   * Fixed some bugs when reading rationals
476
477   * Fixed bug of `gettext' module not redefining `_' binding in `rep'
478     module
479
480   * Fixed bug when building `rep-config' script (Mark Hewitt, Dan
481     Winship)
482
483   * Fixed bug of `rep_INTERN_SPECIAL' macro not looking for default
484     values of special variables
485
486   * Fixed interpreted versions of `min' and `max' when operating on
487     non-numeric values
488
489   * If unable to allocate heap space, just print an error and
490     terminate the program (the low-memory handling doesn't currently
491     work properly)
492
493   * Fixed bug when extracting doc strings from `define' forms
494
495   * Fixed bug when compiling structure definitions in non-top-level
496     environments
497
498   * Fixed bug of being unable to `load' empty files
499
500   * When recursively macro-expanding, dereference identifiers in the
501     correct module
502
503
5040.12.2
505======
506
507   * The tar file-handler now caches the unpacked archive (wins big
508     when loading sawfish themes)
509
510   * The `gaol' module can now create multiple gaols, each with it's
511     own namespace
512
513   * More performance tweaks
514
515   * Miscellaneous bug-fixes (more vm stack smashing, `defconst' never
516     evaluates its constant)
517
518
5190.12.1
520======
521
522   * Some virtual machine performance tweaks
523
524   * Fixed nasty stack smashing bug (when using compiler declarations)
525
526   * Some 64-bit cleanups (George Lebl)
527
528   * Fixed non-ANSI C syntax (Sam Falkner)
529
530
5310.12
532====
533
534   * Added a basic module system.
535
536     Modelled after the Scheme48 system, but simpler. At its simplest,
537     include a `define-structure' form in each file representing a
538     module:
539
540          (define-structure NAME INTERFACE CONFIG BODY...)
541
542     The external definitions of this module can then be imported by
543     other modules through their CONFIG statements, e.g. `(open
544     NAMES...)'. Most modules will open `rep' to get the standard
545     language definitions.
546
547     `foo#bar' reads as `(structure-ref foo bar)'
548
549     The `timers', `tables', `sdbm', `gdbm', `readline', `gettext',
550     `ring', `mutex', `memoize', `lisp-doc', `disassembler', `compiler',
551     `date', `cgi-get', `gaol' features are all now modules (this is
552     backwards compatible, since modules may be imported using
553     `require')
554
555     See the "Modules" section of the manual for more details.
556
557   * The repl now contains meta-commands for inspecting and configuring
558     the module system (amongst other things)
559
560   * Added a facility for creating new primitive types: `make-datum',
561     `datum-ref', `datum-set', `has-type-p', `define-datum-printer'
562
563   * Added an SRFI 9 compatible `define-record-type' macro for defining
564     data structures (the `records' module)
565
566   * Added fluid variables--a method of creating dynamically scoped
567     bindings that fit well with lexically scoped definitions
568     (`make-fluid', `fluid', `fluid-set', `with-fluids', `let-fluids')
569
570   * Added a `queues' module providing a basic queue type
571
572   * Added stream functions: `peek-char', `input-stream-p',
573     `output-stream-p'
574
575   * Interpreter now also eliminates tail-calls
576
577   * Changed handling of inexact numbers to be compatible with the
578     Scheme standard:
579
580        - Many operations now produce inexact outputs if any of their
581          inputs are inexact (e.g. `min', `max', `floor', `ceiling',
582          `round', `truncate')
583
584        - `eql' and `equal' no longer ignore exactness when comparing
585          numbers. `=', `/=', `<', `>', `<=' and `>=' _do_ ignore
586          inexactness. E.g.
587
588               (eql 2 2.) => nil
589               (= 2 2.) => t
590
591   * Support most of Scheme's read-syntax for numbers (i.e. `#b', `#o',
592     `#d', `#x' radix prefixes, and `#e', `#i' exactness prefixes).
593
594   * Implemented Scheme's `string->number' and `number->string'
595     functions
596
597   * Included a basic R4RS Scheme implementation (module: `scheme'). Do
598     `,new foo <RET> ,open scheme' to test it in the repl, use `(open
599     scheme)' instead of `(open rep)' to use it within modules.
600
601     The compiler also knows enough about Scheme to be able to compile
602     it.  Also, use the `-s' or `--scheme' options to load a file of
603     Scheme code.
604
605   * The debugger works better (and can be used to walk the stack
606     history somewhat)
607
608   * Last arg of `append' and `nconc' may be a non-proper-list now
609
610   * Implemented the Scheme `do' macro for iteration
611
612   * `define' supports curried functions. E.g. `(define ((plus a) b) (+
613     a b))', then `(plus 1)' evaluates to the function that adds one to
614     its argument.
615
616   * Many performance improvements:
617
618        - Allocates less memory (so garbage collects less often)
619
620        - Much faster at bytecode-to-bytecode function calling
621
622        - Much reduced VM overhead (when compiled with GCC)
623
624   * Compiler improvements:
625
626        - Supports the `(declare CLAUSES...)' form. See the "Compiler
627          Declarations" section of the manual for details on the actual
628          declarations supported.
629
630        - Is cleverer about detecting when to create new bindings when
631          tail recursing, and when the old bindings can just be
632          overwritten
633
634        - Groks the module system, and the language of the module being
635          compiled (so that it can compile both rep and Scheme code)
636
637        - Splices bodies of top-level `progn' and `begin' forms
638          themselves into the top-level (for when macros expand into
639          multiple definitions)
640
641        - Compiling already defined functions (or whole modules of
642          functions) now (mostly) works
643
644        - Coalesce and compile non-defining top-level forms
645
646   * Many bug fixes (see ChangeLog files for details)
647
648
6490.11.3
650======
651
652   * Fixed bug of throwing uninitialized errors when autoloading
653
654   * Fixed bug of interpreting `(let () ...)' as a named let
655
6560.11.2
657======
658
659   * Replaced many special forms by macros--`let', `let*', `function',
660     `if', `and', `or', `prog2', `defmacro', `defun', `defconst',
661     `define-value', `setq-default'
662
663   * `let' now supports Scheme's named-let construct for iteration via
664     tail recursion
665
666   * Parse some standard Common Lisp and Scheme syntax: `#| ... |#'
667     block comments, `#\C' or `#\NAME' characters (where NAME may be
668     one of: `space', `newline', `backspace', `tab', `linefeed',
669     `return', `page', `rubout'), and `#(...)' vectors
670
671   * When comparing symbols, compare their names as strings
672
673   * Implemented Scheme's `dynamic-wind' function
674
675   * Fixed bug of sometimes evaluating function arguments in the
676     environment of the callee not the caller
677
678   * Fixed bug when calculating how long to sleep for when no threads
679     are available
680
681   * Fixed bugs in mutex implementation (Damon Anderson)
682
683   * Work around bugs in Tru64 `RTLD_GLOBAL'; everything should work on
684     Tru64 now (Aron Griffis)
685
686   * Fixed bug of not saving current regexp state across continuations
687
688
6890.11.1
690======
691
692   * The compiler now eliminates single-function tail calls (instead of
693     leaving it to the virtual machine)
694
695   * Updated to use libtool-1.3.4
696
697   * Miscellaneous bug fixes and minor changes
698
6990.11
700====
701
702   * Better support for numerical computing. Now supports bignums,
703     rational numbers (numerator and denominator are bignums), and
704     floating point values as well as the original fixnums. Many new
705     numerical functions supporting these types. Promotes and demotes
706     hopefully as you'd expect (never demotes an inexact number to an
707     exact number).  Tries to follow the Scheme numeric system as much
708     as possible
709
710   * Supports "guardian" objects through the `make-guardian' function
711     (as described in Dybvig's paper). These are a clean mechanism for
712     allowing the programmer to control when arbitrary lisp objects are
713     finally deallocated. Also added a new hook: `after-gc-hook'
714
715   * The default error handler can now be redefined. If the variable
716     `error-handler-function' contains a function then it will be
717     called to handle the error, with arguments `(ERROR DATA)'.
718
719   * New special form `case', switches on a key value and sets of
720     constants
721
722   * New function `call/cc' (also available through the alias
723     `call-with-current-continuation'). Provides scheme-like
724     continuation functions. Special variables are now deep-bound to
725     support this correctly
726
727   * Supports "soft" preemptive threads using continuations and a
728     general "barrier" mechanism (used either for restricting control
729     flow, or for receiving notification when control passes across a
730     barrier)
731
732   * Parameter lists in lambda expressions now support improper lists,
733     as in scheme. E.g. `(lambda (x . y) ...)'
734
735   * Implements the scheme `define' syntax, with support for inner
736     definitions
737
738   * The `tables' plugin implements hash tables, with extensible
739     hashing and comparison methods; supports both strongly and weakly
740     keyed tables
741
742   * Included a GDBM binding; DOC files are now stored in GDBM files
743     (SDBM has limits on datum sizes)
744
745   * `put' and `get' functions now use `equal' to compare property names
746
747   * Virtual machine / compiler improvements:
748
749        - Variable references and mutations are classified by type:
750          lexical bindings use (one-dimensional) lexically addressed
751          instructions, global non-special bindings have their own
752          instructions, everything else uses the original instructions.
753          Similar classification when creating new bindings
754
755        - Eliminate tail-recursive function calls wherever possible in
756          compiled code (when the calling function has no dynamic state)
757
758     Compiled lisp code will need to be rebuilt to run on the modified
759     virtual machine.
760
761   * When expanding macros, bind `macro-environment' to the macro
762     environment it was called with. This allows macros to reliably
763     expand inner macro uses
764
765   * New hook `before-exit-hook'. Called immediately before exiting
766
767   * `rep-xgettext' now has an option `--c'. This makes it output
768     pseudo C code containing the string constants found
769
770   * Fixed misfeature of interpreting filenames `FOO//BAR' as `/BAR'.
771     Contiguous path separators are now merged (i.e. `FOO/BAR')
772
773
7740.10
775====
776
777   * Updated support for dumping (freezing) lisp definitions to handle
778     lisp-1 nature with closures. Also now generates C code instead of
779     assembler for portability; creates a plugin that may be loaded
780     through the REP_DUMP_FILE environment variable
781
782   * Plugin `.la' files may now contain rep-specific settings:
783     `rep_open_globally=yes' and `rep_requires='FEATURES...''
784
785   * New function `define-value'. A combination of `set' and `defvar',
786     but without implying dynamic scope
787
788   * `load' scans AFTER-LOAD-ALIST for plugins as well as lisp libraries
789
790   * `(if t)' now evaluates to `nil' not `t'
791
792   * Fix regexp bug in matching simple non-greedy operators (Matt Krai)
793
794   * Borrowed guile's bouncing parentheses for readline (Ceri Storey)
795
796   * New C functions `rep_load_environment' and `rep_top_level_exit'
797
798   * `defvar' allows symbols to be redefined in protected environments
799     if they haven't also been defined by unprotected environments
800
801   * Detect GCC's with broken `__builtin_return_address' functions
802     (George Lebl)
803
804   * Try to use libc `gettext' implementation, but only if it looks
805     like it's the GNU implementation
806
807
8080.9
809===
810
811   * Support for using GNU readline (give configure the
812     `--with-readline' option)
813
814   * New functions: `letrec', `caar', ..., `cddr', `caaar', ...,
815     `cdddr', `in-hook-p', `make-variable-special'
816
817   * Changed `unless' to have the Common Lisp semantics--return `nil'
818     when the condition evaluates true, not the value of the condition
819
820   * Fixed/added some compiler optimisations
821
822   * Fixed `rep-xgettext' script to remove duplicated strings and to
823     search exhaustively
824
825   * `add-hook' forces the hook variable to be special (in case it
826     wasn't declared using `defvar')
827
828
8290.8.1
830=====
831
832   Fixed some documentation bugs; fixed some build problems
833
8340.8
835===
836
837   * Default scoping is now lexical, only variables declared using
838     `defvar' are dynamically scoped.
839
840   * There is now only a single namespace for symbols (excepting
841     property lists), this means that the `fset', `symbol-function' and
842     `fboundp' functions have been removed
843
844     This allows all elements in procedure-call forms to be evaluated
845     equally (as in scheme), so things like:
846
847          ((if t + -) 1 2)
848
849     now work. Related to this, function names (i.e. symbols and lambda
850     expressions) are no longer dereferenced by any operations taking
851     functions as arguments. Only built-in subroutines and closures are
852     considered functions.
853
854     This means that where before you'd write something like:
855
856          (mapcar '+ '(1 2 3))
857
858     this is now illegal; the `+' function must be evaluated:
859
860          (mapcar + '(1 2 3))
861
862   * `lambda' is now a special form evaluating to a closure (as in
863     scheme); this means that the following are exactly equivalent:
864
865          (lambda (x) x) == (function (lambda (x) x)) == #'(lambda (x) x)
866
867     An alternative method of enclosing a lambda expression is to use
868     the `make-closure' function.
869
870   * `gaol' module providing semi-safe environment for untrusted code
871     to evaluate in
872
873   * Support for i18n through `gettext' module; also support for `%1$s'
874     type format specifiers
875
876   * New functions `string-equal' and `string-lessp'
877
878
8790.7.1
880=====
881
882   * Added `--with-rep-prefix' option to autoconf AM_PATH_REP macro
883
884   * Fixed bug when inserting a new timer before an existing timer
885
886   * Fix the malloc tracking code
887
888   * Fix dlmalloc for FreeBSD
889
890   * Use install when installing, not cp
891
892   * Some fixes for compiling with SUN's C compiler on Solaris
893
894
8950.7
896===
897
898   * Added file handler for read-only access to the contents of tar
899     archives, access files like `foo.tar.gz#tar/bar'
900
901   * `process-id' function now returns pid of lisp interpreter when
902     called with zero arguments
903
904   * Added (untested) support for loading dynamic objects via
905     `shl_load' (HP-UX)
906
907   * Added (untested) support for systems that prefix symbol names in
908     dynamic objects with underscores
909
910   * Fix bug when compiling `last' function
911
912   * Fix bug of not closing files in the `load' function
913
914
9150.6.2
916=====
917
918   * Added `autoload-verbose' variable; set it to `nil' to turn off the
919     messages when autoloading
920
921   * Fix problems when `--prefix' option has a trailing slash
922
923   * Updated libtool files to version 1.3.3
924
925   * Initial (incomplete) support for building under Tru64, from Aron
926     Griffis
927
928
9290.6.1
930=====
931
932   No new features; minor portability tweaks and build changes. Fix bug
933of trying to load directories as Lisp scripts
934
9350.6
936===
937
938   * Add `unsetenv' function
939
940   * `system' now uses `process-environment'
941
942   * Workaround compiler bug with GCC 2.95 on sparc
943
944   * Fix build problem where libsdbm.la can't be located
945
946
9470.5
948===
949
950   * New function `set-input-handler', registers an asynchronous input
951     handler for a local file
952
953   * Don't abort on receipt of unexpected `SIGCHLD' signals
954
955   * Upgrade libtool to version 1.2f
956
957   * The `rep' binary by default always loads a script named `rep', not
958     named by it's `argv[0]' (this breaks under the newer libtool)
959
960
9610.4
962===
963
964   * Sending a rep process a `SIGUSR2' prints all debug buffers
965
966   * Added `--with-value-type', and `--with-malloc-alignment' configure
967     options. Also added code to automatically detect the first of
968     these options.
969
970   * Fixed some 64-bit problems
971
972   * Removed the difference between static and dynamic strings
973
974
9750.3
976===
977
978   * New compiler command line option `--write-docs'
979
980
9810.2
982===
983
984   * The variables `error-mode' and `interrupt-mode' control where
985     errors and user-interrupts (i.e. `SIGINT' signals) are handled.
986     The three possible values are: `top-level', `exit' and `nil'
987     (denotes the current event loop).
988
989   * Fixed bug where all dynamic types were erroneously `symbolp'.
990
991   * `SIGINT', `SIGHUP' and `SIGTERM' signals should now be caught more
992     successfully.
993
994   * Added a new directory to `dl-load-path': `LIBEXECDIR/rep/ARCH' to
995     contain third-party shared libraries.
996
997
9980.1
999===
1000
1001   First public release.
1002
Note: See TracBrowser for help on using the repository browser.