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