Racket News - Issue 51

Permalink: https://racket-news.com/2021/06/racket-news-issue-51.html

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

  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
  10. Sponsors

What’s New?

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.

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


Contribute

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