Racket News - Issue 55

Permalink: https://racket-news.com/2021/11/racket-news-issue-55.html

Welcome to the fifty-fifth issue of Racket News. Today starts the 11th RacketCon with a virtual biergarten at 7pm CET. Join us in Gather Town.

For now grab a coffee (leave the beer for later), and enjoy!

Table of Contents

  1. What’s New?
  2. Racket Around the Web
  3. New Releases
  4. DrRacket Quickscript of the day
  5. Project in the Spotlight
  6. Featured Racket Paper
  7. Upcoming Meetups
  8. Racket Project Statistics
  9. Sponsors

What’s New?

  • RacketCon starts today! Take a peek at the agenda.
  • sorawee announces fmt, a Racket code formatter.
  • Joel Dueck announces splitflap, a Racket library for generating valid Atom and RSS feeds, including podcast feeds. Make sure to give it a try and give Joel some feedback.

Racket around the web

Do you blog about Racket? Let me know!

New Releases

If you know of library releases or maybe your own libraries and you want them to be featured, please let me know.

  • denxi (pkg/src) is a programming model for distributing data. It reduces the cost of producing package managers, storefronts, operating systems, and CI/CD systems, by Sage Gerard.
  • qi (pkg/src) is another way to structure computations, by Siddhartha Kasivajhula.
  • text-date (pkg/src) is a widget for Racket/gui for date enter, by Roman Klochkov.
  • ez-csv (pkg/src) is a library for reading and writing CSV files painlessly, by Steven Leibrock.
  • expeditor (pkg/src) is a terminal expression editor, by Matthew Flatt.
  • upi-lib (pkg/src) is a unix tools library, by Maciej Barć.
  • esAsm (pkg/src) is a toy assembly-ish language meant to be fun to use, by a11ce.
  • splitflap (pkg/src) is a RSS / Atom feed generation library, by Joel Dueck.
  • taro (pkg/src) is a new programming language written in Racket, by Oleks Litus.
  • smtp-server (pkg/src) is an implementation of RFC5321 for Racket, by Bogdan Popa.
  • raco-static-web (pkg/src) is a little raco command to serve some files on the web, by Sam Phillips.

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!

Rename Identifier is now available as a quickscript:

#lang racket/base

(require quickscript

;;; License: [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) or
;;;          [MIT license](http://opensource.org/licenses/MIT) at your option.

(script-help-string "Rename the identifier under the cursor (if check syntax succeeded)")

(define-script rename-identifier
  #:label "Rename &Identifier"
  #:menu-path ("Re&factor")
  (λ (selection #:definitions defs)
    (define kmap (send defs get-keymap))
    ;; The last `#true` argument ensures that all keymaps in the chain are tried.
    (send kmap call-function (string-constant cs-rename-id) defs (new event%) #true)))

(module url2script-info racket/base
  (provide filename url)
  (define filename "rename-identifier.rkt")
  (define url "https://gist.github.com/Metaxal/a9dc34faaff4ec7e3c7872b63cc1b76f"))

Source: https://gist.github.com/Metaxal/a9dc34faaff4ec7e3c7872b63cc1b76f by Laurent Orseau

This is useful if you have checked Enable keybindings in menus and you want to call Rename identifier via a keyboard shortcut (to customize in the quickscript), or via Alt-s, f, i (navigate the menus with the keyboard).

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 north by Bogdan Popa.

From the website:

north is a database migration tool written in Racket. It helps you keep your database schema in sync across all your environments.

I mentioned north in a previous issue when it was first released, however I was once reminded of how cool it is through Bogdan’s Koyo screencast, which you should definitely take some time to watch if you haven’t already.

Featured Racket Paper

This issue’s featured paper is Prototypes: Object-Orientation, Functionally by François-René Rideau, Alex Knauth, and Nada Amin.


This paper elucidates the essence of Object-Oriented Programming (OOP), using a constructive approach: we identify a minimal basis of concepts with which to synthesize existing and potential object systems. We reduce them to constructions atop the pure untyped lambda calculus, thereby obtaining both denotational semantics and effective implementation. We start from the simplest recognizable model of prototype-based OOP, so simple it arguably does not even have “objects” as such. We build further models of increasing sophistication, reproducing a growing subset of features found in past object systems, including original combinations. We also examine how our approach can deal with issues like typing, modularity, classes, mutation. We use Scheme to illustrate our approach.

Upcoming Meetups

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 October, 2021.

# commits Issues (new/closed/open) PRs (new/closed/open)
racket 69 20/15/333 7/12/91
drracket 7 2/6/213 2/3/3
typed-racket 7 5/2/253 8/5/27
plot 4 1/1/8 2/3/0
scribble 3 1/3/74 2/3/18
redex 2 1/1/40 1/1/7

Contributions by (20):

  • Alex Harsányi
  • Ben Greenman
  • Fred Fu
  • Greg Hendershott
  • Gustavo Massaccesi
  • J. Ryan Stinnett
  • Jamie Taylor
  • Jarhmander
  • Joel Dueck
  • John Clements
  • Leif Andersen
  • Matthew Flatt
  • Matthias Felleisen
  • Noah Ma
  • Oscar Waddell
  • Philip McGrath
  • Robby Findler
  • Sam Tobin-Hochstadt
  • Tony Garnock-Jones
  • sorawee

Of these, 3 are new contributors for 2021:

  • Joel Dueck
  • Leif Andersen
  • Oscar Waddell

Repositories included above are: racket, redex, typed-racket, drracket, scribble, plot.


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 is an assistant professor in economics who runs online surveys and experiments. To make this easier, he is developing congame with the help of Bogdan Popa: Bogdan writes code, Marc contributes ideas and bugs to congame - but mostly bugs.
  • Robert Postill is a Melbourne-based technologist with a love of LISP and Racket.
  • 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.


Thanks to

  • Laurent Orseau
  • D. Ben Knoble
  • Stephen De Gabrielle

for their contributions to this issue.

_The next issue is planned for publication during week 46. Contributions welcome!


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.


Have you seen something cool related Racket? Send it in and we will feature it in the next issue.