From stamourv at eecs.northwestern.edu Fri Jan 26 18:08:33 2018 From: stamourv at eecs.northwestern.edu (Vincent St-Amour) Date: Fri, 26 Jan 2018 17:08:33 -0600 Subject: [Racket announcement] Racket v6.12 Message-ID: Racket version 6.12 is now available from http://racket-lang.org/ * Changed the way some unsafe operations are exposed via `ffi/unsafe` libraries to help smooth a future transition to a new runtime system. * The `syntax-parse` form supports unwinding side-effects when it backtracks, both explicitly with `~undo` patterns and implicitly with the built-in managed state (using `syntax-parse-state-ref`, etc). * The `db` library supports SCRAM-SHA-256 authentication for backends running PostgreSQL 10 or later. Client support for SCRAM and other SASL mechanisms is provided by the new `sasl` library. * The `lazy-require-syntax` form supports lazy loading of macro transformers. Note that the macros must obey certain implementation constraints (see the `lazy-require-syntax` documentation). * Typed Racket no longer enforces types like (U String (Boxof String)) with the any/c contract. This fixes a type soundness issue, but may affect performance. Please submit a bug report if you find a program that runs significantly slower on v6.12 than earlier versions. * Typed Racket's type instantiation (`inst`) uses Any for omitted type arguments, allowing APIs to add additional type variables to functions without breaking existing programs. * `for/fold` users can customize the final result of a loop's computation using the `#:result` keyword. * The `--deps` option to `raco test` tests the packages the argument packages depends on, in addition to testing the packages themselves. For example, `raco test -p --deps pkg1 pkg2` tests all files from `pkg1`, `pkg2`, and all of their dependencies. The following people contributed to this release: Alexander Shopov, Alexis King, Andrew Gwozdziewycz, Andrew Kent, Ben Greenman, Chung-chieh Shan, Conor Finegan, Daniel Feltey, Daniel Mendler, Eric Dobson, Gabriel Ebner, Greg Cooper, Greg Hendershott, Gustavo Massaccesi, Huma Zafar, Jack Firth, James Bornholt, Jay McCarthy, John Clements, Kimball Germane, Leif Andersen, Matias Eyzaguirre, Matthew Butterick, Matthew Flatt, Matthias Felleisen, Michael Ballantyne, Mike Sperber, Milo Turner, Robby Findler, Rommel Martinez, Ryan Culpepper, Sam Tobin-Hochstadt, Shu-Hung You, Soula?mane Sahmi, Spencer Florence, Stephen De Gabrielle, Vincent St-Amour, Wesley Kerfoot, and William G Hatch. Feedback Welcome From stamourv at eecs.northwestern.edu Fri Jul 27 15:52:36 2018 From: stamourv at eecs.northwestern.edu (Vincent St-Amour) Date: Fri, 27 Jul 2018 14:52:36 -0500 Subject: [Racket announcement] Racket v7.0 Message-ID: Racket version 7.0 is now available from http://racket-lang.org/ Racket version 7.0 includes substantial internal changes toward the long-term goal of replacing Racket's current runtime system and supporting multiple runtime systems. We do not expect Racket users to see a big difference between Racket v6.12 and Racket v7.0, but since the internals differ significantly, a major-version bump helps track the change. Version 7.0 replaces about 1/8 of the core v6.12 implementation with a new macro expander that bootstraps itself. The expander turns out to be about 40% of the new code needed to replace Racket's core with Chez Scheme. Most of the other 60% is also implemented, but it is not included in this release; we hope and expect that Racket-on-Chez will be ready for production use later in the v7.x series. ------------------------------------------------------------------------ * The `syntax` (`#'`) form supports new template subforms: `~@` for splicing and `~?` for choosing between subtemplates based on whether pattern variables have "absent" value (from an `~optional` pattern in `syntax-parse`, for example). The `syntax/parse/experimental/template` library, where these features originated, re-exports the new forms under old names for compatibility. * On Windows, an `--embed-dlls` flag for `raco exe` creates a truly standalone, single-file ".exe" that embeds Racket's DLLs. * DrRacket's "Create Executable" option for the teaching language (Beginner Student, etc.) uses `--embed-dlls` to create single-file, standalone ".exe"s on Windows. * Typed Racket's support for prefab structs is significantly improved. This supports using prefab structs more polymorphically, and fixes significant bugs in the current implementation. Programs which currently use predicates for prefab structs on unknown data may need to be revised, since previous versions of Typed Racket allowed potentially buggy programs to type check. See Typed Racket RFC 1 [https://github.com/racket/typed-racket/blob/master/rfcs/text/0001-prefab-structs.md] and [https://pnwamk.blogspot.com/2018/06/typed-racket-v70-prefab-changesfixes.html] for more details on this change and on how to fix programs affected by it. * Typed Racket supports `#:rest-star` in the `->*` type constructor, which allows function types to specify rest arguments with more complex patterns of types, such as the `hash` function. * Interactive overlays can be added to plots produced by `plot-snip`. This allows constructing interactive plots or displaying additional information when the mouse hovers over the plot area. Examples of how to use this feature can be found here: [https://alex-hhh.github.io/2018/03/interactive-overlays-with-the-racket-plot-package-update.html] * racket/plot provides procedures for displaying candlestick charts for use in financial time series analysis. * Added contract-equivalent?, a way check if two contracts are mutually stronger than each other without the exponential slowdown that two calls to contract-stronger? brings. * Lazy Racket supports functions with keyword arguments. The following people contributed to this release: Adam Davis Lee, Alex Hars?nyi, Alex Knauth, Alexander McLin, Alexander Shopov, Alexis King, Andrew M. Kent, Asumu Takikawa, Ben Greenman, Caner Derici, Daniel Feltey, David Benoit, David Kempe, Don March, Eric Dobson, evdubs, Foo Chuan Wei, Georges Dup?ron, Gustavo Massaccesi, Hashim Muqtadir, Jakub Jirutka, James Bornholt, Jasper Pilgrim, Jay McCarthy, Jens Axel S?gaard, John Clements, Juan Francisco Cantero Hurtado, Kashav Madan, Kieron Hardy, Leandro Facchinetti, Leif Andersen, Luke Lau, Matthew Butterick, Matthew Flatt, Matthias Felleisen, Michael Ballantyne, Michael Burge, Michael Myers, Mike Sperber, Milo Turner, NoCheroot, Oling Cat, Paulo Matos, Philip McGrath, Philippe Meunier, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Sarah Spall, Shu-Hung You, Sorawee Porncharoenwase, Spencer Florence, Stephen Chang, Tony Garnock-Jones, Tucker DiNapoli, UM4NO, Vincent St-Amour, and William J. Bowman. Feedback Welcome From stamourv at eecs.northwestern.edu Fri Oct 26 19:01:29 2018 From: stamourv at eecs.northwestern.edu (Vincent St-Amour) Date: Fri, 26 Oct 2018 18:01:29 -0500 Subject: [Racket announcement] Racket v7.1 Message-ID: Racket version 7.1 is now available from http://racket-lang.org/ * Although it is still not part of this release, the development of Racket on Chez Scheme continues. We still hope and expect that Racket-on-Chez will be ready for production use later in the v7.x series, perhaps mid-2019. * Trackpad scrolling works in more reliably in some Windows and Linux/Unix environments. * New users of DrRacket will open files into new tabs (by default). * The teaching languages support the unicode character for lambda. The teaching unit test framework no longer stops testing when a tested expression signals an error. * A refinement to error reporting for compile-time code helps clarify when an syntax error is likely due to an earlier unbound identifier (because the unbound-identifier error otherwise must be delayed, in case a definition appears later). * A `++lang ` flag for `raco exe` simplifies the creation of executables that dynamically load `#lang ` modules at run time. * Typed Racket adds types for mutable and immutable vectors: `(Mutable-Vectorof T)`, `(Immutable-Vectorof T)`, `(Immutable-Vector T)`, and `(Mutable-Vector T)`. The new types are subtypes of the existing `Vectorof` and `Vector` types. The return types of a few standard vector functions use the new, more specific, types. When an immutable vector flows from untyped code to typed code, Typed Racket may be able to check the vector with a flat contract. * The hashing functions `sha1-bytes`, `sha224-bytes`, and `sha256-bytes` are added to `racket/base`. * `curry` from racket/function supports currying functions with keyword arguments, and `procedure-arity` and `procedure-keywords` return the correct result when applied to curried functions. * Slideshow supports widescreen mode (finally!). Implement widescreen slides using `slideshow/widescreen` or provide the `--widescreen` command-line flag to Slideshow. Combine `--widescreen` with `--save-aspect` to make widescreen mode the default in your installation. * Racket supports FreeBSD/aarch64. * Various improvements and additions were made to the DeinProgramm teaching languages and their documentation. The following people contributed to this release: Akihide Nano, Alex Hars?nyi, Alex Knauth, Alexander McLin, Alexis King, Andrew Kent, Ben Greenman, Bruno Cuconato, Chongkai Zhu, Claes Wallin, David Benoit, Gary F. Baumgartner, Gustavo Massaccesi, Jay McCarthy, Jens Axel S?gaard, J?r?me Martin, John Clements, Jordan Johnson, Kimball Germane, Leif Andersen, Matthew Butterick, Matthew Flatt, Matthias Felleisen, Mike Sperber, Milo Turner, myfreeweb, Oling Cat, Paulo Matos, Philip McGrath, Robby Findler, Roman Klochkov, Ryan Culpepper, Sam Caldwell, Sam Tobin-Hochstadt, Shu-Hung You, Stephen Chang, Tong-Kiat Tan, Vincent St-Amour, Winston Weinert, and yjqww6. Feedback Welcome