1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567
|
$Id$
Changes between 3.0 and 4.0:
----------------------------
* New in 3.99.8 prerelease:
+ Maintenance release with minor bugfixes.
* New in 3.99.7 prerelease:
+ Last known garbage collector bug was fixed.
* New in 3.99.6 prerelease:
+ Many portability checks added to the configure script.
+ Fix for an installation bug that prevented extension loading.
+ BeOS dynamic plugin support.
* New in 3.99.5 prerelease:
+ R4RS compliance fixes (r4rstest.scm successful passes):
- Allow for empty (begin) and (cond) statements.
- Fixed scope of named let variables.
- (eqv? 1 1.0) now properly returns #f.
+ Mac OS X compilation fixes.
+ Fixed the detection of environ on Solaris.
* New in 3.99.4 prerelease:
+ Proper plugin support under Win32 and HP-UX.
+ Compilation fixes.
+ Minor bugs fixed.
* New in 3.99.3 prerelease:
+ Minor bugs fixed.
* New in 3.99.2 prerelease:
+ Ported to HP-UX.
+ Ported to Windows (both Cygwin and Mingw32) except the plugin system.
+ More bugs fixed.
* New in 3.99.1 prerelease:
+ Ported to Mac OS X.
+ Added proper checks for the libraries (libgdbm, X11, Motif, ...).
+ Added a ChangeLog file.
+ libelf is no longer an absolute requirement, though it is still
strongly recommended.
* New in 3.99.0 prerelease:
+ libelk, a shared library containing all the Elk scheme interpreter
features.
+ Properly builds with GCC 3.
+ 64 bits clean.
+ Uses autoconf, automake and libtool for greater portability and a
simpler build and installation process.
+ Support for dynamically loadable plugins. Previous versions used the
system's linker to build shared objects at runtime.
+ Massive bugfixing.
+ Dump support was removed because it was too platform-specific and
could not be thoroughly tested. I may enable it again in the future.
Changes between 2.2 and 3.0:
----------------------------
General:
* A new C/C++ Programmer's Manual for Elk is now available
(60+ pages with many examples). See doc/README (item `cprog')
and doc/cprog.
* The documentation has been prepared for translation to HTML
using the (Elk-based) `unroff' package.
* Elk now uses a new Scheme object representation (a `struct' rather
than an `unsigned long') to make it work on 64-bit architectures
and to allow for larger heaps, a wider range of fixnums, and more
first-class Scheme types.
* As a consequence, the `pointer_constant_high_bits' are gone, as
is util/pchb.c.
* Elk has been ported to and tested on these new platforms (config
files are included in the distribution):
DEC/Alpha, OSF/1
HP 9000, HP-UX 10.0
i386/486, BSDI BSD/OS
i386/486, Linux
IBM PowerPC, AIX 4.1
* A number of config files for obsolete platforms have been removed
from the distribution; config files for platforms where Elk 3.0
could not be tested are in config/untested. util/sgihack.c is gone.
* Extension initialization and finalization functions now begin
with `elk_init_' rather than just `init_' to avoid name conflicts.
* The directory `contrib' has been removed from the distribution,
as most of the contributions either were no longer maintained
or have been made an official part of the distribution.
contrib/eval-string is now available as lib/misc/elk-eval.c.
* Site/platform-specific information such as the various X11 `load
libraries', machine name, operating system name, as well as the
Elk version number are now available as Scheme variables in
scm/siteinfo.scm. The file is created automatically and can be
loaded via `(require 'siteinfo)'.
* Most of the improvements in scm/debug-new.scm have been merged
into the baseline debug.scm and the former has been removed.
The inspector now starts at the correct frame when called after
an error.
* examples/CC/class.c is a simple Elk extension demonstrating
encapsulation of a C++ class in a Scheme type.
* The file README has been renamed ROADMAP; RELEASE is now README.
Interpreter kernel:
* Many bugs have been fixed, and the code has been made `64-bit clean'.
* New functions for application writers to read/set the `error tag'
displayed in error messages and the application name (Get_Error_Tag,
Set_Error_Tag, Set_App_Name).
* When dynamically loading objects, the C++ static constructors are
now called _before_ all extension initializers. Ditto for C++
destructors and extension finalizers.
* New function for application/extension writers to load a file
whose name is given as a C string (Load_File).
* Load_Source_Port has been made `official' and may be used from
outside the interpreter.
* New functions for application/extension writers to convert
Scheme numbers to C unsigned int/long: Get_Unsigned,
Get_Unsigned_Long, Get_Exact_Unsigned, Get_Exact_Unsigned_Long.
New function Get_Exact_Long.
* The `round' primitive now rounds to even for numbers halfway
between two integers.
* The reader doesn't impose a limit on the length of strings and
symbols any longer.
* The dynamic loading implementations now use the environment
variable TMPDIR if present.
* `dump' now works under SGI Irix 5.x.
* New constants ELK_MINOR and ELK_MAJOR for application/extension
writers.
* Symbols containing special characters now print correctly when
output with `write'.
* Various optimizations in the interpreter's inner loop to compensate
for the performance loss caused by the struct-based object
representation on some platforms.
Extensions:
* The X11 extensions now work with X11 Release 6, Sun OpenWindows 3.x,
and Sun Motif.
* Extension-specific include files (unix.h, xlib.h, xt.h) are now
installed in a subdirectory $install_dir/include/extensions
for use by applications.
* The object files for Athena or Motif widgets are now loaded
by means of `require'.
* New POSIX-style regular expression extension (see doc/regexp and
examples/regexp).
* The file hunk.c has been removed from lib/misc, as it no longer
serves any purpose.
* Several bugs have been fixed in the UNIX and X11 extensions.
Changes between 2.1 and 2.2:
----------------------------
General:
* Elk ported to new platforms: SGI Irix 5.1, HP-UX 9.0
* All Scheme files now end with the suffix `.scm'
* Introduced new symbols in the config files to be used by the
UNIX extension
* Reorganized the include files. Split external declarations
into `private' (intern.h) and `public' (extern.h) declarations
to be used by extensions
* It's no longer necessary to specify multiple destination
directories in the site file (only install_dir; subdirectories
are created automatically)
* `init_objects' is gone from the site file, see INSTALL for a
new, simpler way to link extensions or an application with Elk
statically
* New directory $install_dir/lib is created with files module.o,
standalone.o and shell scripts linkscheme, makedl, and ldflags
(see INSTALL)
* Elk can now be used by applications that must have their own
main() function. See INSTALL for details.
Interpreter kernel:
* New primitives to allow blocking of signals from within Scheme
code: disable-interrupts, enable-interrupts
* Changed Disable_Interrupts and Enable_Interrupts macros to
allow nesting and to handle signals used by extensions
(specifically by the new UNIX extension)
* Extended representation of continuations to carry current
interrupt nesting level and restore it when being called
* (Re-)enable interrupts in toplevel on error
* Added default signal handlers for SIGPIPE and SIGHUP to clean
up temporary files
* New primitive: `features'
* `require' now appends .scm to feature name to obtain file name
(if no file name has been specified and if the feature name
doesn't have a suffix yet)
* Features elk:dump and elk:load-object are provided by the
interpreter if dump and dynamic loading are supported
* Implemented Register_Onfork() and Call_Onfork() to provide
`fork handlers' (used, for instance, by the UNIX extension)
* Added fork handlers to the dynamic loading implementations to
create links for the temporary files
* Added a close function to I/O ports to allow for pipe-based ports
* New primitive: char-ready?
* Added a check to the code that restarts a dumped interpreter
to detect that the start address of the stack has been moved
with respect to the original invocation (this happens between
Sun-4c and Sun-4m architectures, for instance)
* Modified math.c to implement the distinction between exact and
inexact numbers as required by the language definition
* New primitives: exact->inexact, inexact->exact
* The number prefixes #e and #i are now supported
* Floating point numbers are no longer automatically reduced to
integers; new conversion function Make_Flonum(double) in
addition to Make_Reduced_Flonum(double)
* Added new conversion functions to cleanly distinguish between
C ints and longs: Get_Long(Object), Make_Long(long),
Make_Unsigned_Long(unsigned long), and functions to convert
bignums from/to C longs
* New conversion functions for exact integers:
Get_Exact_Integer(Object) and Get_Exact_Long(Object)
* Removed the unique `void' type; #v is now converted into the empty
symbol by the reader; void? remains for compatibility
* Implemented reader table for #-syntax
* New function Define_Reader() to allow extensions to register
their own read syntaxes (used by the new bitstring extension)
* Exported parts of the reader to simplify writing new reader
functions in extensions
* New functions/macros to convert Scheme strings and/or symbols
into C strings (to be used by extension writers): Get_String,
Get_Strsym, Get_String_Stack, Get_Strsym_Stack; see src/cstring.c
* Now obsolete: Declare_C_Strings, Dispose_C_Strings, Make_C_String
* Bug fixes:
o fixed a few bugs in the implementation of continuations and
tail call optimization and in the generational, incremental
garbage collector
o there was a bug in the interaction between the garbage
collector and `dump'
o identified additional critical sections to be protected
from delivery of signals
o initscheme.scm wasn't resolved against the load-path
o quasiquotation now also works for vectors (kudos to
Tor Lillqvist for suggesting a simple fix)
o a bug in src/load-ld.c could cause the first static variable
in a dynamically loaded .o file to not be zeroed
Extensions:
* New UNIX extension; see doc/unix for the reference manual and
examples/unix for a few demonstration programs
* New record extension; see doc/record for the reference manual.
The `struct' extension is now obsolete
* New arbitrary-length bitstring extension; see doc/bitstring
for the manual
Changes between 2.0 and 2.1:
----------------------------
General:
* New configuration files for the 386/486-PC running 386BSD and
DOS/DJGPP, for Suns running Solaris 2.1 (SunOS 5.1, and for
the Convex C230 running ConvexOS.
* Reorganized the config files and the site file to allow for
configuration of the generational, incremental garbage collector
* Introduced several new symbols in the config files to simplify
installation on several systems
* Added new targets to all Makefiles to allow `cross-localization'
of the source tree (see comments in DOS section in MACHINES)
Interpreter kernel:
* Added a generational, incremental garbage collector
* New primitives: garbage-collect-status, collect-incremental
* Reorganized the source files to accommodate the new garbage
collector and to separate garbage collector specific code
from code common to both garbage collectors
* Empty list no longer counts as false; added primitive
`empty-list-is-false-for-backward-compatibility'
* Changed delimiter character in load-path argument of -p option
from comma to colon
* Initialize load-path from ELK_LOADPATH environment variable
(if present)
* Added argument to -v option to control which messages to print
(linker command, init/finit functions)
* It's no longer considered an error if an object file contains
no initializers
* Completely rewritten implementations of `dump' for ELF (SysVR4,
Solaris 2.x), ECOFF (Ultrix, Irix), and HP9000 a.out formats;
the HP version now correctly handles shared libraries
* Added support for dynamic loading under SysVR4 and Solaris 2.x
(see comments in MACHINES)
* Added code to read symbol table of object files on the Convex
* Bug fixes:
o dynamic-wind was completely broken; fixed it
o fixed a bug in the code that checks for the stack growing
direction (caused dumped images to crash on startup)
o fixed a bug in the equal? predicate (could enter an
infinite loop when applied to environments)
* Fixed a number of portability problems, among them:
o added O_BINARY flag to open() calls and "b" mode to fopen()
calls where necessary
o added support for the many different ways to purge a file
pointer and tty file descriptor (src/read.c, src/print.c)
* Integrated the functionality of the `libutil.a' library from
older releases into the interpreter kernel (conversion of
symbols and lists of symbols to bit masks and vice versa;
routines to manage a pool of weak pointers to objects, used
mainly by the Elk X extensions
Extensions:
* Removed libutil.a (lib/util/*); moved the code into the
interpreter kernel (src/terminate.c; src/symbol.c); removed
libutil.a from the default load-libraries
* Renamed lib/misc/c++.[co] to lib/misc/newhandler.[co] (c++.c isn't
a valid filename under DOS)
* Added finit function to lib/misc/monitor.c to switch off
monitoring and write mon.out on exit
Elk/X:
* The X extensions are no longer pre-linked against the required
X libraries (by means of ld -r); resolving against system libs
now always takes place at load time
* make-gcontext and copy-gcontext now can be called with a drawable
(i.e. pixmap or window)
* New primitives: alloc-color alloc-named-color
* Removed window-unique-id primitive
* Fixed a few bugs in the Xt extension (editres now works with
Scheme programs); removed an artificial limitation
* Defined a GC visit function for widgets that visits each widget's
parents and the children of composite widgets
* Added support for Motif gadgets
Changes between 1.5 and 2.0:
----------------------------
General:
* The build and install process has been improved significantly (see
file INSTALL)
* Added a new directory "config" that holds the system-specific
configuration files and the site-file
* Added a build shell script and a unified Makefile to all
directories; "build" creates the ``real'' Makefiles containing
system- and site-specific details during the make process
* Added install, lint, clean, and distclean targets to all
Makefiles
* Placed files that are needed during runtime (dynamically loadable
object files, Scheme files, the interpreter itself) into separate
directories; added "make install" to put files there
* Simplified porting Elk to new systems (assembly language support
and a stack-extending version of "alloca" are no longer required)
* Tested on several new systems (IBM RS/6000, HP9000/700, SGI,
Sony; see the file MACHINES)
* Placed new files CONTRIBUTORS, MIGRATE, and TODO into the toplevel
directory of the distribution
* Added a directory "util" that contains tools to simplify porting
Elk to new environments and other utilities that are useful on
some systems
* Added a directory "scripts" that holds the shell scripts used
to link instances of the interpreter and extensions.
* Removed "stk" directory with test programs (no longer needed)
* Added ANSI C prototypes and C++ "extern C" to all include files
Interpreter kernel:
* Placed include files into a separate directory (include)
* Reorganized the source files (separate source files for different
a.out formats and different dynamic loading mechanisms)
* Changed the way new Scheme objects are allocated to support the
generational garbage collector (not yet present in Elk)
* Rewrote the code implementing continuations to support full
call/cc on all machines
* Fixed tail recursion optimization
* Added support for POSIX signals (as alternative to BSD reliable
signals)
* Removed several artificial limitations (such as max. number of
before-GC and after-GC functions and statically GC-linked objects)
* Removed code that depended on max. number of open files per process
* Added bi-directional ports (input-output-ports); new primitive:
open-input-output-port
* New primitive: port-line-number
* Reader now prints line number on syntax error
* Max. length of a pathname is now determined correctly (using the
POSIX incantations if applicable)
* Added code to support dynamic loading under HP-UX (src/load-shl.c)
* Added code to call extension finalization functions and C++
destructors on termination
* Fixed and improved the code to call extension initialization
functions and C++ constructors on startup or when loading
extensions
* Improved the mechanism to suppress initialization of statically
linked extensions on startup ("dont_init_if_name" in config/site)
* Can use ANSI "atexit" as alternative to redefining "exit"
* Added option -p to specify load path
* Scheme file "initscheme" is now loaded before the toplevel is
loaded
* Changed "rand" to use rand() if random() isn't there
* re-entrant-continuations? primitive is no longer needed (returns
always #t now)
* Added a general mechanism to register termination functions for
individual objects (e.g. to close files on GC); see src/terminate.c
* linkscheme shell script improved; added code to support the
stupid AIX linker
* Fixed numerous things that caused lint or "gcc -ansi" to complain
* Changed the dynamic loading, "dump", and a.out symbol table reading
code in numerous places to make it work on new systems and to make
it more readable and maintainable
Extensions:
* Combined lib/util/symbol.o and lib/util/objects.o into new library
libutil.a; put this library into the default "load-libraries"
* Moved lib/util/string.c and lib/util/string.h into the interpreter
* Moved files from lib directory into new subdirectory "misc"
* Added POSIX sysconf stuff to unix.c to determine max. number of
open files per process
Elk/X:
* Made the code mostly "lint clean" and "gcc -ansi clean"
* Fixed bogus variable definitions in xlib.h and xt.h
* Xlib: added support for client-message event
* Xt: added code to avoid a bug in Motif 1.1.4
* Xt: added optional "mask" argument to context-add-input
* Removed site-dependent information from scm/xwidgets (file is
now created from scm/xwidgets.src during the build process)
* Renamed widget .d files that were longer than 14 characters;
added ALIASES file for each widget set containing mappings from
real widget names to short names
Documentation:
* Added sub-directory "paper" containing a draft version of a
paper about Elk
User-contributed extensions:
* A foreign function interface, an Elk Shell, and a vector extension
have been contributed by J. P. Lewis (contrib/zelk).
Changes between 1.4 and 1.5:
----------------------------
General:
* Added a "contrib" directory for user-contributed extensions
that I have not fully tested and/or integrated into Elk
* Renamed ORIGIN to COPYRIGHT
Interpreter kernel:
* Added support for the Amiga, A/UX and System V Release 4
(ELF a.out format)
* Added special load-library for MIPS (-lc_G0)
* Extension-interface: replaced Val() by Var_Set()/Var_Get()
* Modified load, autoload, and require so that multiple .o-files
can be loaded simultaneously
* Added -1+ as a synonym for 1-
* Bug fixes:
o fixed a GC-related bug
o fixed a bug that occurred when allocating a very large heap
o fixed a bug in case-insensitive string comparison
o fixed a bug in macro "when"
o changed and clarified semantics of print-depth/print-length
* IEEE 1178/R^4RS compatibility:
o replaced close-port by close-input-port and close-output-port
o added primitives caaaar .. cddddr
o added peek-char primitive
o added -i option for case-insensitive operation
* Removed -bc option
* Removed CBREAK-hack in read-char
Elk/X:
* Fixed several GC-related bugs (objects belonging to Xlib/Xt are
no longer terminated by garbage collector when unreferenced)
* Fixed a bug in the interface to the Grip widget
* Modified code to load widgets to make use of new capability to
load multiple .o-files
Documentation:
* Interpreter kernel: documented new functions, clarified
some sections
* Xlib/Xt: documented X-related behavior of garbage collector,
pointed out GC-related pitfalls
Changes between 1.3 and 1.4:
----------------------------
Interpreter kernel:
* Support for the NeXT machines added
* New primitive list? provided
* Two bugs in the tail recursion code fixed
* -v option to trace /bin/ld-calls
* man-page written
Elk/X:
* Tested under X11R5
* X11R3 and earlier versions are no longer supported
* The HP-widget code has been removed from the distribution
* New Xlib-primitives: install-colormap uninstall-colormap
list-installed-colormaps xlib-release-5-or-later?
* Xt interface now supports actions and accelerator tables
* Bug in set-context-fallback-resources! fixed
* New Xt-functions: widget-name widget-translate-coordinates
application-initialize context-add-action install-accelerators
install-all-accelerators xt-release-5-or-later?
* Support for new widget classes: menubutton panner porthole repeater
simplemenu sme smebsb smeline stripchart tree
* vpaned renamed to paned
* Example programs have been moved into a new examples directory
with sub-directories for Scheme, Xlib, Xaw, Motif
* New Xaw example programs that demonstrate the new widget classes,
accelerators, actions, etc.
Other extensions:
* Interface to the GNU gdbm-library
|