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