Welcome to the fifty-third issue of Racket News.
As you might have noticed there was a long hiatus between this and the previous newsletter. However, summer holidays and getting married has gotten in the way of sitting down and releasing an issue of Racket News. I am still not done as I am about to leave on a honeymoon, so expect the next issue to come mid-September, possibly week 37 of 2021.
In any case, we have a lot of ground to cover, so 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
- Racket v8.2 has been released. Racket CS has improved performance of large-integer arithmetic, support for nonatomic allocation via
ffi/unsafeand cross-compilation through the
raco crosstool among many other things.
- This old blog post on Thoughts On Lisp And Racket recently made HNs first page. Time to revisit it!
- As part of a Programming languages course on Coursera there’s a video on Racket Macros with define-syntax that you probably shouldn’t miss.
- Check some more Racket Hacking fun with Bogdan Popa on Youtube: Declarative GUIs.
- D. Ben Knoble has put up a project to archive slack channels.
Racket around the web
Do you blog about Racket? Let me know!
- Improvements in koyo 0.9 by Bogdan Popa.
- Announcing gui-easy by Bogdan Popa.
- Racket v8.2 by John Clements.
- Who Owns the Fish? by Alex Harsányi.
- Shaded Area Plot by Alex Harsányi.
- Racket, OpenGL, and You by Aeva.
If you know of library releases or maybe your own libraries and you want them to be featured, please let me know.
sawzall(pkg/src) is a grammar of data manipulation, inspired by dplyr, by Hazel Levine.
http123(pkg/src) is a HTTP client with support for HTTP/1.1 and HTTP/2, by Ryan Culpepper.
cli(pkg/src) is a language for writing command line interfaces, by Siddhartha Kasivajhula.
gemtext(pkg/src) is a text/gemini parser, by Sebastian René Higgins.
box-extra(pkg/src) is a library providing extra utilities for working with boxes, by Bogdan Popa.
try-catch-finally(pkg/src) is a macro for catching exceptions and running teardown operations, by Alex Knauth.
try-catch-match(pkg/src) is a try-catch-finally macro that binds with match, by Benedek Szilvasy.
dirname(pkg/src) is a library providing directory name utility functions, by Maciej Barć.
gui-easy(pkg/src) is a declarative API on top of
racket/gui, by Bogdan Popa.
noise(pkg/src) is a Perlin and simple noise generators, by JP Verkamp.
tabular-asa(pkg/src) is a fast, efficient, and immutable dataframes implementation, by Jeffrey Massung.
jsond(pkg/src) is a racket language for embedding JSON data, by D. Ben Knoble.
rince(pkg/src) is an (in-progress) implementation of C semantics, by Leo Uino.
fexpress(pkg/src) is a compilation-friendly fexpr language, by Ross Angle.
k(pkg/src) is a theorem prover based on Racket ecosystem, 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.
Our Call to Racket champion was
sorawee who closed successfully issue 1463 with cmmit 0321945. Congrats! The next call to Racket is issue #1636 of
racket/racket. Go for it! 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?
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!
Quickscript to move the current (saved) tab to a new DrRacket window (gist):
#lang racket/base (require quickscript quickscript/utils racket/class drracket/tool-lib racket/gui/base) (script-help-string "move the current (saved) tab to a new DrRacket window") (define-script move-to-new-window #:label "Move tab to new window" #:menu-path ("&Utils") (λ (selection #:definitions defs #:frame fr) (define fname (send defs get-filename)) (cond [(or (not fname) (send defs is-modified?)) (message-box "Cannot move window" "The editor must be saved before moving it to a new window")] [else (define fr2 (drracket:unit:open-drscheme-window #f)) (define txt (send fr2 get-definitions-text)) (smart-open-file fr2 fname) (send fr close-current-tab)]) #f)) (module url2script-info racket/base (provide filename url) (define filename "move-to-new-window.rkt") (define url "https://gist.github.com/Metaxal/bfef2b3ee77f3e40aa449d87851dbf81"))
Laurent Orseau had to make a small change to Quickscript, so you’ll need the latest version of quickscript to make it work. The bonus is that the new version of Quickscript has access to everything in
drracket/tool-lib without opening a new instance of drracket each time!
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 rsound by John Clements.
From the website:
RSound is a sound engine for Racket. This collection provides a means to represent, read, write, play, and manipulate sounds.
Featured Racket Paper
This issue’s featured paper is How to Evaluate Blame for Gradual Types, by Lukas Lazarek, Ben Greenman, Matthias Felleisen, and Christos Dimoulas.
Programming language theoreticians develop blame assignment systems and prove blame theorems for gradually typed programming languages. Practical implementations of gradual typing almost completely ignore the idea of blame assignment. This contrast raises the question whether blame provides any value to the working programmer and poses the challenge of how to evaluate the effectiveness of blame assignment strategies. This paper contributes (1) the first evaluation method for blame assignment strategies and (2) the results from applying it to three different semantics for gradual typing. These results cast doubt on the theoretical effectiveness of blame in gradual typing. In most scenarios, strategies with imprecise blame assignment are as helpful to a rationally acting programmer as strategies with provably correct blame.
There’s a video available for the paper.
Do you know of any upcoming meetups I can advertise? Let me know.
Racket Project Statistics
Some data about the activity in the Racket et al. repositories, for the month of July, 2021.
|# commits||Issues (new/closed/open)||PRs (new/closed/open)|
Contributions by (21):
- Alexis King
- Ben Greenman
- Bogdan Popa
- Cameron Moy
- Fred Fu
- Greg Hendershott
- Jason Hemann
- Lehua Ding
- Maciej Barć
- Matthew Flatt
- Paulo Matos
- Robby Findler
- Sage Gerard
- Sam Tobin-Hochstadt
- Stefan Schwarzer
- William J. Bowman
Of these, 5 are new contributors for 2021:
- Lehua Ding
- Maciej Barć
- Sage Gerard
- Stefan Schwarzer
Repositories included above are:
Many thanks to my sponsors:
- Bogdan Popa is a software developer based in Cluj-Napoca, Romania. He is the author of various Racket libraries and he runs an e-commerce business built on top of Racket.
- Geoffrey Knauth is a programmer, pilot, coxswain/rower, linguist.
- 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.
- Marc Kaufmann
- 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.
- D. Ben Knoble
- Jeffrey Massung
- Stephen De Gabrielle
for their contributions to this issue.
The next issue is planned for publication during week 37, specifically September 13. Contributions welcome - deadline for next issue: Sunday, September 12, 2021.
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.