------------------------------ Version 8.2 ------------------------------ . performance improvements when editing files with picts that have large bitmaps embedded in them ------------------------------ Version 8.1 ------------------------------ . tabs can be dragged around and have close buttons . improved arrows on identifiers with contracts (they can go to the definition site now) . make the Help | Configure Command Line for Racket menu item work under windows . misc bug fixes ------------------------------ Version 8.0 ------------------------------ . the DrRacket REPL ports accept simple-tree-text-markup objects and renders them, offering the ability to print things with boxes around them, among other things . add arrows for #%datum and #%app implicit forms, which avoids problems when removing requires . misc bug fixes ------------------------------ Version 7.9 ------------------------------ . various improvements to Check Syntax arrows and renaming, thanks to Sorawee Porncharoenwase . misc other bug fixes and documentation improvements ------------------------------ Version 7.8 ------------------------------ . make Scribble's PDF button work under unix . compiled/errortrace is no longer consulted by DrRacket as a source of zo files (before it was consulted when in debugging mode, but this was problematic) . performance improvements for killing programs that are infinite non-tail recursive loops . misc small bug fixes and performance improvements ------------------------------ Version 7.7 ------------------------------ . replaced DrRacket's internal bug report mechanism with a pointer to GitHub . various bug fixes, minor performance improvements, and documentation improvements ------------------------------ Version 7.6 ------------------------------ . improved the responsivness of scrolling via trackpads . improved dark mode on mac os and linux ------------------------------ Version 7.5 ------------------------------ . change the bound variable jumping around to ignore arrows that come from `require`s. . recall the most recently used #lang line and use that for new tabs . minor bug fixes and documentation fixes ------------------------------ Version 7.4 ------------------------------ . minor bug fixes ------------------------------ Version 7.3 ------------------------------ . Improved DrRacket's support for the OS's light-on-dark color schemes . minor bug fixes ------------------------------ Version 7.2 ------------------------------ . Added QuickScript to the standard install for DrRacket. Thanks to Laurent Orseau for his work! . misc minor bug fixes ------------------------------ Version 7.1 ------------------------------ . Add backtrace to out of memory errors (when available) . Fix bug that prevented cmd-H (to hide a window under macOS) from working . New users of DrRacket open files into new tabs instead of new frames (by default). ------------------------------ Version 7.0 ------------------------------ . Exectuable creation under windows can embed DLLs (making the executables stand-alone). . misc bug fixes and documentation improvements ------------------------------ Version 6.12 ------------------------------ . added color scheme entries for syntax-check document variables and unused variables. . misc bug fixes ------------------------------ Version 6.11 ------------------------------ . added a font size option to the "insert large letters" menu item . added color scheme entries for syntax-check arrows . change the implementation strategy for the program contour to one that uses less screen real-estate and is significantly more efficient. Thanks to Jennie Tran for the implementation. . misc bug fixes ------------------------------ Version 6.10 ------------------------------ . reduce the number of nested panel% objects to attempt to work around a bug in the Windows 10 Creators Update . misc bug fixes ------------------------------ Version 6.9 ------------------------------ . add the "remove unused requires" refactoring . improved support for #lang-based tooling . add opt-in toolbar buttons . add support for #lang-specified keybindings . bug fixes and minor performance improvements ------------------------------ Version 6.8 ------------------------------ . new logo . bug fixes ------------------------------ Version 6.7 ------------------------------ . improvements in the way DrRacket's sets up the printing parameters to make the "#lang" variants of the teaching languages work better . misc bug fixes ------------------------------ Version 6.6 ------------------------------ . misc bug fixes . cmd-9 always goes to the last tab, even when there are fewer than 9 ------------------------------ Version 6.5 ------------------------------ . changed the indentation strategy for sequences that begin with keywords to assume that they are part of some internal structure of something that, in general looks like (#:x 1 #:y 2 #:z 3) and so prefer to indent like this: (#:x 1 #:y 2 #:z 3) instead of like this: (#:x 1 #:y 2 #:z 3) . the break button aborts the program the second time it is clicked on and its label changes to indicate what it will do ------------------------------ Version 6.4 ------------------------------ . sped up scrolling . added submodules to the popup menu navigator that contained only definitions before ------------------------------ Version 6.3 ------------------------------ . initialize the pretty-print-size-hook and the pretty-print-print-hook to handle special values like images, fractions etc, in the user's program . added a weight option to the font preferences dialog . add c:x;c keybinding for "tack crossing arrows" in Check Syntax . added the "Paste and Indent" menu item . misc bug fixes ------------------------------ Version 6.2 ------------------------------ . change the teaching languages to use #true, #false, and '() for true, false, and empty . Added an indentation mode for Scribble (and better support for #lang-based specification of indentation) . change the way 'return' handles whitespace, making it match the way return works in Greg Hendershott's racket-mode in Emacs. The difference from the previous DrRacket behavior is that it removes all of the trailing whitespace on the line before the newly inserted return (possibly removing all of the whitespace in the case that the line contains only whitespace). ------------------------------ Version 6.1.1 ------------------------------ . added support for hiding the content of ellipsis-labelled sections in error messages . remove 'print' mode from the Pretty Big language . improve support for tooltips in Check Syntax . DrRacket: drop numpad Enter treatment as force-evaluation (see commit a41cc0c3c0 for details) . macro expansion that exhausts memory no longer breaks DrRacket's online expansion & check syntax ------------------------------ Version 6.1 ------------------------------ . added better spell-checking support: DrRacket can suggest corrections and has a keystroke to jump the next misspelling. . changed the online expansion handler machinery so that the handlers receive exceptions when expansion raises one . made the memory log and the () highlighter's computation status visible in released versions of DrRacket (previously they were visible only in git-based versions and nightly builds) . improved DrRacket .plt installation functionality so that it prints out the start of the contents of the file it tried to unpack when it fails . Mac OS X: added full screen support . added a re-indent paragraph key binding (esc;q) for Scribble mode. Thanks to Lei Wang for implementing this. ------------------------------ Version 6.0 ------------------------------ . Internal errors are now stashed away and included in future bug reports (even unrelated bug reports). . Added a GUI package manager . Added keybindings for the items in the Check Synax popup menu, notably c:x;m to rename a variable, c:x;d to just to the definition of an imported variable, c:x;n to go to the next occurence of a variable, and c:x;b to go to the binding occurrence of a variable. . Improved how Check Syntax handles variables bound by define-struct, struct, and Redex's pattern variables . Check Syntax now allows macros to declare certain identifiers as original via the 'original-for-syntax syntax property. . Online expansion no longer puts status messages in the place where errors go (just watch the colored bubble in the bottom right to see what it is doing) . Online check syntax now works even in the presence of type errors in typed racket; and the results may come back in parallel to type checking . Added -shift-o to facilitate opening files that are in collections. . Improved support for (user-defined) color schemes . Added a splash screen to commemorate Ada Lovelace's birthday (December 10th) . Under Unix/X, the .desktop-based launcher now uses single-instance mode . Added the ability to move tabs around in a frame; change the -9 shortcut to always go to the last tab, not the 9th one . Improved the usability of the teaching language teachpack dialog . Packages can now add teachpacks to the teachpack dialog via info.rkt declarations. . DrRacket allows the language (via the #lang line-specified read-language) to provide a mode specification which, in turn, lets the language make arbitrary adjustments to the editor editing the definitions window. (No languages are using this yet, tho.) . Improved auto-parens mode behavior, e.g. typing a double quote in a string now works better. Thanks to Nadeem Abdul Hamid. . DrRacket now saves the font size and window position preferences on a per-monitor-configuration basis (so when you plugin your laptop to an external display, the font size will change to the size it last was on that display) . DrRacket now saves tabbing and square brack preferences is a defaults-sensitive manner, so that if the defaults get more entries, your DrRacket will pick up the new entries . An "info.rkt" spec for `textbook-pls' is appended with the results for `get-textbook-pls' to allow access to `string-constants'. The same is true for `drscheme-language-positions' and `get-drscheme-language-positions'. . The compile-enforce-module-constants parameter's initial value in The Racket Language is now configurable via the language dialog. . The autosave delay defaults to 30 seconds now (instead of 5 minutes, as before) . Bug fixes, notably esc;y (paste previously copied text) now works properly ------------------------------ Version 5.3.4 ------------------------------ . Check Syntax no longer calls the syncheck:add-id-set method (and thus neither the syncheck:add-rename-menu method). . Added a column width guide that defaults to 102 columns, but is also disabled by default ------------------------------ Version 5.3.3 ------------------------------ . added the ability to dynamically add new mixins to the DrRacket classes and to start up a REPL to evaluate expressions to change DrRacket's behavior. . added a simple "install package" tool via a menu . more improvements to DrRacket's responsiveness ------------------------------ Version 5.3.3 ------------------------------ . added esc;h key binding (to the interactions window) that shows the history of expressions evaluated ------------------------------ Version 5.3.2 ------------------------------ . fixed a flaw in interactions between the contour window and highlighting ------------------------------ Version 5.3.2 ------------------------------ . Removed 'Create Executable...' functionality from DrRacket, except in the "The Racket Language" (#lang-based) language and the teaching languages (HtDP and DMdA). . DrRacket is more responsive when editing . The language dialog has been revamped to encourage people even more to use the #lang language (unless they are using the teaching languages) . Automatic-parenthesis mode improvements (thanks to Nadeem Abdul Hamid) - Added some "smart-skip" behavior to insert-close-paren, described in the documentation. - When auto-parens mode is enabled, the existing "balance-parens" keybinding invokes insert-close-paren with a smart-skip argument of 'adjacent - A new "balance-parens-forward" keybinding invokes insert-close-paren with a smart-skip argument of 'forward (whether or not auto-parens mode is enabled) - Some basic smart-skip behavior is also enabled for strings ("...") and |...| pairs, specifically, typing a double-quote or bar character when the cursor immediately precedes one causes the cursor to simply skip over the existing one - Tweaked insertion of block comment pairs in auto-parens mode - In strings and line/block comments, auto-parens mode no longer has any effect (you can still use the M+.. keybindings to force insertion of a particular brace pair) - Detect when a character constant is being typed, and don't insert brace pairs if so . DrRacket's window can now be substantially narrower . DrRacket's frame preferences are now remembered on a per-montior-configuration basis and, if there is only one frame open, it will move itself around automatically when the monitor configuration changes . DrRacket's paren highlighting uses alpha-blending to avoid having the highlight disappear completely when completely inside an error. . Improved the log message gui ------------------------------ Version 5.3.1 ------------------------------ . Enable online check syntax by default (it has been available in the last two releases, but was disabled by default) . Check Syntax now shows the blue boxes from the documentation in the definitions window . Add a spell checker for string constants; use -shift-c to turn it off or on . Change the "Variables" pane of the debugger so that it does not do word-wrapping (this avoids some performance problems when very large values are rendered there) . Adjust the Install .plt File dialog so that it cleans up after the end of an installation (specifically, it shuts down the custodian that was running the installation process), which also causes the Abort button to be disabled. ------------------------------ Version 5.3 ------------------------------ . Added the Optimization Coach (see the 'View' menu) . Adjusted Check Syntax so that set!'d variables and contract obligations are now in tooltips . DrRacket's toolbar buttons now have numbers associated with them to control what order they appear in. . Ditto for the View menu items; also, cleaned up the View menu . The framework's color:text%'s token-sym->style init argument (also the same as the color:text%'s start-colorer method's argument of the same name) is a function that now might be passed 'white-space. . record errors coming from user language implementations via log-debug ------------------------------ Version 5.2.1 ------------------------------ . The keybindings window is no longer a modal dialog (and its contents will change to reflect where the keyboard focus currently is) . The initial current-directory for unsaved programs in DrRacket is now the user's home directory, instead of whatever the current-directory was for the underlying OS process. . The current-load-relative-directory is now set to #f initially in DrRacket (to better match what Racket does). . DrRacket no longer shows a stacktrace for syntax errors in the REPL. . The preference that makes a single "(" keystroke insert "()" (and similarly for [ { " and |) now only takes effect in Racket mode, instead of taking effect in all of the modes, as it used to. This change is in service to a bugfix that makes the automatic opening parentheses adjustment cooperate with the automatic balancing. . The scheme:text-mixin now requires input classes that implement the editor:keymap<%> interface. ------------------------------ Version 5.2 ------------------------------ . changed three menu keybindings: "New Tab" is now -t "Run" is now -r "Replace" is now -shift-f The Keyboard Shortcuts section in the manual has a sample keybindings file a checkbox that restores the old behavior of the first two. . Under Windows, DrRacket now saves files, in some situations, with LF terminators. Previously, under windows, all files were saved with CRLF terminators. Now, a file is saved with CRLF terminators when every line in the file ends with CRLF. In there is any one line that ends with just LF, then the file is saved with LF's for each line. Also, newly created files are also saved with LFs instead of CRLFs. There is a preference in the Edit|General preferences panel to go back to the behavior of previous versions of DrRacket. . added online expansion and check syntax . removed the "open here" functionality (both from the DrRacket app and from the framework library) . 2htdp/image: - shrunk the size of saved files that contain 2htdp/image bitmaps (you can get these by copying and pasting from the REPL; using "insert image" isn't affected) - use the pre-multiplied alphas when doing image comparsion - sped up rotation and flipping of bitmaps . improved the way the scribble-language buttons (render html and render pdf) work; they now basically do what 'Run' does, plus the extra work of rendering the document; before they had their own error handling and sandboxing code, which was less integrated with DrRacket . improved the preference handling for the frame's location (specifically for the multiple-monitors case) . check syntax no longer turns the module in the #lang line red . improved the handling of the 'Open Recent' menu item; specifically it discards duplicates in a smarter way. . adjust DrRacket to be more accomodating to hostile filesystems; specifically it no longer fails if it cannot read the preference system and it no longer writes anywhere to the filesystem during startup except the prefs (and if that fails, it survives in a less annoying manner) . DrRacket no longer locks the definitions text while evaluating the program (it makes a copy of the definitions text and uses that copy now) . cleaned up the Close/Close Window/Close Tab menu items to match the platform-specific conventions ------------------------------ Version 5.1.2 ------------------------------ . The EoPL language is no longer available via the Language dialog in DrRacket; use #lang eopl and the 'language declared in the source' language in DrRacket. . Minor bug fixes ------------------------------ Version 5.1.1 ------------------------------ . Removed the "DrScheme" compatability program. . Improved the speed of the module browser drawing . Added search to the standalone module browser window . Minor bug fixes ------------------------------ Version 5.1 ------------------------------ . same (the game) has a new scoring system and different graphics . Added image->color-list and color-list->bitmap to 2htdp/image . The "language in the source" language now automatically compiles more files (with the default options). Specifically, files that are in a collections directory are now compiled, unless they are the main system collection (as reported by (find-system-path 'collects-dir). . minor bug fixes ------------------------------ Version 5.0.1 ------------------------------ . Check Syntax now reports obligation information (via a new item in the "View" menu) . added file-horizontal and flip-vertical to 2htdp/image ------------------------------ Version 5.0 ------------------------------ . Scheme => Racket in many places . minor bug fixes ------------------------------ Version 4.2.5 ------------------------------ . a few more improvements to 2htdp/image . new language dialog, designed to encourage people to use the module language . the module browser shows the phases in which each module is invoked (in a new "long name" mode) . added alt-1 thru alt-9 as shortcuts to swap around between tabs ------------------------------ Version 4.2.4 ------------------------------ . the 2htdp/image library changed: - changed how equality works (it is now based on how the images draw, instead of on an underlying algebra of images) - added cropping and curves - overlay, beside, and above now line things up on centers, rather than upper lefts - added scene-related funtions (place-image, scene+line, etc) - added support for drawing with various kinds of pens ------------------------------ Version 4.2.3 ------------------------------ . minor bug fixes . added first draft of the 2htdp/image library ------------------------------ Version 4.2.2 ------------------------------ . DrScheme now (by default) automatically compiles your source files, saving them in the compiled/drscheme/ subdirectory. . Syntax coloring now works for languages using the @-reader (ie, Scribble) . The yellow message in the interactions window is now moved to be part of the DrScheme frame. . The module browser now shows the phases that each given module is invoked in. . Check Syntax colors set!'d variables in dark red. ------------------------------ Version 4.2.1 ------------------------------ . (Eli) The module browser used to treat any non-string require as "libraries", where they can all be hidden or not. Now this does not include requires from the same "package", where a package is defined as a toplevel collection or a planet collection. This means that requiring a file from your own collection is just as convenient to do (wrt the module browser) using the normal symbolic form. ------------------------------ Version 4.2 ------------------------------ . Minor bug fixes ------------------------------ Version 4.1.5 ------------------------------ . DrScheme now has a status line that shows what PLaneT is up to (in broad strokes) . Added logging support to DrScheme; it now monitors the logs via the "View | Show Log" menu item. . PLaneT now logs what it is doing at the 'info' level. ------------------------------ Version 4.1.4 ------------------------------ . got rid of drscheme:debug:profiling-enabled in favor of errortrace/errortrace-lib's profiling-enabled . minor bug fixes ------------------------------ Version 4.1.3 ------------------------------ . improved the way extensions are handled when saving files. . minor bug fixes ------------------------------ Version 4.1.2 ------------------------------ . contract library's function contract combinatiors now preserve tail recursion. . keybindings lang is now based on scheme, not mzscheme ------------------------------ Version 4.1 ------------------------------ . get-text-to-search is now a public-final method. Searching now works by the to-be-searched text notifying the frame (instead of the frame asking which text should be searched) so probably you can just remove the overridden method. . The optional arguments to highlight-range have changed. (If you did not supply any optional arguments you code works as before.) . removed edit-menu:find-again (& related) menu items changed edit-menu:replace-and-find-again to edit-menu:replace-and-find added a few edit-menu menu items as well. . removed from frame:searchable<%> interface: move-to-search-or-back, replace, toggle-search-focus move-to-search-or-reverse-search, and search-again . changed the is-hidden? method of frame:searchable to search-hidden? ------------------------------ Version 4.0.2 ------------------------------ . fixed a bug in profj that triggered bad behavior when planet packages were installed via drscheme ------------------------------ Version 4.0.1 ------------------------------ . fixed a bug so that user-defined teachpacks can now be added . fixed a bug in PLaneT ------------------------------ Version 4.0 ------------------------------ . renamed "(module ...)" language to "Module" . dropped "MzScheme" and "MrEd" as separate languages; try `#lang scheme/load' with the "Module" language . changed the "Pretty Big" and "R5RS" to assume by default that pre-defined names will not be redefined . renamed the get-special-menu method to get-insert-menu . drscheme:debug:show-backtrace-window now accepts srcloc structures. . removed help-desk:help-desk from the tools interface. Use the help collection instead. . removed drscheme:debug:show-error-and-highlight from the tools interface. Use drscheme:debug:error-display-handler/stacktrace instead. . current-print's behavior is different in DrScheme. It now prints to a separate port (the same on the REPL printer uses, namely with blue output) and the style of printing that it uses is controlled by the language dialog (which means that the `current-print' option is now gone from the language dialog) . drscheme:language:language-dialog and drscheme:language:fill-language-dialog no longer accepts the manuals? argument . The order-manuals method is gone. ------------------------------ Version 372 ------------------------------ . added auto-completion (only gets completions from the documentation, not the lexical context). . minor bug fixes ------------------------------ Version 371 ------------------------------ . bug fixes from 370p1 & 370p2, plus misc other small bugfixes ------------------------------ Version 370 ------------------------------ . changed teachpack support so that it is now language-specific and languages no longer support teachpacks by default. . interface changes, related to teachpacks: . create-executable method in drscheme:language:language<%> no longer takes the teachpack argument . the get-init-code in drscheme:language:simple-module-based-language no longer accepts teachpacks as an argument. . got rid of all drscheme:teachpack names . front-end/complete-program and front-end/interaction no longer accept a teachpack argument . changed image.ss teachpack so that it accepts both exact an inexact numbers (not just exact integers) for a number of the primitives (it floors the numbers). . changed the save format for color preferences. Due to a bug in earlier versions, this means that color preferences saved in earlier versions of DrScheme will not be copied forward to this version. These functions are renamed: color-prefs:marshall-style => color-prefs:marshall-style-delta color-prefs:unmarshall-style => color-prefs:unmarshall-style-delta color-prefs:register-color-pref => color-prefs:register-color-preference If you used those functions before, do not use the new ones with the same preference symbol as you used in old versions, or else the old version of your app (or drscheme) will fail to start up. . changed the frame:editor-mixin, frame:text-mixin and frame:pasteboard-mixin slightly so that one can supply the editor class as an initialization argument (overriding the get-editor% method still works, but now that method defaults to the initialization argument) . added an extra, mandatory argument to calc-button-sizes and draw-button-label in mrlib's name-message.ss. Use small-control-font to get the old behavior. . added a new, optional, argument to the initializer of name-message%. . The teaching languages now add a #reader wrapper to saved files. Although the content of the file, when viewed in drscheme, does not change, this does mean that drscheme "remembers" which language was used for each file, even if you change languages when editing other files. . added get-reader-module, get-metadata, metadata->settings, and get-metadata-lines methods to the drscheme:language:language<%> interface . the framework preferences library now saves prefs each time any one of them is changed, and works better when multiple apps are both using the library. As a consequence of this, preferences:save is no longer in the library. Just remove any calls to it and your code should work fine. . split the preferences library out from the framework, so it does not have to depend on mred . removed (from the framework): exn:struct:exn, exn:make-exn, and exn:exn? . added preferences:restore-prefs-snapshot, preferences:get-prefs-snapshot, and preferences:snaphot? ------------------------------ Version 353 ------------------------------ . right clicking on the line/column offset display in the bottom part of drscheme's window lets you toggle between character offsets (from the beginning of the buffer) and line/column counts. . user-defined keybindings can now be loaded directly from PLaneT, via a new menu item in the Edit menu. . the keybindings now have access to the same stuff as the tools, via the require line: (require (lib "tool-lib.ss" "drscheme")) . in the non-debug languages, drscheme now trims its own stack frames from the top of the stack before showing them in the REPL. . the get-language-numbers method in drscheme:language:language<%> now requires its results to be completely unique, wrt to other languages (until now, the last number didn't have to be unique) ------------------------------ Version 351 ------------------------------ . the or/c contract now accepts multiple higher-order contracts, as long as they can be distinguished by some first-order property (for example, the arity of the function). . failures of the first-order aspects of contracts are now checked in the module that provides, not just the requiring module. This means that this module: (module m mzscheme (require (lib "contract.ss")) (provide/contact [f (-> integer? integer?)]) (define (f x y) x)) will signal an error as soon as it is required, rather than waiting for a variable reference to `f' (as it used to). . rewrote some of the internals of the contract library to get a factor of 2 speedup for tight loops that do a lot of contract checking (FWIW, I had introduced this slowdown a few months ago in an attempt to optimize ...) ------------------------------ Version 350 ------------------------------ [ The top three in this list were in 350, but weren't listed in the release notes at the time of the release. oops. ] . contract-violation->string parameter: now takes one fewer argument. It is no longer passed the `other-party'. Similarly, raise-contract-error no longer accepts the other party argument. . added one-of/c to contract library . remap [ to be ``smart'' (ie often but not always change the square bracket to a paren) . Added two new keybindings to DrScheme (in Scheme mode): c-c; c-o move-sexp-out: the sexpression following the insertion point is put in place of its containing sexpression. c-c; c-l insert-let-binding: wraps a let around the sexpression following the insertion point and puts a printf in at that point (useful for debugging) . Case-insensitivity is now available in DrScheme's search box, courtesy of Jens Axel Sogaard. Thanks! . The image.ss teachpack now uses smoothed images. . drscheme-language-positions and drscheme-language-readers now allows relative paths for language module specifications. . Added `this', implicitly bound in ->r and ->pp contracts when used inside `object-contract' . union is now deprecated in favor of or/c. It's the same combinator, but it matches other names in the contract library. . Added `this', implicitly bound in ->r and ->pp contracts when used inside `object-contract' . Help Desk's font size is now independently configurable (from Drscheme's font size). . Help Desk no longer asks about non-http urls; it always just ships them off to the OS to handle. . Various url struct changes to fix bugs related to mailto: url handling and handling of multiple params in a path segment. . the scheme and host are now always lowercased by string->url . the library no longer adds an empty path to the end of urls like "http://www.drscheme.org", meaning that the url-path can sometimes now be an empty list (the contract always allowed this, but it didn't happen before). . added path-absolute? field to url struct, following rfc 3986's nomenclature -- when #t, it means the path portion of the url began with a slash and when #f it means that it didn't. . more care is taken when quoting path portions of the url and when turning urls into strings . path segments are now always path/param structs and the param part of a path/param struct is now a list of strings . add 'up and 'same as possible path segments (in the path field of a path/param struct), in addition to strings (as before). ------------------------------ Version 300 ------------------------------ - Added support for user-definable keybindings. See the new menus at the bottom of the Edit menu (and their documentation) for details. - DrScheme's background color for the definitions and interactions window is now configurable. - The regular expression language for the lexer has changed. See doc.txt in the parser-tools collection. (This isn't a DrScheme change per se.) - Check syntax can (when using modules) go to the definition site of an imported variable. - the PLTDRDEBUG environment variable now works much better. Thanks to improvements in cm, setting it now builds .zos with errortrace and should make porting tools to v300 much easier. - set the PLTDRBREAK environment variable to get a window with two buttons that are useful for debugging deadlocks & infinite loops. The buttons break drscheme's eventspace's main thread and all threads started by drscheme (and tools) resp. Useful in combination with PLTDRDEBUG - tool & framework interface changes: . remove exn:locs; this functionality is now in mzscheme itself. . removed drscheme:unit:make-bitmap. Use (lib "bitmap-label.ss" "mrlib") instead. . contract name changes (overall, removed all of the /f, /p, and ? suffixes in favor of the /c suffix) not/f => not/c box/p => box/c cons/p => cons/c vector/p => vector/c list/p => list/c any? => any/c printable? => printable/c false? => false/c natural-number? => natural-number/c . The framework still probhits editing of files that are read-only, but rather than using the editor<%>'s lock method, it overrides can-insert? and can-delete? in text%. Accordingly, several and interfaces are now gone and the functionality has moved into existing mixins. These are now gone: frame:file<%> frame:file-mixin frame:text-info-file% . can-close? in editor:basic is now an augmentable method. . render-value and render-value/format no longer take the put-snip argument. Use write-special on the port instead. . order-manuals in drscheme:tool:language-configuration<%> now accepts (and returns) lists of bytes, not lists of strings. . front-end/complete-program and front-end/interaction methods now accept a port, instead of an `input'. . added an extra argument to create-executable in drscheme:language:language<%> and get-init-code in drscheme:language:module-based-language<%> - errortrace internal interface has changed (see docs for details) - added ->r contract combinator ------------------------------ Version 209 ------------------------------ * Several small errors in the ProfessorJ compiler have been corrected. Additionally, the native method interface has been updated to provide more access to class members by the native method. * The interfaces and implementations for several HtDP and HtDCH teachpacks have changed: + the World class for HtDCH now supplies 'draw' and 'erase' methods + its event callbacks are guaranteed to call erase before and draw after handling a tick or keyboard event + the world.ss teachpack provides a nw:rectangle function for creating rectangles whose pinhole is in the northwest corner. * Oleg Kiselyov's SSAX/SXML is included in the distribution. The SSAX/SXML libraries provides functions for reading, writing and manipulating XML data. In addition, the package supports the definition of XML languages and exports machinery for transforming XML documents based on concise specifications. SSAX/SXML is the foundation for a variety of other XML packages in Scheme. For more information, see http://ssax.sourceforge.net/ and the documentation in the "ssax" collection. * Swindle is now included and maintained with PLT Scheme. Swindle is an extension of PLT Scheme. The main feature is a CLOS-like object system based on Tiny-CLOS from Xerox. Additional syntactic extensions include: :keyword values and optional CL-style argument lists; syntactic sugar for `define's and `let's; generic `set!'; `defsubst' & `letsubst' for defining simple macros, `letsyntax', `letsubst' and `letmacro' than can bind identifier macros; a list-comprehension macro `list-of' with an extensive generic version `collect'; an `echo' mechanism for complex output formatting including list iterations; customizing printings via a `print-object' generic; `amb', adopted from Dorai's TYSiFD, and more. Like Scheme in DrScheme, Swindle has several language levels. It is also possible to use its features on a selective basis. Those extensions that are not directly related to Tiny CLOS are likely to migrate into MzLib. ------------------------------ Version 207 ------------------------------ - Wizards for ProfessorJ added + union wizard + class wizard ------------------------------ Version 206p1 ------------------------------ - Check Syntax disabled in professorJ languages. ------------------------------ Version 206 ------------------------------ - Help Desk searching is now language-sensitive. - Check syntax is now integrated (better) with the syntax colorer. - Check Syntax now distinguishes between require'd and locally defined identifiers. - added the ability to specify a command-line to the module language. - Help Desk's status messages are now in the frame and its break button is also in the frame (no more modal dialog) - Check Syntax now does a better job of navigating amoung occurrences of a single variable. The popup menu lets you go from a bound occurrence to a binding occurrence and from a binding occurrence to the next binding occurrence. Also added two keystrokes: c-x;n to go to the next bound occurrence and c-x;b to to the binding occurrence. - show menu => view menu, added show/hide for the toolbar - multi file search works much better ------------------------------ Version 205 ------------------------------ - the teaching languages color the portion of the program that has not been tested in dark red (using a simple syntactic coverage criterion -- dark red means untested, but not dark red doesn't mean fully tested, of course). - added a test coverage annotation for other languages in the "details" portion of the languages dialog; run the program and it colors the code that was executed in green and code that wasn't executed in red. - fixed up help desk fonts, so that the font size in help desk is now linked to the font size in drscheme proper. - added support for editor modes to drscheme. - drscheme shows the stack via arrows on the program text when an error occurs (and debugging is on) - added to special menu item: "insert delta" (to mean define) in parallel to the insert lambda menu item. - framework's scheme-mode font changed to be in an editor mixin. - macos: drscheme doesn't quit when all windows are closed anymore. ------------------------------ Version 204 ------------------------------ - contract -> supports multiple values using this syntax: (-> integer? (values integer? integer?)) - parenthesis highlight color is now configurable - integrated the module browser into the main drscheme window. Use the show menu to open a panel on the lhs of the drscheme window containing a DAG representing the modules that are required (only works for programs in modules). - integrated Bruce Hauman's rewrite of the match.ss library (ongoing). - added arrows to check syntax that show the (syntactic) tail structure of the program. - fixed many many problems with Help Desk. Some of the more interesting ones: - manual downloading now works. - bug report form is a mred window now. - doc.txt highlighting is in the right place now - doc.txt search restults now go to the right place - servlets are now modules (with no more free vars) - browser menus work properly - urls outside of our documentation use an external browser - eliminated many (now unecessary) redirections - various responsiveness improvements - help desk as a standalone web server isn't supported anymore. - added a status line class to the framework, which is used for check syntax and the module browser. both show status as the check the program and show information on mouse-over. Also, the contour window shows you the line under the mouse in a status line on mouse over. - added an extra level of hierarchy to the language dialog, but without the turn-down triangles. this helps organize the language dialog somewhat. - the top level function declarations in algol60 are now available in the REPL and in the test suite tool - Removed `Windows' menu from windows and unix versions. - Windows installer generates Program menu shortcuts for all users ------------------------------ Version 203 ------------------------------ GENERAL ------- - added test suite support for use with the How to Design Programs - added support for recovering autosave files when DrScheme crashes - the draw.ss teachpack now provides the function get-key-event : -> Key This function enables programmers who use the draw.ss teachpack to write interactive drawing games. Warning: The function fails intermittently on Mac OS X. We intend to fix this problem in a future release. - Help Desk users can choose whether they wish to use a frame-based version. A toggle switch for this choice (in the form of a link) appears on the Help Desk home page. It can also be changed in the Help Desk configuration. - Help Desk users can once again use the PLT internal browser; look for the browser preference in DrScheme's preferences panel - removed an error in MrEd for Windows that was a frequent source of instability ------------------------------ Version 202 ------------------------------ GENERAL ------- - improved the comment boxes - interaction between Help Desk and the external browser should be much better ------------------------------ Version 201 ------------------------------ GENERAL ------- - many misc bug fixes - improved the create executable interface - got rid of the "text box" and added in "comment" boxes. commenting out code now uses those comment boxes. - Help Desk now uses an external browser FRAMEWORK AND TOOLS ------------------- - contracts have moved from (lib "specs.ss" "framework") to (lib "contracts.ss") - The create-executable method of drscheme:language:language<%> has changed. It no longer receives the filename for the executable; instead the method must prompt the user. See either `drscheme:language:put-executable-file' or `drscheme:language:create-executable-gui' for two methods of getting a filename from the user. ------------------------------ Version 200 ------------------------------ THINGS MISSING (as compared to 103) - project manager (use `module' instead) GENERAL - added profiling support. DrScheme colors your program text based on the time spent in each portion of the code. - Added support for other natural languages for DrScheme's GUI. French and Spanish are most up to date; German and Danish are also included (but incomplete). - added a module browser for seeing the entire program and dependencies among modules in a single window. - added XML boxes (a quasi-quote/unquote feature for XML using embedded editors). See the DrScheme manual for details. - added a code ``contour'' window that is visible along the rhs of the drscheme window. Use the `show' menu to make it visible. - drscheme's new version window is now a modified version of the language dialog - the language settings are now frame-specific. If you change the language in one window, it won't affect execute in another window; the most recently set language is what is used for newly created windows. - added "Open recent" menu item - added a preference called "Reuse existing DrScheme frame" that, when opening new files, causes DrScheme to replace the existing frame. - bug reports now go to the new bugs.plt-scheme.org server (and to bugs@plt-scheme.org) - error messages output improved - added a mechanism for collapsing and expanding sexpressions to drscheme. right-click to collapse the enclosing sexpression to something like (...) and right click on that to expand it back to the previous text. - added an emacs-like c-x c-b feature to drscheme. Type -j to popup a window of the open frames and choose one without using the mouse by typing. - added -minus and -plus as shortcuts to move to the next and previous menus - The enter key now submits the interaction in the REPL, even if the cursor isn't at the end of a sexpression. - It is possible to switch the interface language of DrSheme's GUI. The mechanism is in place, in any case. The translations aren't yet, so you probably don't want to try to switch. Also, you will see funny warnings when starting up DrScheme to that effect. Ignore them unless you are working on the translation. - drscheme constructor and quasiquote printers now shows syntax's structure, and module-path-index structure. - DrScheme's quasiquote printer now works a little bit better for expressions like '('a 'a). It used to show `((,'quote a) (,'quote a)), but now it shows `('a 'a). - The portion of space between the definitions and interactions window is now interactively changeable. - the bug report form now connects to bugs.drscheme.org instead of cs.rice.edu directly, so earthlink users should be able to submit PRs via Help Desk. - adding splitting of the definitions and interactions canvases, to be able to see two different parts of the buffer simultaneously - when saving or executing, if the file has been overwritten in the filesystem, drscheme prompts you to make sure you want to overwrite or execute the file. - added Teach Youself Scheme in Fixnum Days to DrScheme's documentation. - implicit sequencing has been eliminated from the advanced language level in order to give better error messages. Use an explicit `begin' for sequencing. (this change was made between 102 and 103, but we forgot to put it into the release notes) - teachpacks finally support macro definitions. - there is now a little eof icon next to the input box when input is expected. you can click it send an eof. It closes the input port until execute is next clicked. - many minor improvements to the Help Desk html renderer. - the filename button (in the top right of the drs frame) now pops up a menu of the directories that contain the saved file's directories. Choose one to open a `get-file' dialog in that directory. - (without checking the syntax) the right click context-sensitive menu has an entry to search based either on the selection, or on the text that was clicked on. - DrScheme now prints exact real numbers as graphical fractions (instead of the (+ 1 1/2) notation). These are also valid as input, but you have to copy and paste to get them into your program. - Added an "insert fraction" menu item to the edit menu for inserting fractions directly into the program. FRAMEWORK and TOOLS ------------------- - added HO function contracts. - it is now possible to add languages to DrScheme, as tools. - changed many filenames to match the new -unit.ss, and -sig.ss convention instead of the old r.ss and s.ss convention. - changed guiutils.ss to gui-utils.ss in framework collection. - tools are now specified in info.ss files in top-level collections, rather than in a subcollection of the drscheme collection (see the tools manual for details). - added gui-utils:alphabetic-list-box% to framework - added `expand-program' to tools interface for tools that process program text. - exit:exit and exit:can-exit? now accept optional booleans that specify if the user should be asked about quitting. - the splash screen now only allows a single splash screen (per namespace). Version 103: General ------- - typing characters in to the definitions and interactions window should be more responsive now (it was noticeably slow on slower machines) - files added to projects are now stored as relative files, by default. (use project menu to change the default) - project files are saved using a platform-independent syntax for paths now. - Using file|open and choosing a project file (based on contents) will open the project file. (this only will work with project files saved in this version -- old project files won't be recognized until they are saved once.) - Opening or a .plt file will install the .plt file, after querying the user. - added break button to project windows (does the same thing as the break menu item always did) - added save button and little "full name" thingy to project frames - DrScheme permits the use of "." (period) as an identifier in the student language levels. - implicit sequencing has been eliminated from the advanced language level in order to give better error messages. Use an explicit `begin' for sequencing. Version 102: General ------- - the help desk language level specific documentation has been integrated into drscheme. - errortrace-like facility is now available in drscheme debug language levels. Click on the bug next to an error message to see a trace of the continuation of the error. - drscheme-jr now supports teachpacks (those that don't use GUIs, like htdp/dir.ss) - launchers can now be run from any directory. They do not need to be saved in a particular place (this has been true for some time, but it is officially true now.). - the debug full scheme languages now allow loading of files that contain graphics. - #! is treated like a comment when executing the defintions window, if it is the first two characters in the definitions window. - rarely used save menu items relegated to sub-menu. - added a "keymap" menu to the edit menu (shortcut: k) that opens a window where you can see all of the key bindings' names and short cuts, and you can choose one to invoke. - added a "Kill" menu item that kills all computation and reclaims all resources from the program that drscheme is executing. This is useful for multi-threaded apps that get out of hand. - meta-control-d, meta-control-u, meta-shift-control-d, meta-shift-control-u keybindings all restored. - drscheme now has a little button on the bar that lets you hop around between definitions in the program. It is approximate in that it doesn't really know every detail about the lexical structure of scheme, but it should still be quite useful. - interactions window now shows the names of the teachpacks that were installed at last execute. - drscheme now allows multiple teachpacks. - teachpack names are not in the area with the execute button, instead they are now shown in the language menu. - repl errors that are in some loaded file have little clickable icons that open the file and show the error's source location in the file. - Only the platform-specific dialogs are used in drscheme now, on all platforms. The preference has been removed from the dialog. - project files are `load'able. That is, if you have the right language settings, you can do mzscheme -qmvr myproj.proj and have the same effect as clicking execute on the project window. For mred, you will need to do something like this: mred -qmvr myproj.proj -e "(yield (make-semaphore 0))" so that mred doesn't quit automatically. - Help Desk now has a "feeling lucky" option ala google (menu shortcut: l). It goes directly to the first item that would have been found in a regular search. - Clicking on an error message link in drscheme now uses the "feeling lucky" style search in help desk. - clicking on the name in the topleft of the drscheme frame opens a little window with the full path. - check syntax now shows its syntax errors in a separate window. - the teaching languages now come with: make-posn, posn-x, posn-y, and posn? by default (no library required). - teaching levels print exact numbers whose denominators are evenly disivible by 2 and 5 as decimals. - teaching levels treat input decimals as exact numbers. - in the main help-desk window, space does pgdn and backspace does pgup, ala netscape. Also, typing return or enter while the cursor is on a link follows the link. - added class/d macro. It's syntax is like that for a unit, but it defines a class. Roughly: (class/d super-expresion init-args ((public var ...) (override var ...) (inherit var ...) (rename (var var) ...)) definitions-and-expressions ...) This a new part of macro.ss in the mzlib library Tools and Framework ------------------- - drscheme:rep:process-text/zodiac and drscheme:rep:process-text/no-zodiac are now called drscheme:load-handler:process-text/zodiac and drscheme:load-handler:process-text/no-zodiac. - added a slew of -on-demand methods to frame:standard-menus-mixin - the framework now imports a definition of the preferences file location. Use this to have a separate preferences file for each different application. - do not use 'drscheme:settings anymore to get the current language settings from drscheme. Now, use drscheme:language:settings-preferences-symbol (which is bound to the right symbol) instead. - setup plt's ``clean'' info.ss flag does not recur into subdirectories anymore. - the graphics library (sometimes known as sixlib) no longer accepts any scaling arguments. - the framework's preferences system now requires you to set the marshall/unmarshalling functions (if any) before setting the default preference. - drscheme now supports site-specific default preferences. To use, create a file prefs.ss in the defaults collection that is a copy of the preferences file that you want to be the defaults. Then, if the user-specific preferences file doesn't exist (or the preferences in it are from an old version), the contents of the prefs.ss file in the defaults collection is used as the preferences. - drscheme now wraps uses with-handlers so that if a tool signals an error when it is loaded or invoked, it just puts a window with the error message and continues, instead of keeping drscheme from starting up. - the .plt installer no longer automatically deletes compiled files when installing a .plt file. - setup-plt now uses the 'clean flag in info.ss to determine the files to be deleted when --clean-ing a collection. It defaults to the files in the "compiled" sub-collection of a collection. - setup-plt no longer automatically runs --clean when installing a .plt file. - framework: - added canonicalize-keybinding-string - added aug-keymap%, aug-keymap<%> - editor:basic now sets its keymap to an aug-keymap<%> during initialization. - the framework's info frame mixins no longer require frame:editor<%> as an input. Also, they are moved lower in the hierarchy of the instantiated mixin classes in the framework. This affects all of the frame:XX% classes. tools: - ensure-interactions-shown is now ensure-rep-shown - do-many-buffer-evals is now do-many-text-evals - clever-file-format now symmetrically changes the file's format to 'standard. It used to rever the file format to 'text when there were no more images in it. Now, it also changes back to non-'text when images (and other non-string-snips) are added back. - the framework's gui-utils:get-snips/chars-from-buffer is now gui-utils:get-snips/chars-from-text - zodiac now supports graphical expressions. If a snip implements zodiac's expand<%> interface, zodiac calls a method of the snip to expand it. - the drscheme:get/extend:extend-* functions no longer haver %s at the end of their names. PRS --- 1507: thread error freezes repl 1506: Help Desk exits gracelessly when interrupted 1503: Launcher prints debug info 1502: (define's hard to find 1499: text mode display auto-wraps 1490: alt-tduring execution has different binding 1484: cannot paste in search box on macos 1480: default launcher name is "Save A Launcher" 1478: parity reversed in Dr Jr command line flag 1461: Kill menu problems 1460: Help Desk has empty preferences 1459: search menu items work on empty search text 1456: teachpacks don't add 1455: project windows never leave `Windows' menu 1437: 1428: setup -c deletes files for all platforms 1424: long (list ...) displays don't display correctly 1405: memory usage box should be read only 1398: Downloading doc files requires restart 1377: replacing by empty string loops 1341: 1334: 1330: killing repl, then check-syntax hangs 1306: 1297: 1235: 1171: 1144: match docs not setup right in Help Desk 737: mred:preferences library too global 599: mac: can't double click to open files while mred starts up 406: bad error message for sixlib op 1274, 1280, 1264, 1260, 1239, 1225, 1220, 1268, 1209, 1208, 1196, 1180, 1096, 1088, 1043, 771, 752, 846 1358, 1344, 1341, 1329, 1322, 1242 (docs not yet built), 1235 Version 101: General ------- - The teaching libraries are now called teachpacks. See the teachpack release notes for more information. - DrScheme's languages have changed (again). The languages are now: - Beginning Student - Intermediate Student - Advanced Student - Full Scheme, which contains: - Graphical Full Scheme (with and without debugging), and - Textual Full Scheme (with and without debugging) - Help Desk now supports bug report submissions. Please use it in favor of the web based form. To submit a bug, follow the "Sumbit a Bug" link near the bottom of Help Desk's front page - On European keyboards, the backslash character may not work properly in DrScheme. If you experience this problem, comment out this line: (map-meta "\\" "remove-space") in PLTHOME/collects/framework/keymap.ss. - For tools, invoke-library is now called invoke-teachpack. - Renamed two files in the graphics collection: graphic.ss is now graphics.ss graphics.ss is now graphicss.ss - DrScheme's print menu now inserts the time, date and filename in the header of the file to be printed. - comment/uncomment is improved. Now, it blindly adds a semicolon to the front of each line (and doesn't add extra semicolons on following lines) and aways removes one semicolon (if present) from the front of each line. - Parenthesis highlighting now turns unmatched parens red in addition to turning matched parenthesis regions grey. Also (now that the caret flashes) if the caret is between two parens, both before and after parens will be highlighted, not just the ones before. Thus, every time the cursor is next to an uncommented paren, the programmer sees some feedback about the paren. Version 100: General ------- - DrScheme's languages have changed. The new languages are: - Beginner - Intermediate - Advanced - MzScheme - MrEd The first three languages are essentially the same as in version 53, except that graphics primitives have been removed. (Instead, domain-specific graphics commands can be loaded as libraries.) The turtles remain in the advanced language. The MzScheme and MrEd languages match exactly the languages provided by the MzScheme and MrEd executables. - A simple algebraic stepper, dubbed The Foot, is now available. The Foot permits users to construct a source-level evaluation trace for programs written in the Beginner language. It will be expanded in future releases. - DrScheme's Help Desk provides online help for DrScheme, its languages, and its libraries. - Graphics functions were removed from the teaching languages (Beginner, Intermediate, and Advanced), except Turtles in Advanced. To use graphics functions, you must select a library (and the teaching libraries are not yet updated). - The old viewport-based graphics library can be loaded into the MrEd Debug language via (require-library "graphic.ss" "graphics"). - I/O within DrScheme is substantially improved. - The library and tool interfaces for extended DrScheme have changed. Version 53: General ------- - view menu items now have accelerators - (<= exp) isn't allowed in beginner. (same for <, >, and >=) - print primitive is now setup correctly to print based on the language level - paren-matching in semi-colon comments is disabled - info panel "running" message is now aligned correctly - The check synatax and analyze buttons are now disabled during evaluation - library directory now starts in "MZLIB_COLLECTS_DIR/../../lib" which is our best approximation to "PLTHOME/lib" - elevator library can now select more than one floor at a time Version 52: General ------- - The words "running" or "not running" at the bottom of the DrScheme frame indicate whether or not work is happening in the user's program. - a "Windows" menu has been added which keeps track of the currently open drscheme windows. - the source locations for "load"ed files now match the numbers in the bottom of the drscheme window. - the thread that evaluations (including execution) take place on is the same as the eventspace's main thread, unless the evaluation thread is killed. In that case, the eventspace's main thread is re-generated, but the execution thread does not. - The REPL implementation has been cleaned up. - the turtles window does not survive across executions anymore - the Quasi-R4RS language level has been renamed to R4RS+ DrScheme Tools/Libraries ------------------------ - new methods on rep:edit%: report-exception-error accepts an exception and prints the error message in the console. - send-scheme is outdated. Use run-in-evaluation-thread instead - the drscheme:tool^ signature has changed. A new subunit, "basis" has been aded and the process-finish struct is now in that subunit. So, drscheme:language:process-finish? becomes drscheme:basis:process-finish?, etc. The process-finish structure no longer has a boolean indicating sucess. Instead, an exception is raised. - the settings for the language have been re-aranged - there are two new parameters, exported from the basis subunit of drscheme:export^, current-setting and current-vocabulary - current-vocabulary contains the vocabulary that zodiac uses to perform macro expansion - current-setting is bound to a setting struct, which encapsulates all of the information about the language level - the process-*/zodiac and process-*/no-zodiac proceudres are no longer methods and their arguments have changed Version 51: General ------- - fixed error message for "eq?" and "cons" at beginner level. - check syntax does not work with an unitialized repl when: the source contains define-macro. (won't be fixed in the release) - eval no longer loops forever in mred vocabulary - searching keybindings have changed. There are four distinct actions: action1: move keyboard focus to the searching window, opening it if necessary, or if already there search forward action2: move keyboard focus to the searching window, opening it if necessary, or if already there search backward. action3: search again, in the same direction action4: move the focus between the main window, searching window and replacment window action5: hide the searching window The actions are mapped to different keys, based on the platform. On unix: action1 => control-s, meta-% action2 => control-r action3 => f3 action4 => control-i action5 => control-g On the macintosh: action1 => command-f action2 => command-r action3 => command-g action4 => command-o action5 => command-. On windows: action1 => control-f action2 => control-r action3 => f3, control-g action4 => control-i action5 => escape - turned off the file name printouts on splash screen evaluate: (wx:write-resource "mred" "splashMessages" 1 (wx:find-path 'setup-file)) to turn them back on. - fixed a bug that caused error messages to be displayed in message boxes more often than neccessary. (as opposed to printing in the repl) - parenthesis matching is improved - The empty list is now called "empty" instead of "null" with the constructor style printer. - The analyze button puts up a dialog saying "please wait, loading", now. - the fonts dialog now shows previews of the selected fonts. You still need to restart to see the changes, unfortunately. DrScheme Tools/Libraries ------------------------ - tools must now import wx names explicitly, as a new first import. - the parameters interface has changed. Instead getting and setting the class, the tool programmer must register a function that accepts a class and returns a class. See the manual for more details. - process/zodiac-finish has been renamed to process-finish