tag:github.com,2008:https://github.com/cpach/racket/releasesRelease notes from racket2014-05-08T20:13:40Ztag:github.com,2008:Repository/21832963/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/21832963/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/21832963/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/21832963/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/21832963/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/21832963/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/21832963/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/21832963/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>elibarzilaytag:github.com,2008:Repository/21832963/v5.3.22013-02-01T03:58:47ZRacket v5.3.2<p>Core Libraries:</p>
<ul>
<li>
<p>The new `math' library provides functions and data structures for<br>
working with numbers and collections of numbers. Functions include<br>
non-elementary (such as gamma, zeta, Lambert's W), number-theoretic<br>
(factorization, modular arithmetic), linear algebra (arithmetic,<br>
decompositions), and statistical (expected values, order statistics,<br>
binning). Data structures include arbitrary-precision bigfloats,<br>
probability distributions, and multidimensional arrays.</p>
</li>
<li>
<p>The new <code>file/untar', </code>file/untgz', and `file/unzip' libraries support<br>
unpacking widely used archive formats.</p>
</li>
<li>
<p>The new `lazy-require' form allows programs to delay the loading and<br>
instantiation of helper modules until they are needed.</p>
</li>
<li>
<p>The new `data/bit-vector' library provides an implementation of bit<br>
vectors (a mutable sequence of booleans) supporting popcount.</p>
</li>
<li>
<p>The `racket/generic' library allows the specification of default<br>
method implementations for core datatypes.</p>
</li>
<li>
<p>The `openssl' library can verify hostnames and use the operating<br>
system's certificate store to verify certificates.</p>
</li>
</ul>
<p>Package System:</p>
<ul>
<li>
<p>A new package system is in beta release. This system will become<br>
Planet's successor. It differs significantly from the latter. For<br>
details, please read the documentation at<br>
<a href="http://docs.racket-lang.org/planet2/" rel="nofollow">http://docs.racket-lang.org/planet2/</a> and list your packages on the new<br>
index at <a href="https://pkg.racket-lang.org/" rel="nofollow">https://pkg.racket-lang.org/</a>.</p>
</li>
<li>
<p>The `raco test' command supports testing by collection and package, in<br>
addition to by directory and file, with the "-c" and "-p" options.</p>
</li>
</ul>
<p>Teaching Libraries:</p>
<ul>
<li>batch-io: the read and write functions work on Unix-style standard<br>
input and output.</li>
</ul>
<p>DrRacket:</p>
<ul>
<li>
<p>DrRacket's GUI is more responsive.</p>
</li>
<li>
<p>The automatic parenthesis insertion mode is improved.</p>
</li>
</ul>
<p>Scribble:</p>
<ul>
<li>
<p>Scribble renders Markdown format files via the "--markdown"<br>
command-line flag. Example use case: Generate documentation hosted on<br>
GitHub or BitBucket.</p>
</li>
<li>
<p>Documentation cross-reference information is stored in an SQLite3<br>
database, which means that SQLite3 is required for building Racket<br>
documentation on Unix/Linux machines (but SQLite3 is included in<br>
Racket distributions for Windows and Mac OS X).</p>
<p>Using a database for cross-reference information significantly reduces<br>
the initial footprint of DrRacket, since DrRacket no longer needs to<br>
load all cross-reference information.</p>
</li>
</ul>
<p>Typed Racket:</p>
<ul>
<li>
<p>Typed Racket programs can require `plot/typed' to draw plots. List-<br>
and vector-accepting functions accept general sequences.</p>
</li>
<li>
<p>Typed Racket supports Racket's delimited continuation and continuation<br>
mark operators.</p>
</li>
</ul>
<p>Redex:</p>
<ul>
<li>Added more support for `define-judgment-form', including random<br>
generation for well-formed judgments and visualization of judgments.</li>
</ul>
<p>Deprecation:</p>
<p>The following have been removed in this release:</p>
<ul>
<li>the <code>planet' command-line tool; use </code>raco planet' instead.</li>
</ul>
<p>The following has been deprecated and will be removed in the August 2013<br>
release:</p>
<ul>
<li>the <code>mzlib/class100' library; use </code>racket/class' instead.</li>
</ul>elibarzilaytag:github.com,2008:Repository/21832963/v5.3.12012-11-07T19:50:41ZRacket v5.3.1<p>Racket:</p>
<ul>
<li>
<p>The `case' form dispatches on characters, fixnums, symbols, and<br>
keywords in logarithmic time. (Thanks to Jon Zeppieri.)</p>
</li>
<li>
<p>The new `racket/format' library provides new and improved<br>
string-formatting functions.</p>
</li>
<li>
<p>Logging tools include improved filtering support based on the name<br>
of a logger. A new <code>define-logger' form simplifies the use of named loggers. Forms such as </code>log-debug' now support string<br>
formatting.</p>
</li>
<li>
<p>The <code>for' forms now support </code>#:break' and `#:final' clauses.</p>
</li>
<li>
<p>The new PLTCOMPILEDROOTS environment variable configures the<br>
search path for compiled bytecode.</p>
</li>
</ul>
<p>DrRacket:</p>
<ul>
<li>
<p>Check Syntax now summarizes the documentation (i.e., the blue<br>
boxes) for the identifier at the insertion point in the top-right<br>
corner of the definitions window.</p>
</li>
<li>
<p>Check Syntax now runs continuously for programs that declare their<br>
language within the source. This mode has been available for<br>
several of the past releases, but now enabled by default.</p>
</li>
<li>
<p>DrRacket can spell-check string constants (enable this in the Edit<br>
menu).</p>
</li>
</ul>
<p>Typed Racket:</p>
<ul>
<li>
<p>Typed Racket interprets the Any type as a different contract.<br>
This may signal dynamic errors in some existing mixed<br>
typed/untyped programs. The normal fix is to replace a use of Any<br>
with a more specific types.</p>
</li>
<li>
<p>NaN is included in all of Typed Racket's floating-point types,<br>
which makes precise floating-point types easier to use.</p>
</li>
<li>
<p>Typed Racket supports a `cast' operation with support for<br>
higher-order types.</p>
</li>
<li>
<p>Typed Racket provides the <code>:query-type/args' and </code>:query-type/result' utilities to explore types at the REPL.</p>
</li>
</ul>
<p>Miscellaneous:</p>
<ul>
<li>
<p>The <code>compatibility' collection provides features from Racket relatives, such as </code>defmacro' and mutable lists. These features<br>
are provided to ease porting code to Racket. Avoid them in modern<br>
Racket code.</p>
</li>
<li>
<p>Screenshots of the widgets provided by the Racket GUI library are<br>
included in the documentation. (Thanks to Diogo F. S. Ramos.)</p>
</li>
<li>
<p>FrTime was ported to racket lang. (Thanks to Patrick Mahoney.)</p>
</li>
</ul>
<p>Deprecation:</p>
<p>The following has been deprecated and will be removed in the January<br>
2013 release:</p>
<ul>
<li>the <code>planet' command-line tool; use </code>raco planet' instead.</li>
</ul>
<p>The following has been deprecated and will be removed in the August<br>
2013 release:</p>
<ul>
<li>the <code>mzlib/class100' library; use </code>racket/class' instead.</li>
</ul>elibarzilay