Releases: racket/racket
Racket v8.15
- Documentation search results are ordered, with visual cues
indicating what their source is (core, main-distribution, etc.).
These results are also grouped by language family (Racket, Rhombus,
etc.). (See https://docs.racket-lang.org/search/index.html?q=second
.) - DrRacket offers to restore previously open files when starting,
which can be made the default. - In DrRacket, Picts can be saved by right-clicking.
raco pkg
introduces theuninstall
command as the opposite of
install
. Theremove
name for this functionality is retained for
compatibility. (See
https://docs.racket-lang.org/pkg/cmdline.html#%28part._raco-pkg-uninstall%29
.)raco pkg
improves the handling of--clone
and--unclone
. (See
https://docs.racket-lang.org/pkg/cmdline.html#%28part._raco-pkg-update%29
.)- iOS is a compilation target, distinct from macOS.
- Racket supports falling back to IPv4 during hostname resolution when
IPv6 fails. - Memory allocated using the ffi/unsafe library can be initially
zeroed, using the'zeroed-atomic
and'zeroed-atomic-interior
flags. (See
https://docs.racket-lang.org/foreign/foreign_pointer-funcs.html#%28idx._%28gentag._11._%28lib._scribblings%2Fforeign%2Fforeign..scrbl%29%29%29
.) - Many other bugs are fixed and documentation has been improved!
The following people contributed to this release:
Alec Mills, Alex Knauth, Alexander Shopov, Ashlynn Anderson, Ashton
Wiersdorf, Ben Greenman, Benjamin Yeung, Bob Burger, Bogdan Popa,
Breck Yunits, Carl Gay, Claes Wallin (韋嘉誠), CooperCorad, Crystal
Jacobs, D. Ben Knoble, Dexter Santucci, Eduardo Cavazos, Emil
Szpakowski, evelynmitchell, Greg Hendershott, Gunnar Ahlberg, Gwen
Weinholt, Idiomdrottning, Ikko Eltociear Ashimine, Jacqueline Firth,
Jarhmander, Jay McCarthy, Jens Axel Søgaard, Jimmy McNutt, jinser,
Jinser Kafka, John Clements, lukejianu, Marc Nieper-Wißkirchen,
Matej Fandl, Matthew Flatt, Matthias Felleisen, Michael Ballantyne,
Mike Sperber, olopierpa, Paul Morris, Phil Nguyen, Philip McGrath,
Robby Findler, Ronald Garcia, Ryan Culpepper, Sam Phillips, Sam
Tobin-Hochstadt, Siddhartha Kasivajhula, Sorawee Porncharoenwase,
Stephen De Gabrielle, Syntacticlosure, Taylor Allred, Tomas Fabrizio
Orsi, Wing Hei Chan, and Yafei Yang.
Racket v8.14
-
64-bit ARM Windows is one of the standard pre-built downloads.
-
The
compiler/demod
language integrates demodularization into the
program rather than an external tool. Using the language approach
cooperates with other Racket tools and allows demodularization to be
used on libraries. Additionally, demodularization handles submodules
and can prune definitions, significantly shrinking the size of some
programs. -
The
contract-in
form enables contracts to be specified in an
importing module. -
The
#%declare
form supports the#:flatten-requires
and
#:unlimited-compile
keywords -
Identifiers such as
case-λ
,match-λ
andλ
are equivalent to
their Latin-alphabet equivalents (case-lambda
,match-lambda
, and
lambda
) in more contexts, including uses ofmatch
. -
The
hash-filter
function allows the use of a predicate to select a
sub-table of a hash table. -
The module browser can perform filtering on submodules.
-
The
raco test
command-line form respects the
current-test-invocation-directory
parameter, and shows well-formed
module paths in its output. -
Racket CS allows the use of in-memory boot files.
-
The
raco/testing
collection brings together a variety of testing-
related functions and forms. -
This release also includes many bug-fixes and documentation updates!
-
NOTE: This release (and version 8.13) have a known build problem that
affects the builtpkgs source bundle on Windows. In order to avoid this
problem, use a pre-built bundle or build using a source bundle other
than the "builtpkgs" one. Nightly builds do not suffer from this
problem.
The following people contributed to this release:
Alex Knauth, Alexander Shopov, Ben Greenman, Bert De Ketelaere, Bob
Burger, Bogdan Popa, Cadence Ember, Carl Gay, D. Ben Knoble, Gregory
Rosenblatt, Gustavo Massaccesi, John Clements, John Sullivan, Jordan
Johnson, luistung, Matthew Flatt, Matthias Felleisen, Noah Ma, Philip
McGrath, Robby Findler, Ryan Culpepper, Sam Tobin-Hochstadt, Sergey
Fedorov, Sorawee Porncharoenwase, Wing Hei Chan, and ZhangHao.
Racket v8.13
- The racket/treelist and racket/mutable-treelist libraries provide
list-like containers that support many operations in effectively
constant time, including appending and extracting sub-lists without
mutating the given list. Treelists are implemented as RRB Vectors,
invented by Stucki, Riompf, Ureche, and Bagwell.
(see https://docs.racket-lang.org/reference/treelist.html#(part._treelist)
and https://dl.acm.org/doi/abs/10.1145/2784731.2784739 )
- The
hash-filter-keys
andhash-filter-values
functions allow users
to filter hashes using a predicate on either keys or values.
- The
vector-extend
andvector*-extend
functions provide a way
to pre-populate the prefix of a newly allocated vector using the elements
of an existing vector.
-
Command-line raco setup, package update, and package installation use
terminal control (when available) to show what they are working on
more compactly and with a progress bar. -
Racket v8.13 uses Unicode 15.1 for character and string operations.
-
Machine-specific cross-module optimization allows improved support for
static generation of foreign-function bindings. -
The scribble/acmart language uses v2.01, which avoids errors
concerning the hyperref package in some latex installations.
The following people contributed to this release:
Alec Mills, Ben Greenman, Bob Burger, Bogdan Popa, dr-neptune, Fred Fu,
Gustavo Massaccesi, Jason Hemann, Jay McCarthy, John Clements, Jordan
Johnson, Justin Dhillon, Mao Yifu, Matias Eyzaguirre, Matthew Flatt,
Matthias Felleisen, Mike Sperber, olopierpa, Oscar Waddell, Pavel
Panchekha, Philip McGrath, Robby Findler, Sam Phillips, Sam
Tobin-Hochstadt, Siddhartha Kasivajhula, Sorawee Porncharoenwase,
Stephen De Gabrielle, Tim Standen, William E. Byrd, and Wing Hei Chan.
Racket v8.12
-
The "Die Macht der Abstraktion" language levels are no longer present,
replaced by the "Schreibe dein Programm" language levels which have been
available for several years. (see https://www.deinprogramm.de/sdp/ ) -
The release fixes a problem with the binding structure of the
for/fold
form in the rare situation when an iteration clause identifier shadowed
an accumulator identifier. This change may break code that depends on
the old binding structure. (see https://docs.racket-lang.org/reference/for.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._for%2Ffold%29%29 ) -
Racket automatically sets the close-on-exec flag when opening a file, on
systems where this is available. This change lowers the cost of avoiding
problems that can occur when file descriptors become accidentally shared
between processes. (see https://docs.racket-lang.org/reference/file-ports.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._open-input-file%29%29 ) -
Match includes
hash
andhash*
patterns. (see https://docs.racket-lang.org/reference/match.html#%28form._%28%28lib._racket%2Fmatch..rkt%29._match%29%29 ) -
The
vector-set/copy
function allows creation of a new vector that differs
at only one index. This change also addsvector-append
andvector-copy
primitives. (see https://docs.racket-lang.org/reference/vectors.html#%28def._%28%28lib._racket%2Fvector..rkt%29._vector-set%2Fcopy%29%29 ) -
The
pregexp-quote
function brings the functionality ofregexp-quote
to pregexps. (see https://docs.racket-lang.org/reference/regexp.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._pregexp-quote%29%29 ) -
The C FFI convention-based converter supports
PascalCase
andcamelCase
in
addition to an underscore-based convention. (see https://docs.racket-lang.org/foreign/Defining_Bindings.html#%28form._%28%28lib._ffi%2Funsafe%2Fdefine%2Fconventions..rkt%29._convention~3ahyphen-~3ecamel.Case%29%29 ) -
The
racket/case
library allowscase
-like forms that use different
equality comparisons, such aseq?
andequal-always?
. (see https://docs.racket-lang.org/reference/case.html#%28form._%28%28lib._racket%2Fcase..rkt%29._case%2Fequal%29%29 ) -
Scribble rendering to HTML adds linking and information buttons when
hovering over heading titles. -
The
interval-map
data structure supports iterator functions in the style
ofgen:ordered-dict
. (see https://docs.racket-lang.org/data/Orders_and_Ordered_Dictionaries.html#%28def._%28%28lib._data%2Forder..rkt%29._gen~3aordered-dict%29%29 )
The following people contributed to this release:
Alex Harsányi, Alex Knauth, Alex Muscar, Alexis King, Ben Greenman, Bert
De Ketelaere, Bob Burger, Bogdan Popa, Chris Payne, Fred Fu, J. Ryan
Stinnett, Jamie Taylor, Jared Forsyth, Jarhmander, Jens Axel Søgaard,
Joel Dueck, John Clements, Jordan Johnson, Ken Harris, Laurent Orseau,
Mao Yifu, Marc Nieper-Wißkirchen, Matteo d’Addio, Matthew Flatt,
Matthias Felleisen, Micah Cantor, Mike Sperber, naveen srinivasan, Oscar
Waddell, Philip McGrath, Philippe Meunier, Robby Findler, Rocketnia, Sam
Phillips, Sam Tobin-Hochstadt, Sarthak Shah, Shu-Hung You, Sorawee
Porncharoenwase, Stephen De Gabrielle, Tom Price, ur4t, Wing Hei Chan,
and ZhangHao
Racket v8.11.1
Racket version 8.11.1 is now available from https://racket-lang.org/
This bug-fix release repairs a problem with building from source when using the "builtpkgs" source distribution.
Feedback Welcome
Racket v8.11
Racket version 8.11 is now available from
https://racket-lang.org/
As of this release:
-
Match clauses can include a #:do option to allow evaluation of code
and bindings before a following #:when clause. Cf. https://docs.racket-lang.org/reference/match.html#%28form._%28%28lib._racket%2Fmatch..rkt%29._match%29%29 -
JSON Serialization supports indentation with an #:indent option to
write-json
. Cf. https://docs.racket-lang.org/json/index.html#%28def._%28%28lib._json%2Fmain..rkt%29._write-json%29%29 -
An
initiate-sequence
function simplifies the creation of sequences.
Cf. https://docs.racket-lang.org/reference/sequences.html#%28def._%28%28lib._racket%2Fsequence..rkt%29._initiate-sequence%29%29 -
The
:do-in
form allows an inner definition sequence. Cf. https://docs.racket-lang.org/reference/for.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._~3ado-in%29%29 -
The
redex-define
form allows pattern-matching in PLT Redex using a
define
-like syntax. Cf. https://docs.racket-lang.org/redex/reference.html#%28form._%28%28lib._redex%2Freduction-semantics..rkt%29._redex-define%29%29 -
Racket and Chez Scheme use Robert L. Smith's "Algorithm 116" for
division of complex numbers. Cf. https://dl.acm.org/doi/10.1145/368637.368661 -
DrRacket has indentation guides that provide visual cues indicating
how code is indented and grouped, accessible by using
(<menu-key>-shift-i). -
"Comment-out" menu items can be specific to the #lang used by the
current file. Cf. https://docs.racket-lang.org/framework/Text.html#%28def._%28%28lib._framework%2Fmain..rkt%29._text3aindent-guides3c253e%29%29 -
Unused identifiers have a tooltip indicating that they have no bound
occurrences. -
Quickscript includes a new form of scripting in the form of "hook"
functions that can be attached to existing events. Cf. https://docs.racket-lang.org/quickscript/index.html#%28part._.Hooks%29 -
Plots include
plot-inset
andplot-legend-padding
parameters to
control the amount of space left unused around the plot edge and plot
legend. Cf. https://docs.racket-lang.org/plot/params.html#%28def._%28%28lib._plot%2Fmain..rkt%29._plot-inset%29%29 -
There are many other documentation improvements, optimizations, and
bug fixes!
Thank You
Thank you to the people who contributed to this release:
Alex Harsányi, Ben Greenman, Bogdan Popa, Cameron Moy, Camille
d’Alméras, D. Ben Knoble, Efraim Flashner, Eric S. Raymond, Fred Fu,
Greg Hendershott, Gustavo Massaccesi, Jay McCarthy, jim, Joel Dueck,
John Clements, Jon Eskin, Laurent Orseau, Lucas Sta Maria, mAdkins, Mark
Hedlund, Matteo d’Addio, Matthew Flatt, Matthias Felleisen, Mike
Sperber, Noah Ma, Oscar Waddell, Philip McGrath, Qifan Wang, Robby
Findler, Ross Angle, Ryan Culpepper, Sam Tobin-Hochstadt, shenleban
tongying, Shu-Hung You, Sorawee Porncharoenwase, Stephen De Gabrielle,
Wing Hei Chan, xxyzz, and ZhangHao
Feedback Welcome
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-code
library 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-expand
submodule 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-cons
supports multiple values. (cf. https://docs.racket-lang.org/reference/streams.html#%28form._%28%28lib._racket%2Fstream..rkt%29._stream-cons%29%29) -
unit/c
subcontracts 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/class
provides thedynamic-instantiate
procedure 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-file
library 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/bibtex
andscriblib/autobib
libraries 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