Welcome to the fifty-fourth issue of Racket News.
Hello everyone and welcome to a new issue. I am fresh from a long leave, probably the longest in my work life and I am feeling refreshed. Hope you are holding on tight, ’cause we have a lot to go through!
A note on emails… I am consolidating my email addresses and accounts to using only two. So you should be seeing emails coming from p@ocmatos.com
from here on out. This is the email you should be using as well if you want to contact me privately.
Grab a large coffee! No - not that small. Larger still …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 - August, 2021
- Racket Project Statistics - September, 2021
- Sponsors
What’s New?
- Jay has announced that we will once again have an online RacketCon from the 5th to the 7th of November, 2021. Mark your calendars! More details to come soon.
- The Syntax Parse Bee 2021 competition, ran by Ben Greenman and Stephen De Gabrielle, is now closed. They received 22 entries from 15 different Racketeers. Take a look at the entries here.
- Alexis King has done some Twitching and you can see her first one here.
- There’s a new remote debugging tool in town by Bodgan Popa. Take a look a the video.
- Racket 2 (aka Rhombus) is now using GitHub Discussions - take a look and join the chat.
- Check a new game on the block : "Fission Flare" by Ryan Kramer.
Racket around the web
Do you blog about Racket? Let me know!
- Screenshots by Alex Harsányi.
- What Should + Mean in Programming Languages? by Siddhartha Kasivajhula.
- Using an escape continuation to keep fussy code more readable by Jesse Alama.
- Announcing dbg by Bogdan Popa.
- The Animated Guide to Symex 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.
in-out-logged
(pkg/src) is a library providing a code wrapping logger., by David Storrs.libansilove
(pkg/src) is a library providing FFI bindings to libansilove., by Maciej Barć.laundry
(pkg/src) is an implementation of org mode in Racket., by Tom Gillespie.pprint-compact
(pkg/src) is an implementation of ‘A Pretty But Not Greedy Printer’ in Racket., bysorawee
.codepoint
(pkg/src) is an library for operations on unicode codepoints and UCD properties., by Simon Johnston.try-catch
(pkg/src) is a error handling library., by David Storrs.dbg
(pkg/src) is a remote debugging client and server implementation., by Bodgdan Popa.fmt
(pkg/src) is an extensible code formatter for Racket., bysorawee
.pareto-frontier
(pkg/src) is a library to efficiently compute the pareto frontier set., bysorawee
.ebuild
(pkg/src) is a library to ease automatic ebuild creation., by Maciej Barć.majordomo2
(pkg/src) is a job manager that includes automatic retries with updated state on restart., by David Storrs.turing
(pkg/src) is a turing language for racket modelled on Alan Turing’s 1936 paper., bycuriousyogurt
.social-contract
(pkg/src) is a high-level, composable syntax for describing contracts., by Siddhartha Kasivajhula.
Call to Racket!
I am taking a break for this issue… still not sure where to go with this section but I am thinking about it. It turns out this was less popular than I initially expected and due to the amount of un-triaged bugs in the racket repos, it’s also hard to choose one that’s ameanable to those who are just starting to contribute. If you have any suggestions about this, let me know.
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!
If you want to run Guile files within DrRacket, you will need to invoke the Guile runtime. Here’s a quick-and-dirty quickscript that does that for you, assuming you are using Linux or Mac:
#lang racket/base
(require quickscript
racket/system
racket/port
racket/class)
(define-script guile-run
#:label "Guile Run"
(λ (selection #:file fi #:interactions ints #:frame drr)
(define str1 (format "Running Guile on ~a\n" (path->string fi)))
(define out-str
(with-output-to-string (λ () (system* "/usr/bin/env" "guile" (path->string fi)))))
(send drr ensure-rep-shown ints)
(send ints reset-console)
(send ints insert
(string-append str1
(make-string (string-length str1) #\—)
"\n"))
(send ints insert out-str)
#f))
Open a Guile file in DrRacket. DrRacket may not recognise that it’s not a racket file, so you may see some errors, but forget about them. Click on Scripts|Run Guile and you should see the output of your Guile program in the interaction windows.
Notes:
- It’s very simple (written in 15min), it doesn’t implement a REPL, it only prints the output. If your program is asking the user for input, it will hang. If your program hangs, it will hang too.
- Guile must be accessible via
/usr/bin/env guile
. - The script above can be easily adapted to support most other interpreters.
- DrRacket will also syntax-color guile files like scheme files, so it shouldn’t be too bad. DrRacket may yell because there’s no #lang line, but you can disable you can “disable background expansion” by clicking on the red disk at the bottom right corner of DrRacket
- You may want to check
Edit|Modes|Scheme
mode.
Here’s an example of a test program:
(display "Hello, world!")
(newline)
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 congame by Marc Kaufmann and Bogdan Popa.
From the website:
congame is the best experimental economics software written in Racket. zTree and oTree are two common experimental economics platforms. The reason for building congame is the usual: I used oTree for some of my experiments, but found that it lacked some specific features I needed in my experiments.
Featured Racket Paper
This issue’s featured paper is How to Design Co-Programs, by Jeremy Gibbons.
Abstract:
The observation that program structure follows data structure is a key lesson in introductory programming: good hints for possible program designs can be found by considering the structure of the data concerned. In particular, this lesson is a core message of the influential textbook “How to Design Programs” by Felleisen, Findler, Flatt, and Krishnamurthi. However, that book discusses using only the structure of input data for guiding program design, typically leading towards structurally recursive programs. We argue that novice programmers should also be taught to consider the structure of output data, leading them also towards structurally corecursive programs.
Upcoming Meetups
Do you know of any upcoming meetups I can advertise? Let me know.
-
Racket Video Meetup
Where: https://gather.town/app/wH1EDG3McffLjrs0/racket-users
When: First Saturday EVERY Month UTC: 20:00 (30 minutes but can overrun) Calendar: Google iCal
The next meetup is
London, United Kingdom Sat, 6 Nov 2021 at 21:00 BST Prague, Czechia Sat, 6 Nov 2021 at 22:00 CEST New York, USA Sat, 6 Nov 2021 at 16:00 EDT San Francisco, USA Sat, 6 Nov 2021 at 13:00 PDT Corresponding UTC Sat, 6 Nov 2021 at 20:00
- RacketCon 2021 (online), from November 5th to November 7th 2021. More details to come.
Racket Project Statistics - August, 2021
Some data about the activity in the Racket et al. repositories, for the month of August, 2021.
# commits | Issues (new/closed/open) | PRs (new/closed/open) | |
---|---|---|---|
racket | 55 | 14/13/318 | 17/16/89 |
typed-racket | 8 | 6/2/250 | 6/6/24 |
redex | 5 | 2/8/40 | 0/0/7 |
drracket | 4 | 2/1/209 | 2/2/2 |
scribble | 3 | 0/0/74 | 4/3/17 |
plot | 0 | 0/0/8 | 0/0/1 |
Contributions by (18):
- Bob Burger
- Bogdan Popa
- Cameron Moy
- Dominik Joe Pantůček
- Ethan Leba
- Fred Fu
- Gustavo Massaccesi
- Kartik Sabharwal
- Marc Burns
- Matthew Flatt
- Michael Ballantyne
- Mike Sperber
- Paulo Matos
- Robby Findler
- Sam Tobin-Hochstadt
- Stephen De Gabrielle
- shhyou
- sorawee
Of these, 5 are new contributors for 2021:
- Ethan Leba
- Kartik Sabharwal
- Marc Burns
- Michael Ballantyne
- Stephen De Gabrielle
Repositories included above are: racket
, ChezScheme
, redex
, typed-racket
, drracket
, scribble
, plot
.
Racket Project Statistics - September, 2021
Some data about the activity in the Racket et al. repositories, for the month of September, 2021.
# commits | Issues (new/closed/open) | PRs (new/closed/open) | |
---|---|---|---|
racket | 26 | 12/3/328 | 15/8/96 |
drracket | 7 | 11/1/217 | 2/0/4 |
redex | 2 | 1/1/40 | 0/0/7 |
typed-racket | 1 | 1/1/250 | 1/1/24 |
scribble | 1 | 2/0/76 | 3/1/19 |
plot | 0 | 0/0/8 | 0/0/1 |
Contributions by (8):
- Brian Adkins
- Fred Fu
- J. Ryan Stinnett
- Matthew Flatt
- Philip McGrath
- Robby Findler
shhyou
sorawee
Of these, 1 are new contributors for 2021:
- J. Ryan Stinnett
Repositories included above are: racket
, ChezScheme
, redex
, typed-racket
, drracket
, scribble
, plot
.
Sponsors
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.
Contributors
Thanks to
- Laurent Orseau
- Stephen De Gabrielle
for their contributions to this issue.
_The next issue is planned for publication during week 42. Contributions welcome!
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.