v6.1 announcement text
This commit is contained in:
parent
7608125543
commit
7ba6c663cd
65
pkgs/plt-services/meta/announcements/v6.1.txt
Normal file
65
pkgs/plt-services/meta/announcements/v6.1.txt
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
1407000198
|
||||||
|
Racket 6.1
|
||||||
|
|
||||||
|
The MAJOR INNOVATION concerns local recursive variable definitions.
|
||||||
|
Instead of initializing variables with an `undefined' value, Racket
|
||||||
|
raises an exception when such a variable is used before its definition.
|
||||||
|
(Thanks to Claire Alvis for adapting Dybvig's "Fixing Letrec" work.)
|
||||||
|
|
||||||
|
Since programs are rarely intended to produce #<undefined>, raising an
|
||||||
|
exception provides early and improved feedback. Module-level variables
|
||||||
|
have always triggered such an exception when used too early, and this
|
||||||
|
change finally gives local bindings --- including class fields --- the
|
||||||
|
same meaning.
|
||||||
|
|
||||||
|
This change is backwards-incompatible with prior releases of Racket.
|
||||||
|
Aside from exposing a few bugs, the change will mainly affect programs
|
||||||
|
that include
|
||||||
|
|
||||||
|
(define undefined (letrec ([x x]) x))
|
||||||
|
|
||||||
|
to obtain the #<undefined> value. In its stead, Racket provides the same
|
||||||
|
value via the `racket/undefined' library (which was introduced in the
|
||||||
|
previous release). Programmers are encouraged to use it in place of the
|
||||||
|
pattern above to obtain the "undefined" value.
|
||||||
|
|
||||||
|
The release also includes the following SMALL CHANGES:
|
||||||
|
|
||||||
|
* PLUMBERS generalize the flush-on-exit capability of primitive output
|
||||||
|
ports to enable arbitrary flushing actions and to give programmers
|
||||||
|
control over the timing of flushes (i.e., a composable `atexit'). New
|
||||||
|
functions include `current-plumber', `plumber-add-flush!', and
|
||||||
|
`plumber-flush-all'.
|
||||||
|
|
||||||
|
* CONTRACTS: the contract system's random testing facility has been
|
||||||
|
strengthened so that it can easily find simple mistakes in contracted
|
||||||
|
data structure implementations (e.g. an accidental reverse of a
|
||||||
|
conditional in a heap invariant check).
|
||||||
|
|
||||||
|
* REDEX: the semantics of mis-match patterns (variables followed by _!_)
|
||||||
|
inside ellipses has changed in a backwards-incompatible way. This
|
||||||
|
change simplifies the patterns' semantics and increases the usefulness
|
||||||
|
of these patterns.
|
||||||
|
|
||||||
|
* TEACHING LANGUAGES: `check-random' is an addition to the preferred
|
||||||
|
unit testing framework in the teaching languages. It enables the
|
||||||
|
testing of students' functions that use random-number
|
||||||
|
generation. (Thanks to David Van Horn (UMaryland) for proposing this
|
||||||
|
idea.)
|
||||||
|
|
||||||
|
* Upgraded and normalized versions of GRAPHICS LIBRARIES and
|
||||||
|
dependencies (Pango, Cairo, GLib, etc.) that are bundled with Racket
|
||||||
|
on Windows and Mac OS X. For example, FreeType support is consistently
|
||||||
|
enabled.
|
||||||
|
|
||||||
|
* TYPED RACKET: its standard library includes contracted exports from
|
||||||
|
the Racket standard library, such as the formatting combinators of
|
||||||
|
`racket/format'. It also supports Racket's asynchronous channels; see
|
||||||
|
the `typed/racket/async-channel' library.
|
||||||
|
|
||||||
|
* SSL: The openssl library supports forward secrecy via DHE and ECDHE
|
||||||
|
cipher suites (thanks to Edward Lee) and Server Name Indication
|
||||||
|
(thanks to Jay Kominek).
|
||||||
|
|
||||||
|
* The `mzlib/class100' library has been REMOVED. Use `racket/class'
|
||||||
|
instead.
|
Loading…
Reference in New Issue
Block a user