Welcome to the fifty-first issue of Racket News.
Hello everyone - welcome to our new subscribers and here’s another issue for you of Racket News. A shoutout to Fred Fu, the first person to provide a PR to Racket News to fix some typographical mistakes on my Sponsors list. Thanks Fred!
Grab a coffee and enjoy the issue!
Table of Contents
- What’s New?
- Racket Around the Web
- New Releases
- Call to Racket!
- DrRacket Quickscript of the day
- Project in the Spotlight
- Featured Racket Paper
- Upcoming Meetups
- Racket Project Statistics
- Sponsors
What’s New?
- From Racket Stories: this interesting post on text editors by Lucas Paul.
- A shoutout to the
raco cross
tool Matthew Flatt created last month that provides a convenient interface to cross-compile Racket. I really think we need better tooling in this area and something like this is a step in the right direction. Also take a look at the announcement in the mailing list. - There’s an interesting thread on
racket-dev
on understanding the implementation offor/fold
- The Racket irc channel
#racket
is now in libera.chat, for more information look at the announcement in the mailing list.
Racket around the web
Do you blog about Racket? Let me know!
- Migrating Your Racket Project from Travis to GitHub Actions by Siddhartha Kasivajhula.
New Releases
If you know of library releases or maybe your own libraries and you want them to be featured, please let me know.
euclid
(pkg/src) is a library with data structures and algorithms related to Euclidean geometry, by Jack Firth.covid-19
(pkg/src) is a Racket wrapper of QQ/Sina’s COVID–19 API, by Yanying Wang.scribble-rainbow-delimiters
(pkg/src) is a library for colorizing matched brackets of codes on HTML pages generated by Racket Scribble, by Yanying Wang.todo-txt
(pkg/src) is a parser and report generator for the todo.txt format, by Stefan Schwarzer.raco-format
(pkg/src) is a tool to format Racket source files, by Dan Anderson.beeswax
(pkg/src) is a Pollen-friendly template language, by Joel Dueck.cairo
(pkg/src) is a set of Racket bindings for Cairo matching closely its C API, by Jens Axel-Soegaard.collector2
(pkg/src) is a tool to generate Gentoo ebuild scripts from Racket catalog packages, by Maciej Barć.sudoku-solver
(pkg/src) is a Sudoku solver that can also show the solution process as a GraphViz dot file, by Stefan Schwarzer.jsonrpc
(pkg/src) is a jsonrpc client and server, by Lîm Tsú-thuàn.counter
(pkg/src) is a small counter library to use for console output, logging, etc., by Maciej Barć.code-analyzer
(pkg/src) is a Racket code analysis tool, by Lîm Tsú-thuàn.
Call to Racket!
Want to contribute to Racket? Don’t know where to start? Each RN issue I choose an easy issue to fix to get you started contributing to Racket. Come, give it a go.
For this issue the Call for Racket is for issue 1463 of racket/racket
. Who’s going to have a go at this one? It can be you! If you are interested in fixing this but need some guidance, feel free to comment on the issue page. Will you be our next Champion?
Good luck!
DrRacket Quickscript of the day
Quickscript (featured project of issue 38) provides an easy way to extend DrRacket with small Racket scripts to automate some actions in the editor, while avoiding the need to restart DrRacket. In this new section, contributed by Stephen De Gabrielle, we will be highlighting some of the most interesting scripts out there. Do you have a favourite script? Share it with us!
I’d like to thank Thorsten Blum for this weeks quickscript ’Remove trailing whitespace’ that removes trailing spaces from the selected text:
#lang racket/base
(require quickscript racket/string)
(define-script whitespace
#:label "Remove trailing whitespace"
(λ (selection)
(let ([linebreak (string #\newline)])
(string-join
(map (λ (line)
(string-trim line #px"\\s+" #:left? #f))
(string-split selection linebreak))
linebreak))))
published at https://github.com/toblux/quickscript-user-scripts
Installation: you can paste this into a new script via the menu: Scripts > Manage > New
Get started at the Racket Wiki: Quickscript Scripts for DrRacket
Full documentation at https://docs.racket-lang.org/quickscript/.
Project in the Spotlight
This week’s project in the spotlight is Beeswax by Joel Dueck.
From the website:
Beeswax is a simple templating language. A Beeswax template wraps its contents in a function that can be imported by other modules and applied to data to get a rendered document. Having a #lang for your templates has a few small benefits: it lights up all the little conveniences of your IDE, if you use one (DrRacket, racket-mode, etc.); it’s a little easier to reason about and reuse in other contexts; and it can make renders faster (because the template can be compiled).
Beeswax was designed to be easy to use within Pollen projects, but can be of use in other Racket projects as well.
Featured Racket Paper
This issue’s featured paper is Complete monitors for behavioral contracts, by Christos Dimoulas, Sam Tobin-Hochstadt, and Matthias Felleisen.
Abstract:
A behavioral contract in a higher-order language may invoke methods of unknown objects. Although this expressive power allows programmers to formulate sophisticated contracts, it also poses a problem for language designers. Indeed, two distinct semantics have emerged for such method calls, dubbed lax and picky. While lax fails to protect components in certain scenarios, picky may blame an uninvolved party for a contract violation. In this paper, we present complete monitoring as the fundamental correctness criterion for contract systems. It demands correct blame assignment as well as complete monitoring of all channels of communication between components. According to this criterion, lax and picky are indeed incorrect ways to monitor contracts. A third semantics, dubbed indy, emerges as the only correct variant.
Upcoming Meetups
Do you know of any upcoming meetups I can advertise? Let me know.
- Racket Users Video Meetup (Saturday, July 3 at 20.00 UTC)
Racket Project Statistics
Some data about the activity in the Racket et al. repositories, for the month of May, 2021.
# commits | Issues (new/closed/open) | PRs (new/closed/open) | |
---|---|---|---|
racket | 148 | 27/61/342 | 27/25/87 |
typed-racket | 10 | 7/5/247 | 11/9/26 |
drracket | 8 | 6/3/205 | 1/0/4 |
scribble | 3 | 2/0/72 | 0/0/17 |
redex | 1 | 3/1/45 | 1/1/8 |
plot | 0 | 1/1/8 | 0/0/1 |
Contributions by (22):
- Bogdan Popa
- Cameron Moy
- Dale Vaillancourt
- Fred Fu
- Gustavo Massaccesi
- Jack Firth
- Jamie Taylor
- Jarhmander
- Jason Hemann
- Matthew Flatt
- Matthias Felleisen
- Oscar Waddell
- Paulo Matos
- Robby Findler
- Ryan Culpepper
- Sam Tobin-Hochstadt
- Stephen Chang
- Thorsten Blum
- Tony Garnock-Jones
- WarGrey Gyoudmon Ju
minor-change
shhyou
Of these, 8 are new contributors for 2021:
- Dale Vaillancourt
- Jason Hemann
- Oscar Waddell
- Stephen Chang
- Thorsten Blum
- Tony Garnock-Jones
- WarGrey Gyoudmon Ju
minor-change
Repositories included above are: racket
, ChezScheme
, redex
, typed-racket
, drracket
, scribble
, plot
.
Sponsors
Many thanks to my sponsors:
- Bogdan Popa.
- Jesse Alama. Jesse is a Racketeer, mathematician, and writer based in Main, Germany. He is the organizer of RacketFest, and writer of various Racket books and libraries.
- John Clements. John is a researcher and professor at Cal Poly, a member of the core Racket, and Racket release manager.
- Sam Tobin-Hochstadt. Sam is a researcher and associate professor at Indiana University, a member of the core Racket team, and the brains behind Typed Racket and Pycket.
- Stephen De Gabrielle. Stephen is a product manager at Epro. He is a long time Racket community contributor, editing the Racket wiki, running many community competitions and events, among many other things.
- and my private sponsors, who shall remain anonymous.
If you wish to sponsor me and my work on Racket and Racket News - feel free to visit my GitHub Sponsors webpage. All sponsorship levels are welcome.
Contributors
Thanks to
- Joel Dueck
- Stephen De Gabrielle
for their contributions to this issue.
The next issue is planned for publication during week 25, specifically June, 21. Contributions welcome - deadline for next issue: Sunday, June 20, 2021.
Disclaimer
This issue is brought to you by Paulo Matos. Any mistakes or inaccuracies are solely mine and they do not represent the views of the PLT Team, who develop Racket.
I have also tried to survey the most relevant things that happened in Racket lang recently. If you have done something awesome, wrote a blog post or seen something that I missed - my apologies. Let me know so I can rectify it in the next issue.