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