Log message:
Update to Racket 6.0.1
Changes in version 6.0.1
* A new `racket/undefined` library exports `undefined` as the
value currently produced by
(letrec ([x x]) x)
This library anticipates a future where that expression will
raise an exception. The `racket/undefined` library will continue
to offer the `undefined` value as a bridge between versions and
as a last resort.
* The drawing and GUI libraries provide improved support for
high-resolution bitmaps and their use on Retina displays. For
example, `read-bitmap` includes a `#:try-@2x?` option to trigger
substitutions through the usual "@2x" naming convention.
* Check Syntax cooperates with Typed Racket to show arrows and other
Check Syntax highlighting even when there is a type error.
* Functions provided via contract-out that have first-order
contracts perform better.
* The contract boundary between typed/untyped modules is much less
expensive. Typed Racket now avoids generating contracts for
places where contracts failures cannot happen.
* Occurrence typing now works better with when/unless. Example:
(let ((x (read)))
(unless (number? x) (error 'bad-input))
(add1 x))
* Types in Typed Racket are now pretty-printed.
* Function types can now be written in prefix style, which is now
preferred and is used for printing. Infix function types are still
accepted for backwards compatibility.
* A new `->*' type constructor is used for writing types for
functions with optional and keyword arguments. The notation is
similar to the matching contract combinator.
* Typed Racket forms do not have a `:' suffix by default now. For
example, the `struct' form replaces `struct:'. The suffixed
versions are all provided for backwards compatibility.
* Typed Racket now has preliminary support for classes and
objects. However, it is still experimental and the APIs are
subject to change.
* Type aliases in Typed Racket now support recursion and mutual
recursion. For example, `(define-type (MyList X) (U Null (Pair X
(MyList X))))' is now a valid type alias.
* Plot correctly renders intersecting 3D graphs and
non-grid-aligned 3D rectangles.
* Elements in plots output in PDF/PS format have the same relative
scale as in other formats. In particular, it is not necessary to
adjust `plot-font-size` to make PDF plots look the same as PNG.
Changes in version 6.0
Racket 6.0 has a new package system, including a catalog of
hundreds of already-available packages. Please visit
http://pkgs.racket-lang.org/
for an overview of the packages.
Racket versions 5.3.4 through 5.3.6 included "beta" versions of the
package system. Racket version 6.0 incorporates many improvements
suggested by preliminary experiences in those versions:
* A package is treated as a single collection by default, so it is
even easier to use a GitHub repository as a package. Get started
quickly:
http://docs.racket-lang.org/pkg/getting-started.html
* DrRacket includes a new package manager GUI, available via the
File|Package Manager ... menu item. The GUI is also available
as a stand-alone program via the "gui-pkg-manager" package.
* The main Racket distribution has been separated into about 200
packages. The Racket installer combines the core system with
bundled versions of these packages.
Alternatively, you may now install a Minimal Racket distribution
--- which is about 1/10 the size of the main distribution --- and
add only those packages that you need.
* Package installation supports pre-built packages that include
compiled byte code and rendered documentation, meaning packages can
be installed quickly when built versions are available. All
packages in the main distribution are available in pre-built form.
The recent 5.92 and 5.93 releases served as release candidates for 6.0,
and 6.0 includes a few additional repairs related to the package
system.
Further improvements to the package system are in the works, notably
including package documentation on the package-catalog web site.
COMPATIBILITY NOTE: PLaneT, the previous Racket package system, will
remain in place for the foreseeable future, but we expect all package
work to shift to the new system.
Beyond the package system, this release brings a number of other
changes:
* Racket's HTML documentation has a new and improved look, thanks to
Matthew Butterick.
* The documentation includes a style guide, "How to Program Racket"
http://docs.racket-lang.org/style/
* Racket's JIT compiler supports the ARM architecture.
* Racket supports the Mac's Retina display mode.
* The performance of the Typed Racket compiler improved by 50% on
some typed programs.
* The profiler provides a new mode that uses the errortrace library
to produce fine-grained profiles.
* A new contract profiler reports how much time programs spend
checking contracts, and which contracts are most expensive.
* The math/flonum library exports fast 105-bit precision operations.
* Check Syntax handles generated identifiers, especially those
introduced by struct (e.g. field selectors) and Redex (e.g., e_1,
e_2)
* 2htdp/batch-io includes functions for dealing with html/xml in
files and web sites as X-expressions plus conveniences for
web-based graph traversals.
* The `gen:set' generic interface extends set operations to work on
user-defined types that implement set methods, as well as on other
set-like built-in types, such as lists.
* Picts support conversion to SVG format.
* Under unix, Racket provides desktop entries (.desktop files) for
its graphical executables.
|