news.txt 54 KB

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