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