CHANGES 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. Change Log
  2. ----------
  3. Version 1.41
  4. Bugs fixed:
  5. #3020389 - Added makefile section for Mac OS X (SL)
  6. #3286135 - Fixed num_mod routine which caused errors in use of modulo
  7. #3290232 - Corrected version number shown on startup (GM)
  8. #3394882 - Added missing #if in opdefines.h around get and put (DC)
  9. #3395547 - Fix for the modulo procedure (DC)
  10. #3400290 - Optimized append to make it an O(n) operation (DC)
  11. #3493926 - Corrected flag used when building shared files on OSX (J)
  12. R5RS related changes:
  13. #2866196 - Parser does not handle delimiters correctly
  14. #3395548 - Add a decimal point to inexact numbers in atom2str (DC)
  15. #3399331 - Make min/max return inexact when any argument is inexact
  16. #3399332 - Compatability fix for expt.
  17. #3399335 - Optional radix for string->number and number->string (DC)
  18. #3400202 - Append with one argument should not return a list (DC)
  19. #3400284 - Compatability fix for integer?
  20. Other changes:
  21. - Added flags to makefile for MinGW/MSYS (TC)
  22. - Moved variable declarations to avoid warnings with some compilers
  23. - Don't print space after initial #( when printing vectors.
  24. - Minor optimization for is_nonneg().
  25. - No need to round integers in OP_ROUND (#3400284)
  26. - Fixes to code that reports line number with error (RC)
  27. Contributors:
  28. Kevin Cozens, Gordon McNutt, Doug Currie, Sean Long, Tim Cas, Joey,
  29. Richard Copley, and CMarinier.
  30. Version 1.40
  31. Bugs fixed:
  32. #1964950 - Stop core dumps due to bad syntax in LET (and variants)
  33. #2826594 - allow reverse to work on empty list (Tony Garnock-Jones)
  34. Potential problem of arglist to foreign calls being wrongly GC'ed.
  35. Fixed bug that read could loop forever (tehom).
  36. API changes:
  37. Exposed is_list and list_length.
  38. Added scheme_register_foreign_func_list and declarations for it (tehom)
  39. Defined *compile-hook* (tehom)
  40. Other changes:
  41. Updated is_list and list_length to handle circular lists.
  42. Nested calling thru C has been made now safer (tehom)
  43. Peter Michaux cleaned up port_rep_from_file
  44. Added unwind-protect (tehom)
  45. Some cleanups to in/outport and Eval_Cycle by Peter Michaux
  46. Report error line number (Mostly by Sanel Zukan, back-compatibility by Tehom)
  47. Contributors:
  48. Kevin Cozens, Dimitrios Souflis, Tom Breton, Peter Michaux, Sanel Zukan,
  49. and Tony Garnock-Jones.
  50. Version 1.39
  51. Bugs fixed:
  52. Fix for the load bug
  53. Fixed parsing of octal coded characters. Fixes bug #1818018.
  54. Added tests for when mk_vector is out of memory. Can't rely on sc->sink.
  55. Fix for bug #1794369
  56. Finished feature-request 1599947: scheme_apply0 etc return values.
  57. Partly provided feature-request 1599947: Expose list_length, eqv, etc
  58. Provided feature-request 1599945, Scheme->C->Scheme calling.
  59. Fix for bug 1593861 (behavior of is_integer)
  60. Fix for bug 1589711
  61. Error checking of binding spec syntax in LET and LETREC. The bad syntax
  62. was causing a segmentation fault in Linux. Complete fixes for bug #1817986.
  63. Error checking of binding spec syntax in LET*
  64. Bad syntax was causing core dump in Linux.
  65. Fix for nasty gc bug
  66. R5RS changes:
  67. R5RS requires numbers to be of equal value AND of the same type (ie. both
  68. exact or inexact) in order to return #t from eqv?. R5RS compliance fix.
  69. String output ports now conform to SRFI-6
  70. Other changes:
  71. Drew Yao fixed buffer overflow problems in mk_sharp_const.
  72. put OP_T0LVL in charge of reacting to EOF
  73. file_push checks array bounds (patch from Ray Lehtiniemi)
  74. Changed to always use snprintf (Patch due to Ramiro bsd1628)
  75. Updated usage information using text from the Manual.txt file.
  76. Version 1.38
  77. Interim release until the rewrite, mostly incorporating modifications
  78. from Kevin Cozens. Small addition for Cygwin in the makefile, and
  79. modifications by Andrew Guenther for Apple platforms.
  80. Version 1.37
  81. Joe Buehler submitted reserve_cells.
  82. Version 1.36
  83. Joe Buehler fixed a patch in the allocator.
  84. Alexander Shendi moved the comment handling in the scanner, which
  85. fixed an obscure bug for which Mike E had provided a patch as well.
  86. Kevin Cozens has submitted some fixes and modifications which have
  87. not been incorporated yet in their entirety.
  88. Version 1.35
  89. Todd Showalter discovered that the number of free cells reported
  90. after GC was incorrect, which could also cause unnecessary allocations.
  91. Version 1.34
  92. Long missing version. Lots of bugfixes have accumulated in my email, so
  93. I had to start using them. In this version, Keenan Pepper has submitted
  94. a bugfix for the string comparison library procedure, Wouter Boeke
  95. modified some code that was casting to the wrong type and crashed on
  96. some machines, "SheppardCo" submitted a replacement "modulo" code and
  97. Scott Fenton submitted lots of corrections that shut up some compiler
  98. warnings. Brian Maher submitted instructions on how to build on OS-X.
  99. I have to dig deeper into my mailbox and find earlier emails, too.
  100. Version 1.33
  101. Charles Hayden fixed a nasty GC bug of the new stack frame, while in
  102. the process of porting TinyScheme to C++. He also submitted other
  103. changes, and other people also had comments or requests, but the GC
  104. bug was so important that this version is put through the door to
  105. correct it.
  106. Version 1.32
  107. Stephen Gildea put some quality time on TinyScheme again, and made
  108. a whole lot of changes to the interpreter that made it noticeably
  109. faster.
  110. Version 1.31
  111. Patches to the hastily-done version 1.30. Stephen Gildea fixed
  112. some things done wrongly, and Richard Russo fixed the makefile
  113. for building on Windows. Property lists (heritage from MiniScheme)
  114. are now optional and have dissappeared from the interface. They
  115. should be considered as deprecated.
  116. Version 1.30
  117. After many months, I followed Preston Bannister's advice of
  118. using macros and a single source text to keep the enums and the
  119. dispatch table in sync, and I used his contributed "opdefines.h".
  120. Timothy Downs contributed a helpful function, "scheme_call".
  121. Stephen Gildea contributed new versions of the makefile and
  122. practically all other sources. He created a built-in STRING-APPEND,
  123. and fixed a lot of other bugs.
  124. Ruhi Bloodworth reported fixes necessary for OS X and a small
  125. bug in dynload.c.
  126. Version 1.29
  127. The previous version contained a lot of corrections, but there
  128. were a lot more that still wait on a sheet of paper lost in a
  129. carton someplace after my house move... Manuel Heras-Gilsanz
  130. noticed this and resent his own contribution, which relies on
  131. another bugfix that v.1.28 was missing: a problem with string
  132. output, that this version fixes. I hope other people will take
  133. the time to resend their contributions, if they didn't make it
  134. to v.1.28.
  135. Version 1.28
  136. Many people have contacted me with bugfixes or remarks in
  137. the three months I was inactive. A lot of them spotted that
  138. scheme_deinit crashed while reporting gc results. They suggested
  139. that sc->outport be set to NIL in scheme_deinit, which I did.
  140. Dennis Taylor remarked that OP_VALUEPRINT reset sc->value instead
  141. of preserving it. He submitted a modification which I adopted
  142. partially. David Hovemeyer sent me many little changes, that you
  143. will find in version 1.28, and Partice Stoessel modified the
  144. float reader to conform to R5RS.
  145. Version 1.27
  146. Version 1.27 is the successor of 1.25. Bug fixes only, but I had to
  147. release them so that everybody can profit. 'Backchar' tried to write
  148. back to the string, which obviously didn't work for const strings.
  149. 'Substring' didn't check for crossed start and end indices. Defines
  150. changed to restore the ability to compile under MSVC.
  151. Version 1.26
  152. Version 1.26 was never released. I changed a lot of things, in fact
  153. too much, even the garbage collector, and hell broke loose. I'll
  154. try a more gradual approach next time.
  155. Version 1.25
  156. Types have been homogenized to be able to accommodate a different
  157. representation. Plus, promises are no longer closures. Unfortunately,
  158. I discovered that continuations and force/delay do not pass the SCM
  159. test (and never did)... However, on the bright side, what little
  160. modifications I did had a large impact on the footprint:
  161. USE_NO_FEATURES now produces an object file of 63960 bytes on Linux!
  162. Version 1.24
  163. SCM tests now pass again after change in atom2str.
  164. Version 1.23
  165. Finally I managed to mess it up with my version control. Version
  166. 1.22 actually lacked some of the things I have been fixing in the
  167. meantime. This should be considered as a complete replacement for
  168. 1.22.
  169. Version 1.22
  170. The new ports had a bug in LOAD. MK_CLOSURE is introduced.
  171. Shawn Wagner inquired about string->number and number->string.
  172. I added string->atom and atom->string and defined the number
  173. functions from them. Doing that, I fixed WRITE applied to symbols
  174. (it didn't quote them). Unfortunately, minimum build is now
  175. slightly larger than 64k... I postpone action because Jason's idea
  176. might solve it elegantly.
  177. Version 1.21
  178. Jason Felice submitted a radically different datatype representation
  179. which he had implemented. While discussing its pros and cons, it
  180. became apparent that the current implementation of ports suffered
  181. from a grave fault: ports were not garbage-collected. I changed the
  182. ports to be heap-allocated, which enabled the use of string ports
  183. for loading. Jason also fixed errors in the garbage collection of
  184. vectors. USE_VERBATIM is gone. "ssp_compiler.c" has a better solution
  185. on HTML generation. A bug involving backslash notation in strings
  186. has been fixed. '-c' flag now executes next argument as a stream of
  187. Scheme commands. Foreign functions are now also heap allocated,
  188. and scheme_define is used to define everything.
  189. Version 1.20
  190. Tracing has been added. The toplevel loop has been slightly
  191. rearranged. Backquote reading for vector templates has been
  192. sanitized. Symbol interning is now correct. Arithmetic functions
  193. have been corrected. APPLY, MAP, FOR-EACH, numeric comparison
  194. functions fixed. String reader/writer understands \xAA notation.
  195. Version 1.19
  196. Carriage Return now delimits identifiers. DOS-formatted Scheme files
  197. can be used by Unix. Random number generator added to library.
  198. Fixed some glitches of the new type-checking scheme. Fixed erroneous
  199. (append '() 'a) behavior. Will continue with r4rstest.scm to
  200. fix errors.
  201. Version 1.18
  202. The FFI has been extended. USE_VERBOSE_GC has gone. Anyone wanting
  203. the same functionality can put (gcverbose #t) in init.scm.
  204. print-width was removed, along with three corresponding op-codes.
  205. Extended character constants with ASCII names were added.
  206. mk_counted_string paves the way for full support of binary strings.
  207. As much as possible of the type-checking chores were delegated
  208. to the inner loop, thus reducing the code size to less than 4200 loc!
  209. Version 1.17
  210. Dynamically-loaded extensions are more fully integrated.
  211. TinyScheme is now distributed under the BSD open-source license.
  212. Version 1.16
  213. Dynamically-loaded extensions introduced (USE_DL).
  214. Santeri Paavolainen found a race condition: When a cons is executed,
  215. and each of the two arguments is a constructing function, GC could
  216. happen before all arguments are evaluated and cons() is called, and
  217. the evaluated arguments would all be reclaimed!
  218. Fortunately, such a case was rare in the code, although it is
  219. a pitfall in new code and code in foreign functions. Currently, only
  220. one such case remains, when COLON_HOOK is defined.
  221. Version 1.15
  222. David Gould also contributed some changes that speed up operation.
  223. Kirk Zurell fixed HASPROP.
  224. The Garbage Collection didn't collect all the garbage...fixed.
  225. Version 1.14
  226. Unfortunately, after Andre fixed the GC it became obvious that the
  227. algorithm was too slow... Fortunately, David Gould found a way to
  228. speed it up.
  229. Version 1.13
  230. Silly bug involving division by zero resolved by Roland Kaufman.
  231. Macintoch support from Shmulik Regev.
  232. Float parser bug fixed by Alexander Shendi.
  233. GC bug from Andru Luvisi.
  234. Version 1.12
  235. Cis* incorrectly called isalpha() instead of isascii()
  236. Added USE_CHAR_CLASSIFIERS, USE_STRING_PORTS.
  237. Version 1.11
  238. BSDI defines isnumber... changed all similar functions to is_*
  239. EXPT now has correct definition. Added FLOOR,CEILING,TRUNCATE
  240. and ROUND, courtesy of Bengt Kleberg. Preprocessor symbols now
  241. have values 1 or 0, and can be set as compiler defines (proposed
  242. by Andy Ganor *months* ago). 'prompt' and 'InitFile' can now be
  243. defined during compilation, too.
  244. Version 1.10
  245. Another bug when file ends with comment!
  246. Added DEFINE-MACRO in init.scm, courtesy of Andy Gaynor.
  247. Version 1.09
  248. Removed bug when READ met EOF. lcm.
  249. Version 1.08
  250. quotient,remainder and modulo. gcd.
  251. Version 1.07
  252. '=>' in cond now exists
  253. list? now checks for circularity
  254. some reader bugs removed
  255. Reader is more consistent wrt vectors
  256. Quote and Quasiquote work with vectors
  257. Version 1.06
  258. #! is now skipped
  259. generic-assoc bug removed
  260. strings are now managed differently, hack.txt is removed
  261. various delicate points fixed
  262. Version 1.05
  263. Support for scripts, *args*, "-1" option.
  264. Various R5RS procedures.
  265. *sharp-hook*
  266. Handles unmatched parentheses.
  267. New architecture for procedures.
  268. Version 1.04
  269. Added missing T_ATOM bits...
  270. Added vectors
  271. Free-list is sorted by address, since vectors need consecutive cells.
  272. (quit <exitcode>) for use with scripts
  273. Version 1.03 (26 Aug 1998):
  274. Extended .h with useful functions for FFI
  275. Library: with-input-* etc.
  276. Finished R5RS I/O, added string ports.
  277. Version 1.02 (25 Aug 1998):
  278. First part of R5RS I/O.