Racket News - Issue 54

Permalink: https://racket-news.com/2021/10/racket-news-issue-54.html

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

  1. What’s New?
  2. Racket Around the Web
  3. New Releases
  4. Call to Racket!
  5. DrRacket Quickscript of the day
  6. Project in the Spotlight
  7. Featured Racket Paper
  8. Upcoming Meetups
  9. Racket Project Statistics - August, 2021
  10. Racket Project Statistics - September, 2021
  11. 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!

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., by sorawee.
  • 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., by sorawee.
  • pareto-frontier (pkg/src) is a library to efficiently compute the pareto frontier set., by sorawee.
  • 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., by curiousyogurt.
  • 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

    https://www.timeanddate.com/worldclock/converter.html?iso=20211106T200000&p1=136&p2=204&p3=179&p4=224

  • 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.


Contribute

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