File: NEWS

package info (click to toggle)
elk 3.99.8-2
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 5,004 kB
  • sloc: ansic: 22,294; lisp: 6,208; makefile: 821; sh: 171; awk: 154; cpp: 92
file content (567 lines) | stat: -rw-r--r-- 22,785 bytes parent folder | download | duplicates (6)
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