tag:github.com,2008:https://github.com/OrangeToque/racket/releasesRelease notes from racket2014-11-04T14:52:36Ztag:github.com,2008:Repository/28166794/v6.1.12014-11-04T14:52:36ZRacket v6.1.1<ul>
<li>
<p>The MAC OS X YOSEMITE compatibility problems are fixed. We<br>
bundled a patched Pango text-drawing library with Racket.</p>
</li>
<li>
<p>The WINDOWS [32-bit] releases fixes the window-update crashes.<br>
We bundled a patched Cairo drawing library with Racket.</p>
</li>
<li>
<p>TYPED RACKET closes two safety holes in the exception system.<br>
The revised type system restricts <code>raise' to send only instances of the </code>exn' structure type and flat data to<br>
handlers. It also checks exception handlers properly.<br>
NOTE: Previously well-typed programs may fail to typecheck.</p>
</li>
<li>
<p>TYPED RACKET'S typed regions support casts and predicates.</p>
</li>
<li>
<p>2HTDP/IMAGE'S notion of equality ignores an image's baseline.</p>
</li>
<li>
<p>The PACKAGE MANAGER supports a binary library installation mode,<br>
which allows users to install packages without source or documentation.<br>
Use the <code>--binary-lib' option with </code>raco pkg install'.</p>
</li>
<li>
<p>The new DRRACKET-TOOL-LIB package factors out parts of DrRacket's<br>
IDE so that they can be reused with other editors, such as Emacs.</p>
</li>
<li>
<p>The COMPILER'S use-before-defined analysis has been repaired for<br>
certain forms of nested <code>letrec', some </code>let' forms, and some<br>
uses of <code>set!' or </code>with-continuation-mark'.</p>
</li>
<li>
<p>The COMPILER performs additional bytecode optimizations.<br>
Thanks to Gustavo Massaccesi.</p>
</li>
<li>
<p>The CML library comes with a new `replace-evt' event constructor.<br>
Thanks to Jan Dvořák.</p>
</li>
<li>
<p>REDEX'S benchmark suite comes with a description of the benchmark<br>
programs.</p>
</li>
<li>
<p>REDEX'S metafunctions can be typeset using the "large left brace"<br>
notation for conditionals.</p>
</li>
<li>
<p>The CONTRACT library comes with an improved `contract-stronger?'.<br>
Its error messages note that the contract itself might be wrong.</p>
</li>
<li>
<p>The GUI library is DPI-aware on Windows.</p>
</li>
<li>
<p>The OPENSSL library supports Server Name Indication for servers.<br>
Thanks to Jay Kominek.</p>
</li>
<li>
<p>The SYNTAX/PARSE library allows the definition of new pattern<br>
forms via pattern expanders, similar to match expanders.<br>
Thanks to Alex Knauth.</p>
</li>
<li>
<p>OpenGL on Linux no longer depends on libgtkgl, and core profiles<br>
are supported (see `set-legacy?').</p>
</li>
<li>
<p>The TEACHING LANGUAGES' unit test framework supports<br>
`check-satisfied', a construct for checking whether a result<br>
satisfies a predicate, e.g.: (check-satisfied (sort l) sorted?)</p>
</li>
</ul>rmculpeppertag:github.com,2008:Repository/28166794/v6.12014-08-02T17:51:28ZRacket v6.1<p>The MAJOR INNOVATION concerns local recursive variable definitions.<br>
Instead of initializing variables with an `undefined' value, Racket<br>
raises an exception when such a variable is used before its definition.<br>
(Thanks to Claire Alvis for adapting Dybvig's "Fixing Letrec" work.)</p>
<p>Since programs are rarely intended to produce #, raising an<br>
exception provides early and improved feedback. Module-level variables<br>
have always triggered such an exception when used too early, and this<br>
change finally gives local bindings --- including class fields --- the<br>
same meaning.</p>
<p>This change is backwards-incompatible with prior releases of Racket.<br>
Aside from exposing a few bugs, the change will mainly affect programs<br>
that include</p>
<p>(define undefined (letrec ([x x]) x))</p>
<p>to obtain the # value. In its stead, Racket provides the same<br>
value via the `racket/undefined' library (which was introduced in the<br>
previous release). Programmers are encouraged to use it in place of the<br>
pattern above to obtain the "undefined" value.</p>
<p>The release also includes the following SMALL CHANGES:</p>
<ul>
<li>
<p>PLUMBERS generalize the flush-on-exit capability of primitive output<br>
ports to enable arbitrary flushing actions and to give programmers<br>
control over the timing of flushes (i.e., a composable <code>atexit'). New functions include </code>current-plumber', <code>plumber-add-flush!', and </code>plumber-flush-all'.</p>
</li>
<li>
<p>CONTRACTS: the contract system's random testing facility has been<br>
strengthened so that it can easily find simple mistakes in contracted<br>
data structure implementations (e.g. an accidental reverse of a<br>
conditional in a heap invariant check).</p>
</li>
<li>
<p>REDEX: the semantics of mis-match patterns (variables followed by <em>!</em>)<br>
inside ellipses has changed in a backwards-incompatible way. This<br>
change simplifies the patterns' semantics and increases the usefulness<br>
of these patterns.</p>
</li>
<li>
<p>TEACHING LANGUAGES: `check-random' is an addition to the preferred<br>
unit testing framework in the teaching languages. It enables the<br>
testing of students' functions that use random-number<br>
generation. (Thanks to David Van Horn (UMaryland) for proposing this<br>
idea.)</p>
</li>
<li>
<p>Upgraded and normalized versions of GRAPHICS LIBRARIES and<br>
dependencies (Pango, Cairo, GLib, etc.) that are bundled with Racket<br>
on Windows and Mac OS X. For example, FreeType support is consistently<br>
enabled.</p>
</li>
<li>
<p>TYPED RACKET: its standard library includes contracted exports from<br>
the Racket standard library, such as the formatting combinators of<br>
<code>racket/format'. It also supports Racket's asynchronous channels; see the </code>typed/racket/async-channel' library.</p>
</li>
<li>
<p>SSL: The openssl library supports forward secrecy via DHE and ECDHE<br>
cipher suites (thanks to Edward Lee) and Server Name Indication<br>
(thanks to Jay Kominek).</p>
</li>
<li>
<p>The <code>mzlib/class100' library has been REMOVED. Use </code>racket/class'<br>
instead.</p>
</li>
</ul>rmculpeppertag:github.com,2008:Repository/28166794/v6.0.12014-05-08T20:13:40ZRacket v6.0.1<ul>
<li>
<p>A new <code>racket/undefined</code> library exports <code>undefined</code> as the value<br>
currently produced by</p>
<p>(letrec ([x x]) x)</p>
<p>This library anticipates a future where that expression will raise<br>
an exception. The <code>racket/undefined</code> library will continue to offer<br>
the <code>undefined</code> value as a bridge between versions and as a last<br>
resort.</p>
</li>
<li>
<p>The drawing and GUI libraries provide improved support for<br>
high-resolution bitmaps and their use on Retina displays. For<br>
example, <code>read-bitmap</code> includes a <code>#:try-@2x?</code> option to trigger<br>
substitutions through the usual "<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2x">@2x</a>" naming convention.</p>
</li>
<li>
<p>Check Syntax cooperates with Typed Racket to show arrows and other<br>
Check Syntax highlighting even when there is a type error.</p>
</li>
<li>
<p>Functions provided via contract-out that have first-order contracts<br>
perform better.</p>
</li>
<li>
<p>The contract boundary between typed/untyped modules is much less<br>
expensive. Typed Racket now avoids generating contracts for places<br>
where contracts failures cannot happen.</p>
</li>
<li>
<p>Occurrence typing now works better with when/unless. Example:</p>
<p>(let ((x (read)))<br>
(unless (number? x) (error 'bad-input))<br>
(add1 x))</p>
</li>
<li>
<p>Types in Typed Racket are now pretty-printed.</p>
</li>
<li>
<p>Function types can now be written in prefix style, which is now<br>
preferred and is used for printing. Infix function types are still<br>
accepted for backwards compatibility.</p>
</li>
<li>
<p>A new `->*' type constructor is used for writing types for functions<br>
with optional and keyword arguments. The notation is similar to the<br>
matching contract combinator.</p>
</li>
<li>
<p>Typed Racket forms do not have a <code>:' suffix by default now. For example, the </code>struct' form replaces `struct:'. The suffixed versions<br>
are all provided for backwards compatibility.</p>
</li>
<li>
<p>Typed Racket now has preliminary support for classes and<br>
objects. However, it is still experimental and the APIs are subject<br>
to change.</p>
</li>
<li>
<p>Type aliases in Typed Racket now support recursion and mutual<br>
recursion. For example, `(define-type (MyList X) (U Null (Pair X<br>
(MyList X))))' is now a valid type alias.</p>
</li>
<li>
<p>Plot correctly renders intersecting 3D graphs and non-grid-aligned<br>
3D rectangles.</p>
</li>
<li>
<p>Elements in plots output in PDF/PS format have the same relative<br>
scale as in other formats. In particular, it is not necessary to<br>
adjust <code>plot-font-size</code> to make PDF plots look the same as PNG.</p>
</li>
</ul>rmculpeppertag:github.com,2008:Repository/28166794/v6.02014-02-26T22:18:28ZRacket v6.0<p>Racket 6.0 has a new package system, including a catalog of<br>
hundreds of already-available packages. Please visit</p>
<p><a href="http://pkgs.racket-lang.org/" rel="nofollow">http://pkgs.racket-lang.org/</a></p>
<p>for an overview of the packages.</p>
<p>Racket versions 5.3.4 through 5.3.6 included "beta" versions of the<br>
package system. Racket version 6.0 incorporates many improvements<br>
suggested by preliminary experiences in those versions:</p>
<ul>
<li>
<p>A package is treated as a single collection by default, so it is<br>
even easier to use a GitHub repository as a package. Get started<br>
quickly:<br>
<a href="http://docs.racket-lang.org/pkg/getting-started.html" rel="nofollow">http://docs.racket-lang.org/pkg/getting-started.html</a></p>
</li>
<li>
<p>DrRacket includes a new package manager GUI, available via the<br>
File|Package Manager ... menu item. The GUI is also available<br>
as a stand-alone program via the "gui-pkg-manager" package.</p>
</li>
<li>
<p>The main Racket distribution has been separated into about 200<br>
packages. The Racket installer combines the core system with<br>
bundled versions of these packages.</p>
<p>Alternatively, you may now install a Minimal Racket distribution<br>
--- which is about 1/10 the size of the main distribution --- and<br>
add only those packages that you need.</p>
</li>
<li>
<p>Package installation supports pre-built packages that include<br>
compiled byte code and rendered documentation, meaning packages can<br>
be installed quickly when built versions are available. All<br>
packages in the main distribution are available in pre-built form.</p>
</li>
</ul>
<p>The recent 5.92 and 5.93 releases served as release candidates for 6.0,<br>
and 6.0 includes a few additional repairs related to the package<br>
system.</p>
<p>Further improvements to the package system are in the works, notably<br>
including package documentation on the package-catalog web site.</p>
<p>COMPATIBILITY NOTE: PLaneT, the previous Racket package system, will<br>
remain in place for the foreseeable future, but we expect all package<br>
work to shift to the new system.</p>
<p>Beyond the package system, this release brings a number of other<br>
changes:</p>
<ul>
<li>
<p>Racket's HTML documentation has a new and improved look, thanks to<br>
Matthew Butterick.</p>
</li>
<li>
<p>The documentation includes a style guide, "How to Program Racket"<br>
<a href="http://docs.racket-lang.org/style/" rel="nofollow">http://docs.racket-lang.org/style/</a></p>
</li>
<li>
<p>Racket's JIT compiler supports the ARM architecture.</p>
</li>
<li>
<p>Racket supports the Mac's Retina display mode.</p>
</li>
<li>
<p>The performance of the Typed Racket compiler improved by 50% on<br>
some typed programs; e.g., see <a href="http://bit.ly/1d0Ye4z" rel="nofollow">http://bit.ly/1d0Ye4z</a></p>
</li>
<li>
<p>The profiler provides a new mode that uses the errortrace library<br>
to produce fine-grained profiles.</p>
</li>
<li>
<p>A new contract profiler reports how much time programs spend<br>
checking contracts, and which contracts are most expensive.</p>
</li>
<li>
<p>The math/flonum library exports fast 105-bit precision operations.</p>
</li>
<li>
<p>Check Syntax handles generated identifiers, especially those<br>
introduced by struct (e.g. field selectors) and Redex (e.g., e_1,<br>
e_2)</p>
</li>
<li>
<p>2htdp/batch-io includes functions for dealing with html/xml in<br>
files and web sites as X-expressions plus conveniences for<br>
web-based graph traversals.</p>
</li>
<li>
<p>The `gen:set' generic interface extends set operations to work on<br>
user-defined types that implement set methods, as well as on other<br>
set-like built-in types, such as lists.</p>
</li>
<li>
<p>Picts support conversion to SVG format.</p>
</li>
<li>
<p>Under unix, Racket provides desktop entries (.desktop files) for<br>
its graphical executables.</p>
</li>
</ul>rmculpeppertag:github.com,2008:Repository/28166794/v5.932014-01-31T23:23:45ZRacket v5.93<p>Version 5.93 repairs a few problems with the recent v5.92 release (in<br>
preparation for a v6.0 release):</p>
<ul>
<li>
<p>fixed a low-level concurrency problem with the GUI library for Mac<br>
OS X, which especially affected 32-bit builds;</p>
</li>
<li>
<p>fixed GRacket-based launchers (such as <code>drracket</code>) in a Unix-style<br>
installation;</p>
</li>
<li>
<p>expanded the list of recognized OpenSSL library versions;</p>
</li>
<li>
<p>fixed small CSS problems and inconsistencies (relative to v5.3.6) in<br>
the new Scribble style as used by the Racket documentation; and</p>
</li>
<li>
<p>added the version number back to the "racket" directory within the<br>
source distribution bundle.</p>
</li>
</ul>rmculpeppertag:github.com,2008:Repository/28166794/v5.922014-01-25T16:56:08ZRacket v5.92<p>Racket 5.92 has a new package system, including a catalog of<br>
hundreds of already-available packages. Please visit</p>
<p><a href="http://pkgs.racket-lang.org/" rel="nofollow">http://pkgs.racket-lang.org/</a></p>
<p>for an overview of the packages.</p>
<p>Recent releases included the "beta" versions of the package system.<br>
Racket version 5.92 incorporates many improvements suggested by these<br>
preliminary experiences:</p>
<ul>
<li>
<p>A package is treated as a single collection by default, so it is<br>
even easier to use a Github repository as a package. Get started<br>
quickly:<br>
<a href="http://docs.racket-lang.org/pkg/getting-started.html" rel="nofollow">http://docs.racket-lang.org/pkg/getting-started.html</a></p>
</li>
<li>
<p>DrRacket includes a new package manager GUI, available via the<br>
File|Package Manager ... menu item. The GUI is also available<br>
as a stand-alone program via the "gui-pkg-manager" package.</p>
</li>
<li>
<p>The main Racket distribution has been separated into about 200<br>
packages. The Racket installer combines the core system with<br>
bundled versions of these packages.</p>
<p>Alternatively, you may now install a Minimal Racket distribution<br>
--- which is about 1/10 the size of the main distribution --- and<br>
add only those packages that you need.</p>
</li>
<li>
<p>Package installation supports pre-built packages that include<br>
compiled byte code and rendered documentation, meaning packages can<br>
be installed quickly when built versions are available. All<br>
packages in the main distribution are available in pre-built form.</p>
</li>
</ul>
<p>Further improvements are in the works, notably including package<br>
documentation on the package-catalog web site.</p>
<p>COMPATIBILITY NOTE: PLaneT, the previous Racket package system, will<br>
remain in place for the foreseeable future, but we expect all package<br>
work to shift to the new system.</p>
<p>Beyond the package system, this release brings a number of other<br>
changes:</p>
<ul>
<li>
<p>Racket's HTML documentation has a new and improved look, thanks to<br>
Matthew Butterick.</p>
</li>
<li>
<p>The documentation includes a style guide, "How to Program Racket"<br>
<a href="http://docs.racket-lang.org/style/" rel="nofollow">http://docs.racket-lang.org/style/</a></p>
</li>
<li>
<p>Racket's JIT compiler supports the ARM architecture.</p>
</li>
<li>
<p>Racket supports the Mac's Retina display mode.</p>
</li>
<li>
<p>The performance of the Typed Racket compiler improved by 50% on<br>
some typed programs; e.g., see <a href="http://bit.ly/1d0Ye4z" rel="nofollow">http://bit.ly/1d0Ye4z</a></p>
</li>
<li>
<p>The profiler provides a new mode that uses the errortrace library<br>
to produce fine-grained profiles.</p>
</li>
<li>
<p>A new contract profiler reports how much time programs spend<br>
checking contracts, and which contracts are most expensive.</p>
</li>
<li>
<p>The math/flonum library exports fast 105-bit precision operations.</p>
</li>
<li>
<p>Check Syntax handles generated identifiers, especially those<br>
introduced by struct (e.g. field selectors) and Redex (e.g., e_1,<br>
e_2)</p>
</li>
<li>
<p>2htdp/batch-io includes functions for dealing with html/xml in<br>
files and web sites as X-expressions plus conveniences for<br>
web-based graph traversals.</p>
</li>
<li>
<p>The `gen:set' generic interface extends set operations to work on<br>
user-defined types that implement set methods, as well as on other<br>
set-like built-in types, such as lists.</p>
</li>
<li>
<p>Picts support conversion to SVG format.</p>
</li>
<li>
<p>Under unix, Racket provides desktop entries (.desktop files) for<br>
its graphical executables.</p>
</li>
</ul>rmculpeppertag:github.com,2008:Repository/28166794/v5.3.62013-08-10T12:47:15ZRacket v5.3.6<p>Racket v5.3.6 is a bug-fix release. It eliminates errors from v5.3.5<br>
that people have found over the summer.</p>elibarzilaytag:github.com,2008:Repository/28166794/v5.3.52013-06-18T11:00:31ZRacket v5.3.5<p>This is a special-purpose release to match the arrival of "Realm of<br>
Racket" in bookstores. Racket v.5.3.5 adds a single `realm'<br>
collection to the v5.3.4 release. The new collection contains the<br>
source code that readers of Realm may wish to use for experiments.</p>elibarzilaytag:github.com,2008:Repository/28166794/v5.3.42013-05-08T16:21:58ZRacket v5.3.4<ul>
<li>
<p>Extflonums (80-bit floating-point numbers) are supported on some<br>
x86/x86_64 platforms -- including Windows, and including platforms<br>
where Racket is compiled to use SSE instructions for flonum<br>
arithmetic. Thanks to Michael Filonenko.</p>
</li>
<li>
<p>OS X: DrRacket and all of the other apps are now signed with an<br>
official key.</p>
</li>
<li>
<p>Tally Maze: a new game based an enumeration of 2d mazes.</p>
</li>
<li>
<p>The Optimization Coach, a DrRacket plugin, has been moved from the<br>
Racket distribution to the Racket package repository. Install it<br>
with: raco pkg install optimization-coach</p>
</li>
<li>
<p>Redex: `define-union-language' now merges productions when<br>
languages define the same nonterminals. Thanks to William Bowman.</p>
</li>
<li>
<p>The <code>srfi/19' library is now compatible with the date structure type exported by </code>racket/base'.</p>
</li>
</ul>elibarzilaytag:github.com,2008:Repository/28166794/v5.3.32013-02-15T20:38:09ZRacket v5.3.3<p>This is a bug-fix release to address a flaw in DrRacket v5.3.2<br>
concerning interactions between the contour window and the syntax<br>
coloring.</p>elibarzilay