------------------------------------------------------------------------
Version 9.2				  [Thu Apr  9 08:24:24 CDT 2026]	  

* fix bug that prevented distributed .dmg programs to close down
  properly at the end, depending on the close-on-stop clause.

* fix documentation for close-on-stop clauses, which somehow had it
  backwards (given the tag's name). 

------------------------------------------------------------------------
Version 9.1				  [Fri Jan  9 08:52:50 EST 2026]

* nothing to report 

------------------------------------------------------------------------
Version 9.0				  [Wed Oct 22 06:51:51 EDT 2025]

* nothing to report

------------------------------------------------------------------------
Version 8.18				  [Fri Jul 25 14:04:30 EDT 2025]

* nothing to report 

------------------------------------------------------------------------
Version 8.17				  [Mon Apr 21 09:17:05 EDT 2025]

* nothing to report 

------------------------------------------------------------------------
Version 8.16				  [Mon Jan 13 17:58:52 EST 2025]

* nothing to report 

------------------------------------------------------------------------
Version 8.15				  [Tue Oct 22 08:32:30 EDT 2024]

* nothing to report 

------------------------------------------------------------------------
Version 8.14				  [Tue Jul  9 10:37:51 EDT 2024]

* nothing to report 

------------------------------------------------------------------------
Version 8.13				  [Tue Apr 23 17:32:20 EDT 2024]

* fixed random to give better error message and improve its docs 

------------------------------------------------------------------------
Version 8.12				  [Mon Jan  8 10:32:06 EST 2024]

* bug fixed in the testing framework 

------------------------------------------------------------------------
Version 8.11				  [Sun Oct 15 10:50:43 EDT 2023]

* serious discrepancy between menu-based teaching languages and #lang
  variants discovered; will be addressed in 8.12 

------------------------------------------------------------------------
Version 8.10				  [Fri Jul 14 13:17:33 CDT 2023]

* doc fixes: remove inconsistencies between functionality and docs

------------------------------------------------------------------------
Version 8.9				  [Sun Apr 23 16:26:24 EDT 2023]

* doc updates: use uniform contract names

* The BSL, BSL+, ISL, and ISL+ languages come with checked signatures. 
  This means that some names are now taken away from the global
  namespace. -- This addition is an exploratory step. One problem
  is that `lambda` now shows up in error messages of BSL .. ISL.
  If we find additional obstacles over the summer and can't fix them, we
  may backtrack. 

------------------------------------------------------------------------
Version 8.8				  [Wed Jan 18 16:41:16 EST 2023]

* restrict <, <=, >, >= in *SL to take at least two arguments 

------------------------------------------------------------------------
Version 8.7				  [Tue Oct 18 08:53:31 EDT 2022]

* expose arrow images from htdp/arrow for additional uses
  (they were available via collects-path only) 

------------------------------------------------------------------------
Version 8.6				  [Wed Jul 13 08:48:06 EDT 2022]

* no change 

------------------------------------------------------------------------
Version 8.5				  [Mon Apr 11 20:49:03 EDT 2022]

* changed the behavior of `launch-many-worlds` so that when an
  exception gets raised it does _not_ shut down the whole universe but
  only the concurrent thread that's problematic (unless this uses a
  handler) 

------------------------------------------------------------------------
version 8.3				  [Fri Oct  8 09:32:25 EDT 2021]

* supplied (and fixed) documentation for functions in Intermediate
  with Lambda 

------------------------------------------------------------------------
version 8.2				  [Mon Jun 28 11:02:00 EDT 2021]

* The test-engine has undergone additional repairs in preparation of
  getting the #lang teaching languages right. This should not cause
  any major observable regression in the menu-based languages or uses
  of the test-engine package.
  
------------------------------------------------------------------------
version 8.1				  [Fri Apr  9 19:39:50 EDT 2021]

* *SL: ellipses no longer "swallow" code but allow drracket to show
   some basic binding arrows. The approach is broken because it
   quote-syntax-es an ellipsis's body and then turns probabilistic
   syntax-arrows into firm binding arrows.

   The mistaken arrows are probably tolerable because nobody will
   write templates with complex nested scope (except perhaps me).

------------------------------------------------------------------------
Version 8.0				  [Sat Jan  9 10:34:07 EST 2021]

* new: add wedge to `2htdp/images`
* bug fix: integers in `2htdp/images`
* bug fix: properly report error when a second universe tries to run
  on a port where another one is already running
* bug fix: check-with 
* protection: functions in `dir` more systematically

* Mike Sperber added signature support to ASL. TODO: push it into *SL. 
* Mike Sperber rewrote the test-engine and eliminated the bug-report window

------------------------------------------------------------------------
Version 7.9				  [Mon Oct 26 09:06:42 EDT 2020]

* restrict string comparison function at the BSL and BSL+ level to two
  arguments. The relaxed versions allow for making bad mistakes.

* introduce number->string-digits for rendering numbers in a useful
  manner (say, for amounts)

------------------------------------------------------------------------
Version 7.8				  [Wed Jul 29 13:13:57 EDT 2020]

* improving the error reporting of universe in #lang racket
  without affecting the teaching language operations 
* bug fixes

* noticed a misbehavior in test-engine/tests/check-ordered.rkt

------------------------------------------------------------------------
Version 7.7				  [Tue Apr 28 20:38:26 EDT 2020]

* no changes 

------------------------------------------------------------------------
Version 7.6				  [Sat Jan 25 10:46:12 EST 2020]

* no changes 


------------------------------------------------------------------------
Version 7.5				  [Wed Nov 13 21:19:52 EST 2019]

* fix performance bug with event log for very large states 
* fix equality for matrix so that it works on structs with properties

------------------------------------------------------------------------
Version 7.4				  [Fri Jul 26 11:45:01 EDT 2019]

* add event log window for big-bang so that students can see the events,
  including messages received from the server 

------------------------------------------------------------------------
Version 7.3				  [Fri May 10 11:08:51 EDT 2019]

* change signature for 
    string-append, string=?, string<?, string>?, string<=?, string>=?,
    string-ci=?, string-ci<?, string-ci>?, string-ci<=?, string-ci>=?
  so that they take at least two arguments in BSL 
  and can be used with fold and friends in ISL and ISL+

------------------------------------------------------------------------
Version 7.2				  [Mon Jan 28 10:29:15 EST 2019]

* none for HtDP 
* improvements to DeinProgram 

------------------------------------------------------------------------
Version 7.1				  [Sat Oct 20 11:12:54 EDT 2018]

* errors from tested expression no longer abort unit testing 
  (errors in expected expressions still do)
* fixed error message and highlighting for struct creation and access
* added uni-code lambda to BSL, BSL+, and ISL+

------------------------------------------------------------------------
Version 6.12				  [Fri Nov  3 13:09:49 EDT 2017]

* added file-exists? to batch-io 
* added web-io teachpack (used to be a package) 
* added some primitives to *SL 
* improved the documentation of (universe ...) and its example

------------------------------------------------------------------------
Version 6.11				  [Mon Oct 30 13:35:12 EDT 2017]

* none 

------------------------------------------------------------------------
Version 6.9				  [Wed Apr 19 21:48:38 EDT 2017]

* bug fixes in test engine and 2htdp/universe 

------------------------------------------------------------------------
Version 6.8				  [Mon Jan 16 17:13:05 EST 2017]

* bug fixes in test engine (regression) 

------------------------------------------------------------------------
Version 6.7				  [Thu Oct 20 17:25:43 EDT 2016]

* a small change to the semantics of big-bang from 2htdp/universe, 
  big-bang used to draw images even after a stop-when value was 
  discovered. Most of the time, this actually worked out. When it 
  didn't, programmers had used the stop-when drawing function for the 
  final image. Now big-bang draws one picture less than before. 

------------------------------------------------------------------------
Version 6.6				  [Fri Jul 15 11:14:44 EDT 2016]

* htdp/dir generates file representations that include date field. 
  The domains of the API remain backwards compatible.

------------------------------------------------------------------------
Version 6.5				  [Thu Apr 21 09:15:01 EDT 2016]

* bug fixes

------------------------------------------------------------------------
Version 6.4				  [Mon Jan 18 11:24:18 EST 2016]

* no changes 		

------------------------------------------------------------------------
Version 6.3				  [Mon Oct 19 21:50:57 EDT 2015]

* added display-mode option to big-bang so it can take over the whole
  screen
* small bug fixes

------------------------------------------------------------------------
Version 6.2

* new teachpack: 2htdp/abstraction -- 
  some for/* loops, match, define-type and type-cases for ISL and ISL+ 
* added check-satisfied to test engine 
* fixed 2htdp/universe so that an executable created from drracket 
  behaves properly when run independently of drracket 

------------------------------------------------------------------------
Version 6.1				  [Wed Jul 23 11:42:44 EDT 2014]

* added check-random to the test-engine so that students can test random
  functions more easily 

------------------------------------------------------------------------
Version 6.0.1				  [Thu Apr 24 16:39:50 EDT 2014]

* doc improvements 

------------------------------------------------------------------------
Version 6.0				  [Wed Dec 18 22:02:03 EST 2013]

* 2htdp/batch-io: added some web/html reading functions for part IV 
  in HtDP/2e. Fixed some minor bugs in the other functions. 

* 2htdp/universe: bug fixes

* 2htdp/image: changed scene+curve and add-curve to more accurately
  compute the bounding box of the curve (previously the argument
  points were used as the bounding box for the entire curve; now the
  bounding box is calculated properly in the case that the curve goes
  outside that rectangle)

* allow (almost) any real number as angles in 2htdp/image

* added place-images, place-images/align to 2htdp/image

* add transparent color to 2htdp/image 

------------------------------------------------------------------------
Version 5.3.4				  [Wed Apr 24 16:20:03 EDT 2013]

Small bug fixes and doc improvements. 

------------------------------------------------------------------------
Version 5.3.3

No changes.

------------------------------------------------------------------------
Version 5.3.2                             [Tue Jan 22 10:30:15 EST 2013]

* batch-io extended with access to stdin and stout 

------------------------------------------------------------------------
Version 5.3.1                             [Wed Oct 31 14:52:48 EDT 2012]

* bug fixes

------------------------------------------------------------------------
Version 5.2.1                             [Thu Jan 19 11:36:19 EST 2012]

* added: universe.rkt now comes with a game-pad simulation option
  A game-pad is a special-purpose key handler plus an icon that
  maps out the legal key strokes.

* fixed
  -- wheel-left and wheel-right events work properly as key events now
  -- on-receive doesn't have to exist for universe/world interactions
  -- name clause accepts strings and symbols
  -- doc typos

------------------------------------------------------------------------
Version 5.2                               [Tue Oct 18 12:34:16 EDT 2011]

* bug fixes in 2htdp/universe
* also, on-release now works without presence of an on-key clause

------------------------------------------------------------------------
Version 5.1.2                             [Fri Jul 22 15:27:37 EDT 2011]

* The error messages of the image and universe teachpacks have been
  revised substantially. They will be improved again next release.

* 5.1.3: the on-tick clause now takes a max number of ticks

------------------------------------------------------------------------
Version 5.1.1                             [Tue Apr 26 22:38:44 EDT 2011]

* bug fix in registration process for universe
  implies incompatibility of protocols between 5.1 programs and
  predecessors

------------------------------------------------------------------------
Version 5.1                               [Tue Feb  8 13:05:17 EST 2011]

* to-draw (old name: on-draw) is now required for big-bang expressions
* bug fixes in world, image, etc

------------------------------------------------------------------------
Version 5.0.2.                            [Wed Oct 27 18:30:26 EDT 2010]

* fixed stepper-universe interaction (on my side)
* record? allows specification of a directory
* small bug fixes
* small doc fixes

* batch-io is now in shape to be used (somewhat) in 2e

* robby added pinholes to his image teachpack

------------------------------------------------------------------------
Version 5.0.1.                            [Tue Jul 20 20:52:09 EDT 2010]

* typos in documentation

------------------------------------------------------------------------

Version 5.0                               [Fri May 28 13:43:21 EDT 2010]

* added to-draw to universe to prepare the switch to the new terminoloy

------------------------------------------------------------------------
Version 4.2.5                             [Fri Mar 26 10:02:11 EDT 2010]

* "release" is no longer a key event; use "release" handler instead

------------------------------------------------------------------------
Version 4.2.4                             [Thu Jan 28 12:02:01 EST 2010]

* separated 2htdp/universe from htdp/image
* 2htdp/universe contains some stupid hacks to improve performance
  -- to be changed with Matthew's advice
* error modified
* added a bunch of primitives for JPR
* fixed some other bugs

------------------------------------------------------------------------
Version 4.2.3                             [Sun Nov 22 19:25:01 EST 2009]

* bug fixes in universe
* 2htdp/image (first draft)

------------------------------------------------------------------------
Version 4.2.2                             [Sat Aug 29 15:44:41 EDT 2009]

* universe API:
  -- added a (state Boolean) option for world and server programs
  to display their actual state in a separate window
  -- added a mechanism for displaying a final scene
  when the world is about to come to an end

------------------------------------------------------------------------
Version 4.2.1                             [Wed Jul 22 11:15:54 EDT 2009]

* universe API: added launch-many-worlds, fixed numerous small bugs
  concerning symbol and char elimination

------------------------------------------------------------------------
Version 4.2                               [Thu May 21 08:51:15 EDT 2009]

* the universe API has changed. It no longer uses chars or symbols
  for the callbacks but one-letter strings, except for arrow keys
  and special events, which are arbitrarily long strings.

------------------------------------------------------------------------
Version 4.1.5                             [Sat Feb 14 20:12:23 EST 2009]

* the universe teachpack exports iworld, not world now

------------------------------------------------------------------------
Version 4.1.4                             [Sun Jan 18 21:18:34 EST 2009]

* introduces 2htdp/universe
* small bug fixes in world.ss

------------------------------------------------------------------------
Version 4.1.3                             [Wed Nov 19 10:20:41 EST 2008]

tiny bug fixes

------------------------------------------------------------------------
Version 4.1.2                             [Sat Oct 25 10:31:05 EDT 2008]

nothing new to report

------------------------------------------------------------------------
Version 4.1.1                             [Tue Sep 30 10:17:26 EDT 2008]

* world.ss: big-bang can now be re-run after the world has stopped

------------------------------------------------------------------------
Version 4.1                               [Sun Aug 10 12:56:58 EDT 2008]

* world docs include line to HtDP/2e Prologue

------------------------------------------------------------------------
Version 4.0.1                             [Fri Jun 20 10:35:32 EDT 2008]

* world.ss: replaced 'end-of-world' with a hook called 'stop-when'

------------------------------------------------------------------------
VERSION 4.0                               [Thu May  8 11:03:30 EDT 2008]

* small bug fixes in world

* added matrix.ss (requires a write up)

------------------------------------------------------------------------
VERSION 371                               [Tue Aug  7 17:49:47 EDT 2007]

* changed world.ss so that it exports both add-line from image.ss and
  scene+image.

------------------------------------------------------------------------
VERSION 370                               [Mon May  7 09:54:19 EDT 2007]

* Added testing.ss teachpack.

* The world.ss teachpack now has a IMAGE capturing functionality, including
  animated GIFs. It also supports simple simulations now.

* The world.ss and image.ss support real numbers for sizes and coordinates
  now.

* The ProfessorJ wizard doesn't support templates for now.

------------------------------------------------------------------------
VERSION 360                               [Tue Nov  7 12:45:48 EST 2006]

 * The world.ss teachpack has now callback hooks for mouse clicks.

 * The image.ss teachpack now includes a star primitive.

 * Fixed bugs in world.ss, graphing.ss, image.ss

------------------------------------------------------------------------
VERSION 351                               [Tue Jul 18 14:11:29 EDT 2006]

 * The libraries for ProfessorJ are now organized as four packages:
   draw, idraw, geometry, and colors.

 * Fixed small problems with master.ss and image.ss teachpacks and their
   docs.

------------------------------------------------------------------------
VERSION 350                               [Fri Jun 16 20:37:38 EDT 2006]

 * The draw package (ProfJ) spawns a new Canvas per new Canvas.
   The implementation of draw.ss has changed for that, though the visible
   interface should remain the same.

 * The idraw package provides imperative versions of World and Canvas.

 * Small bugs in world.ss and image.ss fixed.

 * servlet.ss and servlet2.ss are still missing. Expect their arrival
   for 351.

------------------------------------------------------------------------
VERSION 300                               [Mon Dec 12 15:59:02 EST 2005]

 * The world.ss teachpack has changed. It no longer supports
   (update ... produce ...) but instead provides a function
   on-redraw.

 * servlet.ss and servlet2.ss are still missing. Expect their arrival
   for 301.

------------------------------------------------------------------------
VERSION 299.200                           [Tue Aug  2 17:37:24 EDT 2005]

 * servlet.ss and servlet2.ss are still missing. Expect their arrival
   for 300.

 * draw.ss in the HtDCH teachpack collection has radically changed. See
   the doc.txt file for the new arrangement.

------------------------------------------------------------------------
VERSION 209                               [Fri Dec 17 10:19:52 EST 2004]

 * fixed small bugs in image.ss and world.ss concerning colors and the
   location of pinholes

 * The interface of the draw teachpack (package) for ProfessorJ has
   changed. A World now supports draw and erase methods. The onTick and
   onKeyEvent methods call erase on the current world, create the next
   world, and then call draw on the new world.

------------------------------------------------------------------------
VERSION 208p1

* fixed a bug in image.ss; find-image now returns the result
  relative to the pinhole. Misc image.ss docs improvements.

------------------------------------------------------------------------
VERSION 208                               [Fri Jul 30 10:07:21 EDT 2004]

* image.ss introduces images as algebraic values. Students can create basic
  images such as rectangles, circles, and they can compose them via an
  overlay function. There are also primitives for finding one picture in
  another one and so on. Testing with drawing is now feasible.

* world.ss enriches image.ss with animation functions. Like draw.ss, it
  comes with big-bang, on-key-event, on-tick, end-of-time for creating a
  world, starting a clock, reacting to clock ticks and keystrokes, and
  ending time. It also comes with a mechanism for display movies. It does
  *not* yet provide primitives for dealing with mouse clicks.

  The performance problems from the TS! workshops have been eliminated.

------------------------------------------------------------------------
VERSION 207                               [Fri May 14 12:52:43 EDT 2004]

* draw.ss now comes with functional callbacks for maintaining a visual
  world: big-bang, on-key-event, on-tick, end-of-time

* draw also comes now as a ProfessorJ implementation in the htdch
  collects directory. This is an experimental teachpack. Docs are available
  via doc.txt. Experiences with students may change this teachpack
  significantly.

------------------------------------------------------------------------
VERSION 203                               [Thu Dec  5 09:10:40 EST 2002]

* added get-key-event to draw.ss

------------------------------------------------------------------------
VERSION 201                               [Wed Jul 24 22:44:19 EDT 2002]

* added servlet.ss and servlet2.ss

* all exported functions are primitive operators or higher order primitives
  this improves error reporting behavior in the Beginner languages (before
  higher-order functions are introduced)

* removed:
  pingp-play.ss
  pingp.ss
  protect-play.ss
  rectangle.ss
  these teachpacks aren't mentioned in htdp, and aren't used for any
  of the additional exercises

------------------------------------------------------------------------
VERSION 200alpha1                         [Wed Nov 21 13:07:43 EST 2001]

* Robby converted to modules

* Fixed bug in convert.ss

------------------------------------------------------------------------
VERSION 103                               []

* modified draw.ss interface so that colors are symbols
  use 'red instead of RED

------------------------------------------------------------------------
VERSION 102                               [Thu Jun 22 18:22:48 CDT 2000]

* Added "convert.ss" to teachpacks/htdp

* Fixed error messages for some arity tests

* Fixed documentation

------------------------------------------------------------------------

VERSION 101                               [Tue Oct 26 22:28:38 CDT 1999]

* TERMINOLOGY: We decided to eliminate the terminology "teaching
  library", because it is easily confused with a plain library. As of
  release 101, we refer to one of these objects as a

    teachpack

* USAGE: Inside of DrScheme, the menu choice called "Language|Set
  library to..."  is now called "Language|Set teachpack to...".

* LOCATION of Files: The distributed teachpacks are found at

    $PLTHOME/teachpack/
    PLTHOME is the location of the PLT software

  The htdp subdirectory contains those files that matter to students who
  use HtDP.

* CHANGES in individual teachpacks: The most important and most visible
  change in the teachpack support concerns

    hangman.ss

  It now provides two GUI interfaces: (1) hangman for three-letter words
  and (2) hangman-list for words of arbitrary length. See the teachpack
  documentation for details.

  The teachpack

    master.ss

  now exports the procedure _master_, which is exactly like the procedure
  _repl_ in the old master-lib.ss library.

  The corresponding exercises in HtDP have been rewritten and are posted
  on the HtDP Web site.

* REMINDER: The *purpose* of teachpacks is to supplement student programs
  with code that is beyond the teaching languages (Beginner, Intermediate,
  Advanced). For example, to enable students to play hangman, we supply a
  teachpack that
    - implements the random choosing of a word
    - maintains the state variable of how many guesses have gone wrong
    - manages the GUI.
  All these tasks are beyond students in the third week and/or impose
  nothing memorization of currently useless knowledge on students.

  A teachpack is a signed unit that imports the interface:

    plt:userspace^

  The exported names are added to the read-eval-print loop at the end of
  an EXECUTE step.

------------------------------------------------------------------------

Version 100

The plt:userspace^ signature does not contain the
graphics library. In order to use the graphics library in your
teachpacks, use a compound unit and link in graphics directly. For example:

  (require-library "graphics.ss" "graphics")

  (define-signature my-teachpack^ (four))

  (define my-teachpack
    (unit/sig my-teachpack^

      (import plt:userspace^
              graphics^)

      '...

      (define four 4)))

  (compound-unit/sig
   (import [P : plt:userspace^])
   (link [G : graphics^ ((require-library "graphicr.ss" "graphics")
                         (P : mzlib:file^)
                         (P : mred^))]
         [TP : my-teachpack^ (my-teachpack P G)])
   (export (open TP)))

The graphics^ signature contains all of the primitives in the
graphic.ss library. Search for "graphics" in Help Desk for more
information on those primitives.
