news.txt 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138
  1. -*- Mode: Indented-text; -*-
  2. Recent changes to Scheme 48.
  3. 03/19/07 (version 1.6)
  4. Additions:
  5. An autogen.sh script for generating the various generated
  6. files from source was added.
  7. Infrastructure for creating, running and composing test
  8. suites was added. As a result, "make check" now runs more
  9. tests than before.
  10. It is now possible for adventurous users to run the linker
  11. in PLT Scheme.
  12. Changes:
  13. "make image" now assumes a Unicode-capable Scheme 48.
  14. Bug fixes:
  15. A bug where automatic port-flushing would churn trying to
  16. write to a blocking socket was fixed.
  17. An infinite loop upon (/ 0.0 0.0) was fixed. (reported by
  18. Taylor Campbell)
  19. A bug that made SYSTEM unusable was fixed. (reported by
  20. Marco Benelli)
  21. A bug with package mutation, which made running the
  22. PreScheme compiler on the VM break was fixed.
  23. Bugs related to the conversion between OS strings and
  24. strings on command-line handling were fixed. (reported by
  25. Andreas Rottmann)
  26. Compilation using gcc now uses the -munaligned-doubles flag
  27. where available, which is needed on SPARCs to make
  28. floating-point arithmetic work.
  29. Compilation older versions Cygwin that don't have langinfo.h
  30. should be fixed.
  31. Some problems with installing and running on Windows Vista
  32. were fixed. (thanks to Axel T. Schreiner)
  33. 01/12/07 (version 1.5)
  34. Additions:
  35. Comprehensive Unicode support was added. See the manual for
  36. details.
  37. An implementation of SRFI 19 was added. (thanks to Emilio
  38. Lopes)
  39. SYNTAX-RULES now supports vector patterns and templates.
  40. The ,bound? command now produces more output. (thanks to
  41. Taylor Campbell)
  42. Changes:
  43. Many of the POSIX procedures that accepted or returned
  44. strings previously now accept or return OS strings. See
  45. the manual for details.
  46. The ,build command now accepts a procedure that will be
  47. called with a list of OS strings rather than regular
  48. strings.
  49. The ASCII->CHAR and CHAR->ASCII procedures from the ASCII
  50. structure covers only ASCII (codes 0-127) now.
  51. (Previously, the range included 128-255 as well.)
  52. Bug fixes:
  53. A bug with package mutation was fixed. (reported by Taylor
  54. Campbell)
  55. 12/23/06 (version 1.4)
  56. Additions:
  57. REGEXP? is now exported from the REXEXPS structure.
  58. SRFIs 4, 39, 40, 43, 43, 60, 61, 63, 66, 67, 71, 78
  59. (mostly thanks to David Van Horn)
  60. In the command processor, switches were generalized to
  61. settings, specifically to customize various printing
  62. parameters. See the manual for details.
  63. A generic byte-code parser was added to the system; the
  64. disassembler uses it.
  65. A REINITIALIZERS package for register actions to be
  66. performed after resuming an image was added.
  67. A VARIABLE-ARGUMENTS-LISTS structure implementing a macro
  68. for dealing with optional default parameters was added.
  69. A GET-INTERRUPT-HANDLER procedure was added.
  70. An --enable-universal-binary option was added to configure
  71. to facilitate building universal binaries on Mac OS X.
  72. The C code now has access to enum sets.
  73. Changes:
  74. FILE-OPTIONS (in the POSIX libary) are now enum sets; this
  75. allows using enum-set operations on them.
  76. Various changes were made to the VM to enable native-code
  77. compilation.
  78. Socket addresses are always reusable.
  79. 1+ and 1- are no longer valid identifiers.
  80. The ordering of in/out thunks of DYNAMIC-WIND was changed to
  81. be consistent with itself and with the upcoming R6RS.
  82. The Windows build is now done using Visual Studio 2005.
  83. Bug fixes:
  84. Macro-defining macros now work in PreScheme.
  85. Opening a file for both read and write via the POSIX
  86. libraries wouldn't work correctly. (Reported by Andreas
  87. Rottmann.)
  88. PreScheme's COPY-MEMORY! now works for overlapping regions.
  89. Various C compilation problems were fixed.
  90. cmuscheme48.el should now work under GNU Emacs as well as
  91. XEmacs.
  92. Numerous problems with floating-point arithmetic were fixed.
  93. A race condition with queues was fixed. (thanks to David
  94. Frese)
  95. Part of script messages were printed on stdout rather than
  96. stderr; fixed. (thanks to Andreas Rottmann)
  97. A shadowing bug in the DEBUGGING package was fixed. (thanks
  98. to Taylor Campbell)
  99. A bug in the CML SYNC-GROUP primitive was fixed. (thanks to
  100. Heath Putnam)
  101. Various errors in SRFI 13 were fixed.
  102. A bug in the auto-integrator was fixed. (thanks to Taylor
  103. Campbell)
  104. A bug in LOAD-DYNAMIC-EXTERNALS was fixed. (thanks to
  105. Taylor Campbell)
  106. Several bugs in VECTOR-MERGE were fixed. (reported by
  107. Matthias Radestock)
  108. The CML WRAP was made correctly tail-recursive. (reported
  109. by Heath Putnam)
  110. A bug in the PreScheme C backend, that would sometimes
  111. incorrectly delete tail calls without a return value, was
  112. fixed. (reported by Eric Merritt)
  113. Several bugs in interface walking were fixed. (reported by
  114. Taylor Campbell)
  115. A bug in the PreScheme compiler affecting the removal of
  116. unused procedures was fixed. (thanks to Eric Knauel)
  117. Some precedence bugs in the C stubgs for the regexp code
  118. were fixed. (thanks to Matthew Dempsky)
  119. A bug in the REGEXPS package for regexps without submatches
  120. was fixed.
  121. (set-current-proposal! (current-proposal)) no longer raises
  122. an exception. (thanks to Taylor Campbell)
  123. A bug in package caching was fixed. (thanks to Taylor
  124. Campbell)
  125. A bug in the generation of environment maps was fixed.
  126. (thanks to Taylor Campbell)
  127. The Windows installer package should now work even on
  128. systems that have delayed variable expansion on by default.
  129. (thanks to Emilio Lopes)
  130. Exception handlers that return from RAISE are now handled
  131. correctly. (reported by Norbert Freudemann)
  132. 05/01/05 (version 1.3)
  133. Additions:
  134. A collection of libraries implementing the Concurrent ML
  135. model for concurrent programming has been added; it is
  136. compatible to the CML libraries in Sunterlib. See the
  137. documentation for details.
  138. Support for SRFIs 34-36 ("Exception handling for programs",
  139. "Conditions", "I/O conditions") has been added. This is in
  140. the CONDITIONS, EXCEPTIONS, and I/O-CONDITIONS structures,
  141. for which the SRFI-34, SRFI-35, and SRFI-36 structures are
  142. essentially aliases. A bridging infrastructure between the
  143. old condition system and the new one translates condition
  144. objects back and forth, hopefully transparently for the
  145. user.
  146. A new infrastructure for dynamically loading external
  147. libraries from shared objects has been added; check the
  148. manual for details. The old infrastructure is still
  149. presented, but is unsupported on Windows and will be
  150. removed in a future release.
  151. The S48_GC_UNPROTECT_GLOBAL macro has been added, which
  152. allows to remove a root added by S48_GC_PROTECT_GLOBAL.
  153. The Scheme 48 header files should now be compileable by a
  154. C++ compiler.
  155. An experimental Windows port has been added.
  156. Changes:
  157. The HTML manual is now generated with tex2page.
  158. A number of changes to the VM to support the (future)
  159. native-code compiler have been made.
  160. The PreScheme type rule for IF is now more strict, thus
  161. disallowing code that would lead to invalid C output.
  162. (This fixes a bug reported by Markus Ziegler.)
  163. Bug fixes:
  164. The TRAVERSE structure for displaying heap statistics has
  165. been re-enabled.
  166. A number of misues of CALL-ERROR have been corrected
  167. (reported by Taylor Campbell).
  168. The VALUE-PIPES package works again
  169. (fix by Taylor Campbell).
  170. In PreScheme it is now possible to shift integers by
  171. non-constant shift widths.
  172. Logical right shifts in PreScheme work now
  173. (reported by Taylor Campbell).
  174. A bug in TERMINATE-THREAD! was fixed
  175. (reported by Taylor Campbell).
  176. A bug in the implementation of ,exit-when-done was fixed.
  177. A bug in the regexp-matching code that prevented matching
  178. the empty string correctly was fixed.
  179. A bug in the implementation of STRING-CONTAINS from SRFI-13
  180. was fixed.
  181. A bug in the implementation of :WHILE in SRFI-42 was fixed
  182. (submitted by Sebastian Egner).
  183. Bugs in the implementations of ANGLE and MAGNITUDE were
  184. fixed.
  185. An obscure bug in the implementation of APPLY (which was
  186. triggered by certain instances of (apply apply ...) )
  187. was fixed.
  188. For a degenerate case of ITERATE, the code was made to
  189. conform the documentation
  190. (reported by Taylor Campbell).
  191. Various miscellaneous fixes.
  192. 12/05/04 (version 1.2)
  193. Additions:
  194. The LU-DECOMPOSITIONS structure was added for good.
  195. The CONDVAR structure now exports CONDVAR?.
  196. SRFI 22 ("Running Scheme Scripts on Unix") is fully
  197. supported.
  198. An implementation of SRFI 45 was added.
  199. Scheme 48 now builds from a directory other than the source
  200. directory. This enables builds for multiple platforms
  201. from a single source directory.
  202. Changes:
  203. Scheme 48 uses floating-point arithmetic by default
  204. now---as if FLOATNUMS were loaded in a previous release. To
  205. that end, Scheme 48 now uses Bob Burger's lightning-fast
  206. free-format floating-point printer.
  207. "make install" now creates the installation directories.
  208. Bug fixes:
  209. The PreScheme compiler works again for the VM---in
  210. 1.1, there was a bug in the type inferencer related to
  211. exactness.
  212. A number of bugs in the REGEXPS structure were fixed
  213. (many noted by James B Crigler).
  214. The closed compilator for ERROR was buggy
  215. (reported by Taylor Campbell).
  216. A number of documentation bugs were fixed.
  217. The assembler works again, at least rudimentarily.
  218. The SPATIAL structure loads and works again.
  219. Most of the code in scheme/misc (ANNOTATIONS, DOODL, SICP,
  220. INTEGER-LENGTHS) works again.
  221. SPAWN now returns the created thread, and the THREADS
  222. structure exports CURRENT-THREAD. (As the 1.1 documentation
  223. already claimed.)
  224. Floating-point numbers are now printed correctly. (See
  225. above.)
  226. "make install" now installs scheme48write-barrier.h.
  227. Two subtle GC bugs related to threads were fixed
  228. (reported by Jorgen Schaefer).
  229. Some arithmetic bugs were fixed (reported by Aubrey Jaffer).
  230. A number of bugs related to the handling of I/O error were
  231. fixed.
  232. The debugger now prints more information about the context
  233. of a VM exception.
  234. A GC bug related to POSIX signals was fixed.
  235. The POSIX-PROCESSES structure now exports SIGNAL? and SIGNAL=?.
  236. 05/07/04 (version 1.1)
  237. Additions
  238. Added Enum-sets (which are in big/enum-set.scm along with their struct).
  239. Added SRFIs 25, 26, 27, 28, 31, 37, 42.
  240. Added documentation for the thread system.
  241. Added documentation for numerous other libraries.
  242. Added structure definition for LU-DECOMPOSITIONS.
  243. Added Hilbert vectors to the regular build.
  244. Changes:
  245. DUP, DUP-SWITCHING-MODE, and DUP2 now takes ports as arguments, as
  246. the manual says, instead of channels.
  247. Added a 'start' index argument to the Posix regular-expression matcher
  248. (this is an incompatible change).
  249. BLOCK and MAKE-READY are no longer exported by the thread package.
  250. Use the MAYBE-COMMIT-AND-... versions instead.
  251. Placeholders now use the commit mechanism instead of disabling
  252. interrupts.
  253. lock.scm has been moved from rts/ to big/ because the S48 system no
  254. longer uses them.
  255. The old SORT library has been replaced by Olin Shiver's
  256. collection of sort libraries. (The SORT structure retains
  257. its old interface.)
  258. It's possible to quote filenames for , commands.
  259. Notable bug fixes:
  260. Locks and placeholders work correctly.
  261. INEXACT->EXACT now works on exact numbers and vice versa.
  262. LETREC is now compiled correctly.
  263. CALL-WITH-VALUES now works correctly for the
  264. one-return-value case.
  265. SRFI 0 now exports MAP, FOR-EACH, MEMBER, and ASSOC.
  266. Blocking threads are held onto via cells to allow terminated threads
  267. to be summarily removed. MAYBE-COMMIT-AND-BLOCK is passed this cell
  268. as an argument. This fixes a race condition in the blocking
  269. mechanism. Also as a result of this, locks etc. use regular queues
  270. instead of thread-queues.
  271. Package mutation code now knows that structure clients may be either
  272. packages or structures (found and fixed by Martin Gasbichler).
  273. c/write-barrier.h has been renamed c/scheme48write-barrier.h (a
  274. change) and added to the list of include files that are installed
  275. (it is #include'd by scheme48.h which was already being
  276. installed).
  277. INTEGER? now works correctly on floats.
  278. The sources can now be compiled by a C++ compiler.
  279. Numerous minor type issues in the C code were fixed.
  280. Some GC problems with the POSIX code were fixed.
  281. The SRFI 5 implementation now conforms to the specification.
  282. Channels closed by CALL-WITH-{INPUT,OUTPUT}-FILE through GC
  283. no longer cause a mesage to be printed.
  284. 10/7/01 (version 1.0)
  285. Bug fixes:
  286. Fixed a problem with the debug data for LETREC environments.
  287. Null output ports now marked as output ports.
  288. Command reader now checks that , is followed by a symbol.
  289. Got rid of 'return <value>;' in void functions in vm/*.c files.
  290. Changes:
  291. The byte-code architecture has been changed. It no longer has
  292. dedicated registers for the template and environment. All values
  293. are now accessed via the stack pointer.
  294. Image writer now uses hash tables instead of breaking hearts. This
  295. allows for more careful construction of the image files and means
  296. that having static areas no longer prevents writing images.
  297. Continuations no longer have headers when on the stack, making
  298. non-tail calls a little bit faster.
  299. Removed the unused PORT-LOCKED? from ports.
  300. Made for less duplication of code between the VM and RTS: put the
  301. continuation offsets into vm/arch.scm, moved some code around so
  302. that vm/data.scm could be used by the RTS, the interface definitions
  303. for vm/arch.scm and vm/data.scm are now shared.
  304. The VM's stack pointer (*stack*) now points to the top value on the
  305. stack instead of the unused location just above.
  306. The VM files are now in organized into subdirectories.
  307. The interrupt and stack overflow checks have been merged into a
  308. single test. Calls are a little bit faster.
  309. 7/15/01 (version 0.57)
  310. Additions:
  311. Added a SYSTEM procedure that calls the C system() function
  312. (in structure c-system-function).
  313. Added SRFIs 11, 13, 14, 16, 17, and 23.
  314. Bug fixes:
  315. Removed duplicate definitions of S48_{ENTER|EXTRACT}_BOOLEAN
  316. from c/scheme48.h.
  317. Fixed a problem in lookup_record() in c/posix/proc.c that was
  318. causing crashes.
  319. Added scheme/srfi to the list of directories that get installed.
  320. Zeroed sockaddr structs in c/unix/socket.c.
  321. Added configuration tests for socklen_t.
  322. Marked DEFINE-RECORD-TYPE as syntax in the SRFI-9 interface.
  323. Fixed (another) bug in s48-shorten-bignum.
  324. Fixed off-by-one error that caused one resumer record to be
  325. ignored when writing out images.
  326. Fixed problem with macros expanding into uses of finite types.
  327. Added a handler for the TIME opcode to take care of any arithmetic
  328. overflow.
  329. 5/30/01 (version 0.56)
  330. Bug fixes:
  331. Fixed problems with s48-shorten-bignum that were causing crashes.
  332. Patched PreScheme compiler so that the VM would compile (how did
  333. this not get noticed earlier?).
  334. Added scheme/posix to the list of directories that get installed.
  335. Replaced sa.sa_action = ... with sa.sa_handler = ... in
  336. c/posix/proc.c.
  337. Added one-argument version of ATAN.
  338. Fixed macro-defining-macro bug that showed up in SLIB's FLUID-LET.
  339. SLEEP checks that its argument is a positive real number and
  340. correctly handles rationals and inexacts.
  341. Fixed a few typos in the manual.
  342. 5/21/01 (version 0.55)
  343. Additions:
  344. The inspector is more efficient in dealing with large vectors, long
  345. lists and circular lists.
  346. Bug fixes:
  347. Added an error handler to command-levels.scm to avoid bad interaction
  348. between ,break-on-warnings and the handler-raised undefined-variables
  349. warning.
  350. Fixed endless recursion occuring when loading floatnums after
  351. creating inexact rationals.
  352. Made ,reset throw away the old value stack
  353. build/filenames.scm now loads the interface files so we no longer get
  354. the plethora of "undefined variable" warnings.
  355. The flat-environment optimizer is now idempotent.
  356. Fixed a problem with single-argument receivers as in
  357. (call-with-values ... (lambda (x) ...))
  358. Minor edits to the documentation.
  359. Fixed a problem that occured when (optimize auto-integrate)
  360. was used in the presence of definition-producing macros.
  361. Changes to the socket code to work around an oddity in FreeBSD.
  362. Added the os-{...-}name functions to the Posix interface.
  363. The socket code uses socklen_t instead of ints in the appropriate
  364. places (the configure script defines socklen_t if necessary).
  365. (thanks to Martin Gasbichler).
  366. Changes:
  367. Replaced all uses of FLUID-SET! with fluids bound to cells.
  368. Renamed WRITE-ONE-LINE (which did nothing of the sort) to
  369. LIMIT-OUTPUT; the old name is still there for compatibility.
  370. Added vertical tab (ascii->char 11) to ascii-whitespaces to make
  371. our definition of whitespace the same as POSIX's.
  372. The procedures in the records and records-internal structures are
  373. now in three structures: 'records' has the low-level, vector-like
  374. primitives, 'record-types' has everything relating to the type
  375. records, and 'records-internal' has the leftovers.
  376. Removed many of the uses of STRUCTURE-REF (because the manual
  377. doesn't mention it).
  378. 3/20/01 (version 0.54)
  379. Additions:
  380. SET and UNSET commands for modifying switch values. The following
  381. commands are now obsolete (but still work): batch, bench,
  382. break-on-warnings, form-preferred, and levels.
  383. Support for some SRFIs.
  384. Support for some Posix functionality.
  385. Functional interface to Posix regular expression matching.
  386. ITERATE and REDUCE macros for writing loops.
  387. Much of the documentation is now in a single manual (doc/manual.ps
  388. or doc/html/manual.html).
  389. MODIFY added to the module language for interface mangling.
  390. LETREC-CLOSURE opcode for LETREC's when using flat environments.
  391. OUTPUT-PORT-READY? in I/O is CHAR-READY? for output ports.
  392. Deletions:
  393. Removed misc/syscall.scm and misc/getenv.scm. Use the posix calls
  394. instead.
  395. Removed the .notify rule.
  396. Changes:
  397. Bignums are now handled in C code borrowed from MITScheme (thanks
  398. to Martin Gasbichler).
  399. Replaced ,levels <i> with ,reset <i> and added ,resume <i>.
  400. The command interpreter loads ,OPENed packages without asking.
  401. Do `,set ask-before-loading' to get the old behavior.
  402. The command interpreter no longer prints out the names of files
  403. and modules being loaded. Do `,unset load-silently' to get the
  404. old behavior.
  405. The command interpreter has changed in a number of other ways.
  406. See the manual.
  407. Changed misc/either.scm to use fluid variables and replaced (init)
  408. with (with-nondeterminism <thunk>). Moved the sources to
  409. big/either.scm and the structure definition to more-packages.scm.
  410. Moved the programming-environment packages out of more-packages.scm
  411. and into env-packages.scm. more-packages.scm was getting too large.
  412. Modified the opt/analyzer.scm code to get CADR to inline.
  413. The last-resort condition handler now uses DEBUG-MESSAGE to print,
  414. in the hope that it will be more robust this way. The message
  415. is a bit more wordy as well.
  416. CHAR-READY? no longer causes any characters to be read from OS
  417. ports.
  418. Bug fixes:
  419. The flat-environment optimizer can now handle large environments.
  420. Removed command-interpreter's saved focus values from the stack
  421. to keep them from being captured by call/cc.
  422. The code in misc/pipe.scm works again.
  423. Changed variable `errno' in c/unix/misc.c to something that does
  424. not conflict with glibc.
  425. Fixed (lambda () (define x 1) (define y 2)) bug.
  426. Added Mike Sperber's more generalized alt/ fixes.
  427. Fixed definition of S48_SET_CAR() and friends in c/scheme48.h.
  428. Added EINTR checks to more of the system calls.
  429. Made macro-defining SYNTAX-RULES macros work.
  430. 2/24/99 (version 0.53)
  431. Additions:
  432. DEFINE-FINITE-TYPE and DEFINE-ENUMERATED-TYPE (in structure
  433. FINITE-TYPES; documented in doc/utilities.ps and
  434. doc/html/utilities.html.
  435. Added CHAR-SOURCE->INPUT-PORT, CHAR-SOURCE->OUTPUT-PORT,
  436. MAKE-STRING-OUTPUT-PORT, STRING-OUTPUT-SOURCE-OUTPUT to
  437. the extended-ports structure.
  438. The structure BYTE-VECTORS is the same as CODE-VECTORS with `byte'
  439. replacing `code' in all the names. The underlying datatype is the
  440. same for both, and uses `byte' when printing.
  441. There is a new and much improved interface to C code, thanks to
  442. Mike Sperber. It is documented in in doc/external.ps and
  443. doc/html/external.html.
  444. Bug fixes:
  445. Session-data and user-context records are no longer in the fluid env.
  446. Lexical environments can now be nested up to 65k deep.
  447. ,expand no longer prints `definition in expression context' warnings.
  448. Added ARRAY? and SEARCH-TREE? to the array and search tree structures.
  449. Flat environments work again.
  450. Templates of the form `var ... ...' now work in syntax rules.
  451. Reinstated caching of SCHEMIFY results to greatly reduce the space
  452. used by debugging info.
  453. Added argument checking to STRING->NUMBER and NUMBER->STRING.
  454. Fixed space blow-up in LOAD.
  455. Unused ports are closed more reliably.
  456. Changes:
  457. The heap, gc, and image code is now in three separate modules.
  458. The symbol table is now held in a VM register.
  459. Inlined SHOWING-FOCUS-VALUES into the main command loop and moved
  460. the sentinel call to reduce the noise at the base of ,preview output.
  461. The tables returned by MAKE-TABLE now use EQV? for comparison (instead
  462. of EQ?). This makes these tables about 50% slower when numbers are
  463. used as keys, but significantly more accurate.
  464. Floating-point numbers are no longer double boxed.
  465. 7/22/98 (version 0.52)
  466. Bug fixes:
  467. Fixed problems with unbound variables in SET! and the inliner.
  468. Made macro expansion a bit less eager; this should reduce the amount
  469. of heap space needed for compilation.
  470. 6/29/98 (version 0.51)
  471. Incompatible changes:
  472. BIG-SCHEME no longer exports its version of DEFINE-RECORD-TYPE (but
  473. it is available from the structure DEFRECORD). I am slowly removing
  474. all uses of this version of DEFINE-RECORD-TYPE from the sources.
  475. The version of DEFINE-RECORD-TYPE exported by DEFINE-RECORD-TYPES
  476. checks that every constructor argument corresponds to a field.
  477. Uses of LAP must list their free variables (see env/assem.scm).
  478. Changes:
  479. The functions exported by BIG-SCHEME that were not available elsewhere
  480. are now exported by BIG-UTIL as well.
  481. MAKE-RANDOM now checks its argument (but is still a fairly poor
  482. source of pseudo-randomness).
  483. SIGPIPE no longer kills the S48 process (this was done earlier but
  484. not listed here).
  485. The macro/module/compiler code has been reorganized. Hopefully
  486. the only noticable difference is in the babble written when loading
  487. files and packages.
  488. Added CODE-QUOTE (in its own structure of the same name) for use
  489. in writing hygienic macro-generating macros. CODE-QUOTE is the
  490. same as QUOTE except that it does not strip off any of the macro
  491. system's name annotations.
  492. The FLOATNUMS package now exports FLOATNUM?.
  493. Bug fixes:
  494. Fixed phony stack-overflow bug.
  495. Fixed a bug in thread time-debit mechanism.
  496. Made floating point numbers always print as inexact.
  497. Got rid of bogus type-error warnings when using floatnums.
  498. Fixed declaration of call_startup_procedure in c/main.c.
  499. 2/11/98 (version 0.50)
  500. Fixed bug in closed-compiled version of READ-CHAR.
  501. Fixed negative-key bug in integer tables.
  502. 11/18/97 (version 0.49)
  503. Removed some non-portable Kali code that had been accidentally
  504. included in c/extension.c.
  505. 10/29/97 (version 0.48)
  506. The VM's calling convention now has the caller doing protocol checking,
  507. instead of the callee. The *NARGS* register no longer exists.
  508. Scheme's variable-arity procedures (APPLY, MAKE-VECTOR, +, -, etc.)
  509. are usually handled without raising an exception. Calls with an
  510. `atypical' number of arguments are now much faster.
  511. Opcodes were added for >, <=, and >=.
  512. Procedures can take up to about 8k arguments. The limit is determined
  513. by the value of AVAILABLE-STACK-SPACE in scheme/vm/arch.scm.
  514. Compiler detects wrong number of arguments in ((lambda ...) ...).
  515. Removed the dynamic point from the dynamic environment to make
  516. DYNAMIC-WIND behave reasonably with threads.
  517. KILL-THREAD! should work more reliably.
  518. The I/O primitives now pass OS error messages to the exception handlers.
  519. I/O errors when flushing buffers no longer crash the system.
  520. The Pre-Scheme compiler's hack for shadowing global variables with
  521. local copies is no longer used.
  522. Incompatible changes:
  523. The internal thread interface was simplified.
  524. There are some architecture changes; .image files will have to
  525. be rebuilt.
  526. ACCESS-SCHEME-48 and scheme/misc/slib-init.scm have been removed
  527. (thanks to Mike Sperber's updating of slib).
  528. 1/27/97 (version 0.47)
  529. Fixed ,exit and added ,exit-when-done.
  530. CASE now uses EQV? exclusively.
  531. 11/5/96 (version 0.46)
  532. Fixed a few minor thread problems.
  533. opt/analyze.scm now writes to current-noise-port.
  534. DELQ and DELETE now delete every instance, as the documentation claims.
  535. There should be no more spurious heap-overflow interrupts.
  536. Fixed bugs that caused the system to die if stdout blocked.
  537. Template offsets have been increased to two bytes.
  538. Disassembly of flat-lambda now works (fix from Michael Sperber).
  539. 8/23/96 (version 0.45)
  540. Fixed various problems with thread termination and nested schedulers.
  541. Changed thread-internal interface to make schedulers easier to write.
  542. BITWISE-{AND,IOR,XOR} now take an arbitrary number of arguments.
  543. Output ports have their buffers flushed when Scheme 48 terminates.
  544. In keeping with RnRS, CLOSE-{IN,OUT}PUT-PORT are now idempotent.
  545. MODULO now handles negative arguments properly.
  546. 6/20/96 (version 0.44)
  547. The VM's byte-code interpreter and storage management code are
  548. now compiled to separate C files.
  549. The socket code works again.
  550. 5/10/96 (version 0.42-0.43)
  551. Various fixes to the thread and I/O systems.
  552. The Unix interface code is more portable.
  553. EOF (control-D) now resumes running all non-broken threads on
  554. resumed command level. Thus EOF after a keyboard interrupt
  555. (control-C) resumes running the interrupted thread.
  556. 11/30/95 (version 0.41)
  557. The distribution has been reorganized to reduce the number of files
  558. in the top-level directory.
  559. The threads implementation has been replaced with one based on engines
  560. to allow for nested schedulers.
  561. Threads are now included in the initial image.
  562. The I/O system has been fixed and automatic periodic output buffer
  563. flushing has been reinstalled.
  564. Command levels have been integrated with the threads system to ensure
  565. that at most one REPL is active at any time.
  566. CONDVAR has been changed to PLACEHOLDER (condition variables being
  567. something quite different).
  568. ,profile no longer works, it will be fixed in a later version.
  569. MIN and MAX now do inexact contagion.
  570. 4/13/95 (version 0.40)
  571. Renamed error-output-port to current-error-port.
  572. Reinstated ".gdbinit"...
  573. segment->template now takes parent templates debug data as an
  574. argument.
  575. Automatic periodic output buffer flushing has been
  576. temporarily disabled. A future version of the I/O system
  577. will fix it.
  578. Fixed expansion of named LET.
  579. The bummed-define-record-types structure is now gone; use
  580. define-record-types instead.
  581. There is somewhat better syntax checking now.
  582. 8/12/94 (versions 0.38-0.39)
  583. ,profile <command> prints out profiling information
  584. An interrupt is raised after every GC; the default handler checks
  585. to see if some reasonable amount of storage was reclaimed.
  586. Some of the standard Scheme procedures, including LENGTH, FOR-EACH,
  587. VECTOR, and ASSQ, are now significantly faster.
  588. Making, accessing, and setting records is faster.
  589. tar file now includes the top-level directory
  590. The "scheme-level-2-internal" structure has been renamed to
  591. "usual-resumer".
  592. ` ( . ' is now illegal (as required by the R4RS grammar).
  593. Made DELAY and FORCE comply with R4RS.
  594. The EXPAND optimizer does a topological sort on definitions.
  595. (optimize flat-environments) causes the compiler to produce
  596. flat (instead of nested) lexical environments.
  597. The I/O system has been rewritten to do its own buffering. There
  598. are significant changes to unix.c to support this. See doc/io.txt.
  599. (ERROR-OUTPUT) is now available from the structure i/o.
  600. jar-defrecord has been replaced with a modified bummed-jar-defrecord
  601. Files load about 25% faster, for a number of reasons.
  602. Removed the copy of vm/arch.scm from the rts directory.
  603. Threads and sockets work together; SOCKET-ACCEPT no longer blocks.
  604. The compiler no longer prints out .'s as it compiles definitions.
  605. 7/5/94 (version 0.37)
  606. I/O opcodes now raise an interrupt instead of blocking (they still
  607. block if no corresponding interrupt handler has been installed).
  608. The threads code has been rewritten; threads that block on I/O
  609. do not busy wait and THREAD-READ-CHAR and THREAD-PEEK-CHAR have
  610. been removed.
  611. Attempting to obtain a lock twice or to release an unowned lock
  612. now signal errors.
  613. READ-CHAR-WITH-TIMEOUT returns #F if the timeout occurs.
  614. The socket structure is back in more-packages.scm.
  615. Renamed .gdbinit to gdbinit
  616. tar file now contains a top-level directory
  617. 3/22/94 (version 0.36)
  618. Removed doc/lsc.ps for copyright reasons.
  619. Fixed (* 47123 46039) multiply bug.
  620. Modified vm/README to make it easier to run the VM.
  621. 3/16/94 (version 0.35)
  622. Fixed (exact->inexact 0.1) -> 0..1. bug.
  623. Fixed VM bug that permitted the creation of stored objects with
  624. negative sizes.
  625. 3/8/94 (version 0.34)
  626. "make check" target tests out various features.
  627. Fixes for SGI IRIX 4.0.5 and MIPS RISC/OS 4.51, courtesy
  628. Bryan O'Sullivan.
  629. debug/run.scm and the "medium system" work again now.
  630. misc/static.scm should work on the 68000.
  631. Command processor no longer fluid-binds (interaction-environment)
  632. on recursive entry.
  633. 2/24/94 (version 0.33)
  634. Fixed bug in VM's interrupt system.
  635. Made non-local srcdir work in Makefile.
  636. Added (load-package 'bigbit) to vm/README.
  637. 2/23/94 (version 0.32)
  638. Some incompatible changes to the VM; .image files will have
  639. to be rebuilt.
  640. Improvements to configuration script and to unix.c to support
  641. a wider variety of Unixes. The system should now work
  642. under any Posix-compliant Unix (except maybe for
  643. char-ready?; see comments in unix.c).
  644. Upped the default heap size from 4 meg (2 per semispace) to 6
  645. meg (3 per semispace).
  646. New command line argument -s <size> for specifying size of
  647. stack buffer. Default is 2500 (words).
  648. $@ -> "$@" in script (thanks to Paul Stodghill for this fix).
  649. Obscure interrupt/exception VM bug fixed.
  650. It is now possible to put an initial heap image into static
  651. memory (effectively allocated by OS process creation).
  652. Immutable initial objects go into static read-only memory,
  653. and mutable initial objects go into static read-write
  654. memory. Initial objects not copied by the GC. There is no
  655. documentation yet, but look at the rules for little and
  656. debug/little.o in the Makefile if you're interested.
  657. 2/13/94 (version 0.31)
  658. Incompatible changes:
  659. In interfaces, all exported syntactic keywords must be
  660. given type :syntax. For example,
  661. (define-interface my-macros
  662. (export (my-macro :syntax) ...))
  663. Image entry procedures for the ,build command are now
  664. passed a list of strings, not just a single string, for
  665. the command line arguments following -a.
  666. The names of the macros defined in scheme48.h
  667. (pairp, car, string_length, etc.) are now all upper case.
  668. New "configure" script generates Makefile from Makefile.in
  669. and sysdep.h from sysdep.h.in (thanks to Gnu autoconf).
  670. See INSTALL and doc/install.txt.
  671. Bug fixes:
  672. Can now make vectors (strings, etc.) as big as the amount
  673. of heap space available (but you're still screwed if you
  674. try to make one bigger than 2^23-1 bytes - don't do it).
  675. Non-ANSI-ness fixed in scheme48vm.c (jump out of, then
  676. back into, a block expected block-local variables to be
  677. unchanged).
  678. Fixed big/external.scm (had VECTOR-POSQ instead of ENUM).
  679. In (define-syntax foo bar) you got an error if bar was a
  680. variable reference.
  681. Plugged a storage leak (file-environments table in
  682. env/debug.scm). Images made with ,build were too large.
  683. Flushed extraneous delay from make-reflective-tower.
  684. Renamed variables in Makefile to resemble Gnu standards.
  685. Fixed definition of LINKER_RUNNABLE in Makefile.
  686. Added doc/call-back.txt.
  687. Fixed define-enumerated documentation (doc/big-scheme.txt).
  688. Environment maps no longer retained for things in initial.image
  689. and scheme48.image. This makes scheme48.image about 170K
  690. smaller.
  691. 2/3/94 (version 0.30)
  692. Faster EXPT.
  693. FLOATNUMS improvement: (inexact->exact <float>) should now
  694. work, e.g.
  695. (inexact->exact (/ 1. 3.)) => 6004799503160661/18014398509481984
  696. Reinstated ACCESS-SCHEME-48 for the benefit of PSD (portable
  697. scheme debugger) and a certain other software package that
  698. shall remain nameless. It only knows about a small number of
  699. procedures, including things like ERROR and FORCE-OUTPUT.
  700. Various changes to support the Pre-Scheme compiler, notably
  701. SET-REFLECTIVE-TOWER-MAKER!.
  702. Incompatible change to the ENUMERATED structure: the names
  703. foo/bar no longer become defined. Write (enum foo bar)
  704. instead. This will macro expand into the correct small
  705. integer.
  706. 1/30/94 (version 0.29)
  707. Fixed ps_run_time() to call sysconf() to find out how many
  708. ticks there are per second. It used to assume 60. This
  709. affects the output of the ,time command, so don't try
  710. comparing numbers from this version with numbers from older
  711. versions.
  712. ,time command will now accept a command, e.g.
  713. ,time ,load foo.scm.
  714. It appears that if multiple arguments follow -a on the
  715. argument line, they are concatenated together with spaces
  716. separating them and passed to the startup procedure. I
  717. don't know how long this has worked. This will change in
  718. the future so that the startup procedure gets a list of
  719. strings.
  720. Installed what used to be called the GENERAL-TABLES structure
  721. as the TABLES structure used by the system. This allows
  722. the use of other comparison predicates besides EQ?, and
  723. eliminates some code that had a restrictive copyright
  724. notice.
  725. ENUM, NAME->ENUMERAND, and ENUMERAND->NAME are all macros.
  726. Enumerated types themselves are now macros as well.
  727. 1/23/94 Fixed bad multiplication bug in VM: (* 214760876 10) was
  728. returning 125112.
  729. Moved RECORD-TYPE? and RECORD-TYPE-FIELD-NAMES from the
  730. RECORDS-INTERNAL interface to the RECORDS interface, for
  731. a somewhat closer approximation to MIT Scheme.
  732. Various type system improvements.
  733. Still no documentation for the ,exec package, but see
  734. link/load-linker.exec for an example.
  735. New generic function feature, exported by the METHODS
  736. interface (see interfaces.scm), almost like in a certain
  737. dynamic object-oriented language.
  738. 1/11/94 (version 0.27)
  739. Change:
  740. The isomorphism used by CHAR->INTEGER and INTEGER->CHAR is
  741. no longer ASCII. This change was introduced in order to
  742. assist the development of portable programs. If you need
  743. ASCII encoding, you should open the ASCII structure and
  744. use the procedures CHAR->ASCII and ASCII->CHAR.
  745. Features:
  746. The help system is somewhat improved.
  747. New form DEFINE-STRUCTURE defines a single structure.
  748. Incompatible changes to package system:
  749. Renamed DEFINE-PACKAGE to DEFINE-STRUCTURES
  750. Renamed DEFINE-STRUCTURE to DEFINE
  751. Renamed all the base types from FOO to :FOO. E.g.
  752. :SYNTAX, :VALUE, :PAIR, etc.
  753. Other:
  754. Removed socket support due to restrictive copyright on some
  755. of the C code that was in extension.c.
  756. 12/21/93 ,take has been flushed in favor of ,exec ,load. Commands are
  757. now accessed via a distinguished package instead of a table.
  758. Documentation pending.
  759. Postscript (.ps) files now included in doc/ subdirectory. (I
  760. thought they had been there all along, but apparently I was
  761. wrong.)
  762. Enhanced, but still kludgey, floating point support. Use
  763. ,open floatnum.
  764. 12/12/93 (version 0.26)
  765. NetBSD port.
  766. Hacked write-level and write-depth for inspecting circular
  767. structure.
  768. Recursive FORCEs signal errors, e.g.
  769. (force (letrec ((loser (delay (force loser)))) loser))
  770. 12/7/93 (version 0.25)
  771. Bug fix:
  772. filenames.make can now be remade using initial.image. This
  773. means that you can snarf a distribution and then edit
  774. USUAL-FEATURES before making scheme48.image.
  775. 12/6/93 Incompatible changes:
  776. Change of terminology: "signature" --> "interface".
  777. This means that DEFINE-SIGNATURE is now called
  778. DEFINE-INTERFACE, etc.
  779. Some structures have been renamed:
  780. condition -> conditions
  781. continuation -> continuations
  782. exception -> exceptions
  783. queue -> queues
  784. port -> ports
  785. record -> records, record-internal -> records-internal
  786. table -> tables
  787. template -> templates
  788. The ,load-into command has been removed. Use ,in ... ,load
  789. instead (see below), e.g.
  790. ,in mumble ,load myfile.scm
  791. The heap size for -h is specified in words, not bytes. As
  792. before, the size must account for both semispaces; -h 2n
  793. means n words per semispace. This change was actually
  794. made a while ago, but I was confused as to what it meant.
  795. Bug fixes:
  796. #e1.7 reads as 17/10, (exact? 1+1.0i) => #f, and 1.0+i prints.
  797. Features:
  798. Things like ((structure-ref scheme if) 1 2 3) work.
  799. The following commands now take arbitrary commands to execute
  800. in the specified package, not just forms:
  801. ,config ,user ,for-syntax ,in <package>
  802. For example, you can say
  803. ,in mumble ,trace foo
  804. This subsumes the functionality of the ,load-into and
  805. ,load-config commands.
  806. Dynamic loading of shared libraries for System V systems
  807. (untested).
  808. Documentation:
  809. Somewhat improved. user-guide.txt now lists most of the
  810. interesting built-in packages. lsc.ps is a draft of "A
  811. Tractable Scheme Implementation," a paper submitted to Lisp
  812. and Symbolic Computation. See also doc/big-scheme.txt,
  813. doc/thread.txt, and doc/external.txt.
  814. 10/30/93 LET-SYNTAX and LETREC-SYNTAX.
  815. Arrays (see big/array.scm).
  816. Lots of internal changes.
  817. 7/20/93 Features:
  818. Type system. See doc/types.txt.
  819. 7/4/93 Features:
  820. New define-package clause (for-syntax <clause>*).
  821. E.g. (define-package ((my-package ...))
  822. (open ...)
  823. (for-syntax (open scheme my-utilities)
  824. (files more-crud-for-syntax))
  825. ...)
  826. A file name to package map is now used by the emacs
  827. interface. Whenever you load a file, or zap from a file that
  828. hasn't been previously loaded or zapped, the package in
  829. which forms are being evaluated is remembered in a table.
  830. The next time you zap some forms from the same file, they
  831. will be evaluated in that package.
  832. Sometimes you may get an association you don't want. In that
  833. situation, you can use the ,forget command to delete an
  834. entry in the table.
  835. A new ,push command goes to a deeper command level.
  836. Experimental "command preferred" command processor mode: if
  837. you give the command ",form-preferred off", commands will
  838. be "preferred" to forms, meaning that you don't need to
  839. type a comma before giving a command. To see the value
  840. of a variable FOO you have to say (begin foo).
  841. Experimental "no levels" command processor mode: if you
  842. give the command ",levels off", then an error will not
  843. push a new command level. If you want to ignore an
  844. error, you don't need to take any action - further
  845. evaluations will happen at top level. If you want to
  846. enter the inspector or get a preview, you can issue these
  847. commands or a ,push command immediately after the error
  848. occurs (more precisely, any time until the focus object
  849. is set by some other command).
  850. All of the mode-control commands (batch, bench,
  851. break-on-warnings, form-preferred, and levels) take
  852. an optional argument. When no argument is given, they
  853. will toggle the corresponding mode. With an argument of
  854. ON or OFF, they turn the mode on or off.
  855. The ,flush and ,keep commands have been made more flexible
  856. and verbose.
  857. 6/18/93 Incompatible changes:
  858. The access-scheme48 procedure has gone away. Use ,open
  859. or the module system instead.
  860. The user, configuration, and for-syntax packages no longer
  861. have variables bound to them in the configuration package.
  862. Where previously you said: Now you should say:
  863. ,in user <form> ,user <form>
  864. ,in config <form> ,config <form>
  865. ,in for-syntax <form> ,for-syntax <form>
  866. ,load-into config <file> ,load-config <file>
  867. ,load-into for-syntax <file> ,for-syntax (load "file")
  868. Features:
  869. There is an ,expand <form> command for debugging macros.
  870. The ,open command takes any number of structure names, and opens
  871. them all (like ,new-package).
  872. New procedure DEFINE-INDENTATION exported by the PP structure.
  873. E.g. (define-indentation 'let-fluid 1) is like Gnu emacs's
  874. (put 'let-fluid 'scheme-indent-hook 1).
  875. The inspector simplifies generated names in continuation
  876. source code display. E.g. when formerly it said
  877. "Waiting for (#{Generated lambda} () (x->node (car exps)))"
  878. now it says
  879. "Waiting for (lambda () (x->node (car exps)))"
  880. Macros can signal syntax errors by returning input expression
  881. unchanged. (Comparison uses EQ?.)
  882. Documentation:
  883. The doc/ directory contains a draft of a "Scheme 48
  884. Progress Report."
  885. Cleanup:
  886. Procedure NULL-TERMINATE added to structure EXTERNALS's
  887. signature.
  888. "Vulgar Scheme" renamed to "Big Scheme".
  889. Two new subdirectories, env/ (for programming environment)
  890. and big/ (for Big Scheme), now contain most of what was
  891. in the misc/ directory.
  892. Several source files that were in the top level and link/
  893. directories have moved to the env/ and alt/ directories.
  894. 5/6/93 Bug fixes:
  895. Fixed -h command line switch. The size was being improperly
  896. divided by 4, so if you asked for an N megabyte heap, you'd
  897. actually only get an N/4 megabyte heap.
  898. Nested backquotes were broken for a while; should be fixed
  899. now.
  900. Features:
  901. Quoted structure is read-only: e.g. (set-car! '(a b) 3) will
  902. produce an exception.
  903. ,config [<form>] and ,user [<form>] are like ,in <struct> <form>.
  904. Unix socket support; see misc/socket.scm.
  905. Now using gzip instead of compress for distributions.
  906. ,open command offers to load packages.
  907. A .gdbinit file sets a breakpoint at CM's exception raising
  908. code, and defines a handy "preview" command.
  909. 1/18/93 Feature:
  910. Scheme 48 distributions now have version numbers. The
  911. version number is printed in the image startup message.
  912. Please include it in bug reports.
  913. The module system is now documented. See doc/module.tex.
  914. 12/17/92 Bug fixes:
  915. Macro templates of the form (x ... y) are supported.
  916. Macro templates are now less fussy about meta-variable
  917. rank: you can do "(x y) ..." even when the rank of either
  918. x or y (but not both) is too low; the low-ranking text
  919. will be copied as many times as necessary. (A
  920. meta-variable's "rank" is the number of ...'s it sits
  921. under in the left-hand side of the rewrite rule.)
  922. SYNTAX-RULES is now itself hygienic. This means you can
  923. have a meta-variable named CAR, for instance.
  924. New development environment features:
  925. Commands now start with comma (",") instead of colon
  926. (":"). (Easier to type since it's not shifted.)
  927. values, call-with-values, dynamic-wind, eval,
  928. interaction-environment, and scheme-report-environment
  929. added per upcoming Revised^5 Scheme report. See
  930. doc/meeting.tex.
  931. Modifications to quoted structure will now be detected and
  932. reported as errors.
  933. An interrupt will occur if an insufficient amount of memory
  934. is reclaimed by a garbage collection.
  935. Inspector now accepts arbitrary command processor commands
  936. (with or without leading comma)
  937. ,keep command controls retention of debugging information.
  938. Features removed:
  939. #\page and #\tab. These aren't in the Scheme report.
  940. Their absence in Scheme 48 will encourage portability.
  941. access-scheme48 works with fewer names than before. Use the
  942. package system instead.
  943. Complex numbers not in the system, by default. Get them
  944. back by changing usual-features in more-packages.scm.
  945. Features changed:
  946. Many changes to package system. See doc/module.tex.
  947. The :identify-image command is gone. Instead, supply a
  948. second argument (optional) to the ,dump command.
  949. The inspector's TEM command has been shortened to T.
  950. Internal changes and features:
  951. Stored objects types are now part of the virtual machine
  952. architecture, i.e. known to the byte-code compiler.
  953. Run-time system is split up into many little modules.
  954. File names are retained in debug database. (But not used for
  955. anything yet...)
  956. Tweaks to table package reduce standard image size by 50K
  957. and increase compiler speed by 7%.
  958. Immutability bit in object headers.
  959. Weak pointers.
  960. 7/18/92 Features removed:
  961. Table package's default hash function no longer supports
  962. string, pairs, or vectors.
  963. 7/9/92 Bug fixes:
  964. (- 0 -536870912)
  965. Inspector now uses command i/o ports instead of current ones
  966. Inexact integers print as N. instead of #iN
  967. Throwing back into a call-with-....put-port now produces a
  968. warning instead of an error
  969. Feature fixes:
  970. In DEFINE-PACKAGE, OPEN no longer implies ACCESS.
  971. misc/receive.scm renamed to rts/values.scm, made to conform
  972. with Revised^5 Report, and installed internally.
  973. Features:
  974. New :load-package command. Uses file names in (file ...) clause
  975. of a define-package. These are interpreted relative to the
  976. directory in which the file containing the define-package
  977. was found.
  978. #\tab and #\page now print this way.
  979. 6/17/92 Bug fixes:
  980. Fixed bug in modulo.
  981. Flushed LAST-PAIR (which disappeared between R^3 and R^4).
  982. DEFINE-SYNTAX and SYNTAX-RULES now exist.
  983. CEILING, FLOOR, and ROUND now exist.
  984. GCD and LCM are now n-ary.
  985. STRING-CI=? and STRING-COPY fixed.
  986. STRING->SYMBOL now copies its argument before handing it to
  987. INTERN.
  988. =, <, etc. now work with more than two arguments.
  989. CHAR-READY? exists.
  990. Calls via APPLY are now tail-recursive.
  991. DISPLAY of vectors and lists works (ugh).
  992. Development environment improvements:
  993. Type ? at inspector to get list of inspector commands.
  994. Inspector D command goes to next continuation.
  995. Inspector M command shows more of a long menu.
  996. Inspector TEM command goes to a continuation's or closure's
  997. template.
  998. For closures and continuations, inspector displays local
  999. variables with their names.
  1000. For continuations, inspector displays source code for
  1001. expression into which control will return.
  1002. Multiple command loop levels. EOF (control-D) now only pops
  1003. out a single level. :reset pops all the way out. :level n
  1004. goes out to level n.
  1005. Can disable benchmark mode.
  1006. Procedures made with (let ((f (lambda ...))) ...) now print
  1007. with names.
  1008. Features:
  1009. Package system: special forms define-package and package-ref;
  1010. command processor commands :set-package, :load-into,
  1011. :clear-package, :new-package, :export, :open-package, etc.
  1012. In misc directory: threads, queues, extended ports, format, etc.
  1013. Changes to system environment:
  1014. user-initial-environment -> user-package
  1015. record-updator -> record-modifier
  1016. primitive-throw superseded by with-continuation
  1017. ash -> arithmetic-shift
  1018. New bootstrap regime.
  1019. Support for threads: alarm clock interrupt, etc.
  1020. Etc.:
  1021. Liberal COPYRIGHT file, and a little notice in each source file.
  1022. INSTALL and NEWS split off from README.
  1023. doc.txt renamed to user-guide.txt.
  1024. The Makefile now provides two ways to make "s48" for
  1025. installation. One depends on the exec #! script execution
  1026. feature and the other doesn't.
  1027. "make" targets for testsys.image and little.image.
  1028. Runs Jaffer's test suite and library.
  1029. Flushed s48.el. Use cmuscheme instead.
  1030. 9/5/90 Command processor argument parser revamped.
  1031. :load, :trace, and :untrace commands take arbitrary number
  1032. of arguments. Argument to :proceed is optional.
  1033. New (but undocumented) :identify-image command.
  1034. Better error messages: wrong number of arguments, undefined
  1035. variable.
  1036. +, *, min, max, apply are now n-ary; -, /, make-string,
  1037. make-vector, read-char, peek-char, write-char have
  1038. appropriate argument optionality.
  1039. Better internal support for macros; not yet ready for release.
  1040. Added STRING as per R^3.99RS.
  1041. More testing of Scheme version of bytecode interpreter.
  1042. Better scoping of ##; files can't see command processor context.
  1043. OR and CASE don't cons closures.
  1044. VM checks for non-existent heap image file, gives error
  1045. message instead of "bus error".
  1046. Numerous internal changes in compiler and exception system.
  1047. Fixed char<?.
  1048. Fixed -.5 bug in string->number.
  1049. 8/26/90 Tested (link-system) inside of T; seems to work.
  1050. Benchmark mode available via :BENCH command.
  1051. System is 15K bigger due to new fatter global environment
  1052. representations.
  1053. Inspector abbreviation improved.
  1054. Disassembler now works on continuations, sort of.
  1055. 7/26/90 ((lambda ...) ...) no longer makes a closure
  1056. Features now in default system:
  1057. :inspect
  1058. :dis[assemble]
  1059. Generic arithmetic: bignums, rationals, complexes
  1060. rationalize
  1061. :time command is more verbose
  1062. MOREFILES variable in Makefile for loading extra stuff
  1063. Default heap size increased to 2 megabytes per semispace