tag:github.com,2008:https://github.com/OrangeToque/racket/releases Release notes from racket 2014-11-04T14:52:36Z tag:github.com,2008:Repository/28166794/v6.1.1 2014-11-04T14:52:36Z Racket v6.1.1 <ul> <li> <p>The MAC OS X YOSEMITE compatibility problems are fixed. We<br> bundled a patched Pango text-drawing library with Racket.</p> </li> <li> <p>The WINDOWS [32-bit] releases fixes the window-update crashes.<br> We bundled a patched Cairo drawing library with Racket.</p> </li> <li> <p>TYPED RACKET closes two safety holes in the exception system.<br> The revised type system restricts <code>raise' to send only instances of the </code>exn' structure type and flat data to<br> handlers. It also checks exception handlers properly.<br> NOTE: Previously well-typed programs may fail to typecheck.</p> </li> <li> <p>TYPED RACKET'S typed regions support casts and predicates.</p> </li> <li> <p>2HTDP/IMAGE'S notion of equality ignores an image's baseline.</p> </li> <li> <p>The PACKAGE MANAGER supports a binary library installation mode,<br> which allows users to install packages without source or documentation.<br> Use the <code>--binary-lib' option with </code>raco pkg install'.</p> </li> <li> <p>The new DRRACKET-TOOL-LIB package factors out parts of DrRacket's<br> IDE so that they can be reused with other editors, such as Emacs.</p> </li> <li> <p>The COMPILER'S use-before-defined analysis has been repaired for<br> certain forms of nested <code>letrec', some </code>let' forms, and some<br> uses of <code>set!' or </code>with-continuation-mark'.</p> </li> <li> <p>The COMPILER performs additional bytecode optimizations.<br> Thanks to Gustavo Massaccesi.</p> </li> <li> <p>The CML library comes with a new `replace-evt' event constructor.<br> Thanks to Jan Dvořák.</p> </li> <li> <p>REDEX'S benchmark suite comes with a description of the benchmark<br> programs.</p> </li> <li> <p>REDEX'S metafunctions can be typeset using the "large left brace"<br> notation for conditionals.</p> </li> <li> <p>The CONTRACT library comes with an improved `contract-stronger?'.<br> Its error messages note that the contract itself might be wrong.</p> </li> <li> <p>The GUI library is DPI-aware on Windows.</p> </li> <li> <p>The OPENSSL library supports Server Name Indication for servers.<br> Thanks to Jay Kominek.</p> </li> <li> <p>The SYNTAX/PARSE library allows the definition of new pattern<br> forms via pattern expanders, similar to match expanders.<br> Thanks to Alex Knauth.</p> </li> <li> <p>OpenGL on Linux no longer depends on libgtkgl, and core profiles<br> are supported (see `set-legacy?').</p> </li> <li> <p>The TEACHING LANGUAGES' unit test framework supports<br> `check-satisfied', a construct for checking whether a result<br> satisfies a predicate, e.g.: (check-satisfied (sort l) sorted?)</p> </li> </ul> rmculpepper tag:github.com,2008:Repository/28166794/v6.1 2014-08-02T17:51:28Z Racket v6.1 <p>The MAJOR INNOVATION concerns local recursive variable definitions.<br> Instead of initializing variables with an `undefined' value, Racket<br> raises an exception when such a variable is used before its definition.<br> (Thanks to Claire Alvis for adapting Dybvig's "Fixing Letrec" work.)</p> <p>Since programs are rarely intended to produce #, raising an<br> exception provides early and improved feedback. Module-level variables<br> have always triggered such an exception when used too early, and this<br> change finally gives local bindings --- including class fields --- the<br> same meaning.</p> <p>This change is backwards-incompatible with prior releases of Racket.<br> Aside from exposing a few bugs, the change will mainly affect programs<br> that include</p> <p>(define undefined (letrec ([x x]) x))</p> <p>to obtain the # value. In its stead, Racket provides the same<br> value via the `racket/undefined' library (which was introduced in the<br> previous release). Programmers are encouraged to use it in place of the<br> pattern above to obtain the "undefined" value.</p> <p>The release also includes the following SMALL CHANGES:</p> <ul> <li> <p>PLUMBERS generalize the flush-on-exit capability of primitive output<br> ports to enable arbitrary flushing actions and to give programmers<br> control over the timing of flushes (i.e., a composable <code>atexit'). New functions include </code>current-plumber', <code>plumber-add-flush!', and </code>plumber-flush-all'.</p> </li> <li> <p>CONTRACTS: the contract system's random testing facility has been<br> strengthened so that it can easily find simple mistakes in contracted<br> data structure implementations (e.g. an accidental reverse of a<br> conditional in a heap invariant check).</p> </li> <li> <p>REDEX: the semantics of mis-match patterns (variables followed by <em>!</em>)<br> inside ellipses has changed in a backwards-incompatible way. This<br> change simplifies the patterns' semantics and increases the usefulness<br> of these patterns.</p> </li> <li> <p>TEACHING LANGUAGES: `check-random' is an addition to the preferred<br> unit testing framework in the teaching languages. It enables the<br> testing of students' functions that use random-number<br> generation. (Thanks to David Van Horn (UMaryland) for proposing this<br> idea.)</p> </li> <li> <p>Upgraded and normalized versions of GRAPHICS LIBRARIES and<br> dependencies (Pango, Cairo, GLib, etc.) that are bundled with Racket<br> on Windows and Mac OS X. For example, FreeType support is consistently<br> enabled.</p> </li> <li> <p>TYPED RACKET: its standard library includes contracted exports from<br> the Racket standard library, such as the formatting combinators of<br> <code>racket/format'. It also supports Racket's asynchronous channels; see the </code>typed/racket/async-channel' library.</p> </li> <li> <p>SSL: The openssl library supports forward secrecy via DHE and ECDHE<br> cipher suites (thanks to Edward Lee) and Server Name Indication<br> (thanks to Jay Kominek).</p> </li> <li> <p>The <code>mzlib/class100' library has been REMOVED. Use </code>racket/class'<br> instead.</p> </li> </ul> rmculpepper tag:github.com,2008:Repository/28166794/v6.0.1 2014-05-08T20:13:40Z Racket 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 `-&gt;*' 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> rmculpepper tag:github.com,2008:Repository/28166794/v6.0 2014-02-26T22:18:28Z Racket 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> rmculpepper tag:github.com,2008:Repository/28166794/v5.93 2014-01-31T23:23:45Z Racket 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> rmculpepper tag:github.com,2008:Repository/28166794/v5.92 2014-01-25T16:56:08Z Racket 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> rmculpepper tag:github.com,2008:Repository/28166794/v5.3.6 2013-08-10T12:47:15Z Racket 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> elibarzilay tag:github.com,2008:Repository/28166794/v5.3.5 2013-06-18T11:00:31Z Racket 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> elibarzilay tag:github.com,2008:Repository/28166794/v5.3.4 2013-05-08T16:21:58Z Racket 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> elibarzilay tag:github.com,2008:Repository/28166794/v5.3.3 2013-02-15T20:38:09Z Racket 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> elibarzilay