Releases: racket/racket
Racket v8.10
Racket version 8.10 is now available from
https://racket-lang.org/
As of this release:
-
syntax/parse no longer always compiles its patterns; this release
includes an interpreter which is used to reduce code size -
Racket includes primitives
[im]mutable-string?,[im]mutable-bytes?,
[im]mutable-vector?,[im]mutable-box?, and[im]mutable-hash?
(cf.
https://docs.racket-lang.org/reference/booleans.html#%28mod-path._racket%2Fmutability%29) -
Redex adds judgment-form->rule-names (cf.
https://docs.racket-lang.org/redex/reference.html#%28def._%28%28lib._redex%2Freduction-semantics..rkt%29._judgment-form-~3erule-names%29%29) -
Fasl and compiled code allow fxvectors and flvectors
-
DrRacket allows #lang-specific customization of the definition
navigation popdown (cf.
https://docs.racket-lang.org/tools/drracket_language.html#%28idx._%28gentag._55._%28lib._scribblings%2Ftools%2Ftools..scrbl%29%29%29) -
Racket and DrRacket include Finnish internationalization
-
Check Syntax binding arrows are drawn for names bound with
define-local-member-name -
Many other improvements and bug fixes are included, including to
the scribble and plot packages
Thank you
Thank you to the people who contributed to this release:
Adrien Ludwig, Alex Harsányi, Alex Knauth, Alexis King, Ben Greenman,
Cameron Moy, D. Ben Knoble, Greg Hendershott, Gustavo Massaccesi,
irreconsolable, Jay McCarthy, Joel Dueck, John Clements, Jordan Johnson,
Kamil Laskowski, Laurent Orseau, Matthew Flatt, Matthias Felleisen, Mike
Sperber, Oscar Waddell, Pavel Panchekha, Philip McGrath, reflektoin,
Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Shu-Hung You, Stefan
Schwarzer, Stephen De Gabrielle, and Yongming Shen
Feedback Welcome
Racket v8.9
Racket version 8.9 is now available from https://download.racket-lang.org/
As of this release:
-
The HtDP student languages come with checked signatures. Programmers
can express signatures in a formal notation, and these signatures are
checked at run-time (in a performance-neutral manner). The addition of
this formal language associates meaning with several names that had no
meaning before. — This feature is experimental, and we may amend or
retract it later. (cf.
https://docs.racket-lang.org/htdp-langs/beginner-abbr.html?q=signatures#%28part._beginner-abbr-signatures%29) -
Switching into and out of dark mode is handled better on Mac OS and
Linux. -
Racket uses Unicode 15.0 for character and string operations.
-
The
racket/hash-codelibrary provides support for combining hash
codes. (cf. https://docs.racket-lang.org/reference/Equality.html#%28mod-path._racket%2Fhash-code%29) -
A language module can have a
configure-expandsubmodule that is
dynamically required to configure a parameterization before expansion
of another module. (cf. https://docs.racket-lang.org/reference/running-sa.html#%28part._configure-expand%29) -
stream-conssupports multiple values. (cf. https://docs.racket-lang.org/reference/streams.html#%28form._%28%28lib._racket%2Fstream..rkt%29._stream-cons%29%29) -
unit/csubcontracts may depend on bindings from any imported or
exported signature. Additionally, bindings’ contracts are enforced
within subcontracts, and violations blame the contract itself (like
->i). (cf. https://docs.racket-lang.org/reference/unitcontracts.html#%28form._%28%28lib._racket%2Funit..rkt%29._unit%2Fc%29%29) -
racket/classprovides thedynamic-instantiateprocedure for
instantiating a class with a dynamic list of by-name initialization
arguments. (cf. https://docs.racket-lang.org/reference/objcreation.html#%28def._%28%28lib._racket%2Fprivate%2Fclass-internal..rkt%29._dynamic-instantiate%29%29) -
TCP output block buffering implies TCP_NODELAY. (cf. https://docs.racket-lang.org/reference/tcp.html#%28def._%28%28lib._racket%2Ftcp..rkt%29._tcp-connect%29%29)
-
Submodules and Check Syntax require arrows work better together.
-
Typed Racket's shallow check generation is improved.
-
Many other improvements and bug fixes are included!
Thank you
Thank you to the people who contributed to this release:
Alex Harsányi, Alex Knauth, Alexis King, Ben Greenman, Bert De
Ketelaere, Bob Burger, Bogdan Popa, Cadence Ember, D. Ben Knoble, Denis
Hirn, dr-neptune, Eli Barzilay, Fred Fu, Gustavo Massaccesi, J. Ryan
Stinnett, Jack Firth, Jamie Taylor, Jesse Alama, Jin-Ho King, John
Clements, Lazerbeak12345, Mark Hedlund, Masaya Tojo, Matthew Flatt,
Matthias Felleisen, Mike Sperber, Philip McGrath, Robby Findler, Ryan
Culpepper, Sam Phillips, Sam Tobin-Hochstadt, sarna, Shu-Hung You,
Sorawee Porncharoenwase, Stephen De Gabrielle, sxzzsf, Tom Price, Yukai
Chou, and Zach O'Brien.
Racket v8.8
Racket version 8.8 is now available from
https://racket-lang.org/
As of this release:
-
The dependent contract form,
->i, supports a #:param element that
specifies dependencies for parameter values that are set during the
dynamic extent of the function call.
(See: https://docs.racket-lang.org/reference/function-contracts.html#%28form._%28%28lib._racket%2Fcontract%2Fbase..rkt%29._-~3ei%29%29 ) -
The
copy-filelibrary function supports permission-management
arguments.
(See: https://docs.racket-lang.org/reference/Filesystem.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._copy-file%29%29 ) -
Pressing <SHIFT>-return in DrRacket's interactions window makes
it easier to edit and enter expressions without sending them
to be evaluated. -
The numeric comparison operators (<, >=, etc.) require at least
two arguments in the "How To Design Programs" teaching languages. -
Redex has improved typesetting when customized renders are used
in certain multi-line situations. -
We have fixed many bugs, and written lots of documentation.
The following people contributed to this release:
Alex Knauth, Alexander Shopov, Andreas Schwab, Ben Greenman, Bert De
Ketelaere, Bob Burger, Bogdan Popa, Cameron Moy, Chung-chieh Shan,
D. Ben Knoble, Dan Anderson, David Van Horn, Geoffrey Knauth, Gustavo
Massaccesi, Jamie Taylor, Jason Hemann, Jens Axel Søgaard, Jesse Alama,
jestarray, Johann Rudloff, Johannes Maier, John Clements, Jon Zeppieri,
Lazerbeak12345, Lîm Tsú-thuàn, Matthew Flatt, Matthias Felleisen, Mike
Sperber, Niklas Larsson, Noah Ma, Pavel Panchekha, Philip McGrath,
Philippe Meunier, R. Kent Dybvig, reflektoin, Robby Findler, Sam
Tobin-Hochstadt, Shu-Hung You, Sorawee Porncharoenwase, and Stephen De
Gabrielle
Feedback Welcome
Racket v8.7
Racket version 8.7 is now available from
https://racket-lang.org/
As of this release:
- Typed Racket offers Shallow and Optional modes for its gradual
types. These modes lower the cost of interacting with untyped code,
but provide less protection against buggy interactions.
(see https://docs.racket-lang.org/ts-reference/behavior-of-types.html ) - Racket uses Unicode 14.0 for character and string operations, and
includes grapheme operations. DrRacket supports emojis.
(see https://docs.racket-lang.org/gui/editor-overview.html#%28part._graphemes%29 ) - Racket supports RV64G (RISC-V).
- Programmers can disable definition shadowing using
(#%declare #:require=define).
(see https://docs.racket-lang.org/reference/module.html#%28form._%28%28quote._~23~25kernel%29._~23~25declare%29%29 ) - The module dependency graphs available using raco dependencies-graph
and DrRacket's Module browser are faster and have new package
filtering support.
(see https://docs.racket-lang.org/drracket/module-browser.html#%28idx._%28gentag._39._%28lib._scribblings%2Fdrracket%2Fdrracket..scrbl%29%29%29 ) - DrRacket is more responsive when killing programs that produce a lot
of output. - Plot 3D allows negative altitude values (e.g., looking at the plot
from "below".)
(see https://docs.racket-lang.org/plot/plotting.html#%28def._%28%28lib._plot%2Fmain..rkt%29._plot3d%29%29 ) - The
scriblib/bibtexandscriblib/autobiblibraries support DOIs.
(see https://docs.racket-lang.org/scriblib/autobib.html#%28def._%28%28lib._scriblib%2Fautobib..rkt%29._make-bib%29%29 ) - There are many other repairs and improvements!
The following people contributed to this release:
Adit Cahya Ramadhan, Alex Harsányi, Bart van Strien, Ben Greenman, Bob
Burger, Bogdan Popa, Cameron Moy, cheeze2000, D. Ben Knoble, Dan
Anderson, Fred Fu, Geoffrey Knauth, Gustavo Massaccesi, J. Ryan
Stinnett, Jack Firth, Jason Hemann, Jimmy McNutt, John Clements, Lîm
Tsú-thuàn, M. Taimoor Zaeem, Mao Yifu, Matthew Flatt, Matthias
Felleisen, Mike Sperber, Noah Ma, Oliver Flatt, Paulo Matos, Philip
McGrath, Reuben Thomas, Robby Findler, Ryan Culpepper, Sam Phillips, Sam
Tobin-Hochstadt, Samuel Bronson, Shu-Hung You, Sorawee Porncharoenwase,
Sorin Muntean, Stephen Chang, William J. Bowman, and Winston Weinert
Feedback Welcome
Racket v8.6
Racket version 8.6 is now available from
https://racket-lang.org/
As of this release:
-
Racket has an "equal-always?" primitive that equates values that will stay
the same even if mutated. See
https://docs.racket-lang.org/reference/Equality.html#%28def._%28%28quote._~23~25kernel%29._equal-always~3f%29%29 -
This release uses a new build system, Zuo, which is implemented as a
little language, in accordance with the ideas of Language Oriented
Programming (LOP). The implementation has a single C file (plus libraries
implemented in Zuo), so it compiles easily. Thezuo/build
library is modeled onmakeand Shake for tracking dependencies and
build steps. See https://docs.racket-lang.org/zuo/index.html and
https://racket.discourse.group/t/new-build-system-pushed-to-git-repo/873 -
Racket supports stencil vectors, which associate a virtual bitmask
with a vector, enabling certain mask-equipped update operations. See
https://docs.racket-lang.org/reference/stencil_vectors.html -
Racket supports Arm64 machines running Windows.
-
Redex has support for simultaneous substitutions. See
https://docs.racket-lang.org/redex/reference.html#%28form._%28%28lib._redex%2Freduction-semantics..rkt%29._substitute%29%29 -
The Web Server provides control over the maximum number of
concurrent connections via its "safety limits" construct. See
https://docs.racket-lang.org/web-server-internal/dispatch-server-unit.html#%28part._safety-limits%29 -
The Web Server has improved logging performance and improved
request parsing performance, reducing tail latencies. -
The Web Server supports logging response status code via
web-server/dispatchers/dispatch-logresp. See
https://docs.racket-lang.org/web-server-internal/dispatch-logresp.html -
The
dblibrary supports custom types for PostgreSQL connections; see
pg-custom-typefor details. See
https://docs.racket-lang.org/db/util.html#%28def._%28%28lib._db%2Futil%2Fpostgresql..rkt%29._pg-custom-type%29%29 -
The release includes many other repairs and changes!
The following people contributed to this release:
Alex Knauth, Alexander Shopov, Alexis King, Amirouche Amazigh BOUBEKKI,
Andy Keep, Ashish SHUKLA, Bob Burger, Bogdan Popa, Cameron Moy,
Chung-chieh Shan, David K. Storrs, FrankHB, Fred Fu, Gustavo Massaccesi,
helado de brownie, J. Ryan Stinnett, Jack Firth, Jamie Taylor, Jason
Hemann, Jens Axel Søgaard, Jimmy McNutt, Joel Dueck, John Clements, José
Manuel Calderón Trilla, Kevin Tew, Laurent Orseau, Matt Audesse, Matthew
Flatt, Matthias Felleisen, Mike Sperber, naveen srinivasan, Niklas
Larsson, Noah Ma, Oscar Waddell, Pavel Panchekha, Phil Nguyen, Philip
McGrath, Philippe Meunier, rgkirch, Robby Findler, Robert Postill, Ryan
Culpepper, Sam Tobin-Hochstadt, Sergiu Ivanov, Sorawee Porncharoenwase,
Stephen De Gabrielle, Vincent Lee, wackbyte, and Zibing Zhang
Link to package regressions issue for the 8.6 release:
#4366
Racket v8.5
As of this release:
-
Racket's new
-yflag automatically keeps compiled files up to date,
reducing subsequent load times. -
Error-message realms allow Racket-hosted languages to adapt and
rewrite error messages to make sense in a particular context. -
Nonprivileged users can control package installation scope using an
"other-version" directory in the addon-dir. -
Racket CS runs on platforms where native-code generation is not
currently supported (e.g., s390x or ppc64). See "README.txt" in the
source distribution for more information on the --enable-pb flag to
configure. -
DrRacket's new 'Reopen Closed Tab' file menu item will open previously
closed tabs. -
Typed Racket has support for the
xmllibrary; usetyped/xml. -
Rackunit reports source locations for failed test cases in the
Typed Racket language. -
Plot has violin plots and improved box-and-whisker plots.
-
Boxes are supported alongside lists, vectors etc. in place-channel
messages. -
Those who manually configure Racket CS to use Zlib compression for
compiled code should be aware of CVE-2018-25032; the next release and
the current snapshot builds use a newer, safer version of zlib. -
The release includes many other repairs and changes!
The following people contributed to this release:
Alex Harsányi, Alexander Shopov, Alexis King, Andrew Mauer-Oats, Ben
Greenman, Benedek Szilvasy, Bert De Ketelaere, Bogdan Popa, Cameron Moy,
Chung-chieh Shan, Fred Fu, Gustavo Massaccesi, J. Ryan Stinnett, Jamie
Taylor, Joel Dueck, John Clements, Joseph Griego, Khadija Sidhpuri,
Laurent Orseau, Maciej Barć, Matthew Flatt, Matthias Felleisen, Mike
Sperber, Noah Ma, Philip McGrath, Robby Findler, Ryan Culpepper, Sam
Tobin-Hochstadt, Sorawee Porncharoenwase, Stephen De Gabrielle, Tim
Jervis, and Trevor Paley
Racket v8.4
This is version 8.4 of Racket.
-
Command-line Racket provides a new expression editor by default for
its read-eval-print loop (REPL). The new REPL is based on the Chez
Scheme expression editor, but extended to use the same
language-sensitive syntax coloring and indentation tools as DrRacket. -
Typed Racket adds a kind system, preventing programmers from
writing nonsensical type expressions. It checks whether type
constructors are correctly applied to arguments, and separates
type constructors from polymorphic types. The:kindform enables
checking the kind of a type expression at the REPL. The new system
also correctly rejects some ill-formed recursive types. -
Racket has a
file-or-directory-statfor unified information about
file-system objects. -
DrRacket shows the region affected by an
#;S-expression comment
by fading the commented-out region. -
Racket on Chez has faster multiplication and division for some
numbers. -
Web server: The files dispatcher supports all standard caching-related
HTTP response headers (e.g., Cache-Control). -
Web server: A new dispatcher captures the common pattern of processing
HTTP requests and responses in a layered fashion. -
The Web Server supports use of the Cache-Control header, and includes
a new wrapping dispatcher. -
Expander: add "portal" syntax to support new forms of syntax object
binding. -
Documentation search is improved.
-
Some hash operations support an optional
try-order?argument. -
The plot-metrics interface has documentation.
-
Fonts support OpenType feature settings.
-
The Gui library has improved support for Wayland.
-
The computation of quadratic roots is further improved.
-
The
set/ccontract adds support for random generation. -
DrRacket's interactions window supports #lang-specific coloring
and indentation. -
DrRacket's parenthesis-based keyboard shortcuts change based on
the parentheses that each different #lang uses. -
The release includes many other bug repairs and other improvements!
Transition/Update notes:
-
To turn off expeditor and make Racket's REPL go back to the old
editline/readline-based editor, use the command,input readline
and then restart Racket. Get back to the new expression editor with
,input expeditor
To toggle color mode for the new expression editor, use one of the
following, which does not require restarting Racket:,color #false
,color #true -
Support for comment fading in DrRacket requires an increment to
the "WXME" format version so files with non-text content written
by DrRacket v8.4 will open only in v8.4 and later. This does not
affect files that consist only of unicode text. -
The addition of the kind system to Typed Racket means that certain
mild abuses of the type system no longer type check, most notably
the 'application' of a polymorphic type.
The following people contributed to this release:
Alex Harsányi, Alex Knauth, Alexander Shopov, Alexis King, Andrew
Mauer-Oats, Andy Keep, Ayman Osman, Ben Greenman, Bob Burger, Bogdan
Popa, Cameron Moy, D. Ben Knoble, Fred Fu, Greg Hendershott, Gustavo
Massaccesi, Jamie Taylor, Jarhmander, Jesse Alama, Joel Dueck, John
Clements, Jordan Johnson, Laurent Orseau, Leif Andersen, Marc Burns,
Matthew Flatt, Matthias Felleisen, Mike Engelhart, Mike Sperber, Noah
Ma, Oscar Waddell, Pavel Panchekha, Philip McGrath, rgkirch, Robby
Findler, Sam Tobin-Hochstadt, Sergiu Ivanov, Sorawee Porncharoenwase,
Stefan Schwarzer, Stephen De Gabrielle, Tony Garnock-Jones, Viko Riféo,
and Zachary Mao
Link to package regressions issue for the 8.4 release:
#4125
Racket v8.3
Racket version 8.3 is now available from https://download.racket-lang.org.
- Racket removes syntax arming and disarming in favor of a simpler system of protected syntax operations, along with other updates to the syntax system.
- DrRacket has improved support for custom
#langlanguages. - Typed Racket improves precision for type-checking of non-polymorphic structures, existential types, and certain binding forms.
- Scribble HTML output gains a button to show / hide the table of contents on mobile platforms.
- Redex’s stepper’s GUI shows IO-judgment form rule names.
- Many bug fixes!
The following people contributed to this release:
Adam Zaiter, Alex Knauth, Alexis King, Ayman Osman, Ben Greenman, Bob Burger, Bogdan Popa, Brian Adkins, Cameron Moy, Carl Eastlund, Dan Holtby, Dominik Pantůček, Eli Barzilay, Ethan Leba, Fred Fu, Greg Hendershott, Gustavo Massaccesi, J. Ryan Stinnett, Jason Hemann, Jay McCarthy, Jesse Alama, Joel Dueck, John Clements, Jonathan Simpson, Kartik Sabharwal, Laurent Orseau, Lehua Ding, Maciej Barć, Marc Burns, Matthew Flatt, Matthias Felleisen, Michael Ballantyne, Mike Sperber, Noah Ma, Paulo Matos, Pavel Panchekha, Philip McGrath, Robby Findler, Ryan Culpepper, Ryan Sundberg, Sage Gerard, Sam Tobin-Hochstadt, Shu-Hung You, Sorawee Porncharoenwase, Stefan Schwarzer, Stephen De Gabrielle, Vincent St-Amour, William J. Bowman, minor-change, and yjqww6
Racket v8.2
Racket version 8.2 is now available from https://download.racket-lang.org.
- Racket CS improved the performance of large-integer arithmetic.
- Racket has improved support for layered and tethered installation.
- Racket CS supports nonatomic allocation via
ffi/unsafe. - Cross-compilation works fully with the
raco crosstool, which is distributed separately as the “raco-cross” package. - DrRacket has performance improvements when editing files with picts containing large bitmaps.
- Typed Racket more consistently refines field types of non-polymorphic structs.
- Printing of values is unified across the teaching language implementations and the stepper.
The following people contributed to this release:
Alex Harsányi, Alex Knauth, Amirouche, Andrew Mauer-Oats, Bob Burger, Bogdan Popa, Cameron Moy, Crystal Jacobs, Dale Vaillancourt, Diego A. Mundo, Fred Fu, Greg Hendershott, Gustavo Massaccesi, Jack Firth, Jamie Taylor, Jarhmander, Jason Hemann, Jay McCarthy, Jeffrey D. Swan, Jens Axel Søgaard, Jesse Alama, John Clements, Laurent Orseau, Lazerbeak12345, Matthew Flatt, Matthias Felleisen, Mike Sperber, Nada Amin, Noah Ma, Oscar Waddell, Paulo Matos, Pavel Panchekha, Philip McGrath, Ray Racine, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Shu-Hung You, Sorawee Porncharoenwase, Stephen Chang, Thorsten Blum, Tony Garnock-Jones, WarGrey Gyoudmon Ju, William J. Bowman, Yu Fang, and minor-change.
Racket v8.1
Racket version 8.1 is now available from https://racket-lang.org/.
-
DrRacket tabs can be dragged, and have new close buttons.
-
Racket CS supports cross-compilation using
raco exe. -
Racket CS supports Android on 32-bit and 64-bit ARM processors.
-
The database library supports running queries in OS threads.
-
Check-Syntax arrows correctly identify the definition site of
identifiers with contracts. -
Racket CS performance has improved for structure predicates and
accessors -
Racket CS is faster at multiplying extremely large numbers and
dividing large integers. -
Racket CS allows callbacks to raise exceptions if they are annotated
with#:callback-exns?. -
New ephemeron hash tables simplify the implementation of tables where
keys can refer to values. -
Typed Racket supports for/foldr.
-
The stepper works for #lang htdp/*sl.
-
Struct signatures work for the ASL teaching language.
The following people contributed to this release:
Alex Harsányi, Alex Knauth, Alexander Shopov, Alexis King, Andrew
Mauer-Oats, Anish Athalye, Ben Greenman, Bert De Ketelaere, Bob Burger,
Bogdan Popa, Brian Adkins, Cameron Moy, David Van Horn, Dexter Lagan,
Dominik Pantůček, Fred Fu, Greg Hendershott, Gustavo Massaccesi, Hazel
Levine, Ismael Luceno, Jack Firth, Jarhmander, John Clements, Jörgen
Brandt, Laurent Orseau, Lazerbeak12345, Matthew Flatt, Matthias
Felleisen, Micah Cantor, Mike Sperber, Noah Ma, Patrick McCarty, Paulo
Matos, Pavel Panchekha, Philip McGrath, Philippe Meunier, R. Kent
Dybvig, Robby Findler, Ryan Culpepper, Ryan Kramer, Sam Tobin-Hochstadt,
Sergiu Ivanov, Shu-Hung You, Sorawee Porncharoenwase, Stephen De
Gabrielle, William J. Bowman, bmitc, xxyzz, yjqww6, and ymdarake.
Feedback Welcome!