source: trunk/third/librep/NEWS @ 18391

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