Racket News - Issue 39

Permalink: https://racket-news.com/2020/10/racket-news-issue-39.html

Welcome to the thirty-ninth issue of Racket News.

Due to my summer holidays falling in awkward weeks we have seen only a single issue in September. However, we are back with our normal schedule. If you’re ever in doubt check the Racket News Milestones for RN publishing dates.

Hope you’re getting warmed up for RacketCon happening already next week.

In the meantime, grab a coffee and enjoy!

Table of Contents

  1. What’s New?
  2. Racket Around the Web
  3. New Releases
  4. Call to Racket!
  5. Project in the Spotlight
  6. Featured Racket Paper
  7. Upcoming Meetups
  8. Racket Project Statistics

What’s New?

  • Have you ever thought that kickstarting a Racket app, library, gui app, command line app should be quicker? Well, meet racket-templates.
    • Racketeers have been busy creating a collection of templates for Racket Apps and a raco command (raco new <template>) that makes a local copy of the template for adapt for your use case.
    • These templates are intended to be working examples that have base functionality you would expect:
      • lang: a #lang language template;
      • gui-app: a gui-app;
      • raco-command: extends raco to add a new command;
      • cli-command: a cli command template supporting command line arguments and piped input;
      • web-app: database backed web application including user registration/accounts, GitHub integration and modern front end utilising Jquery, Popper, and Bootstrap JS;
      • package: a Racket package;
    • Thanks to Philip Dumaresq (for creating the raco command, that also doubles as a template), Andre Alves Garzia for adding windows compatibility, Sam Tobin-Hochstadt for the #lang template, Jack Firth for the package template and Jens Axel Søgaard for the web-app template.
  • Racket 7.9 release process is about to begin. Upcoming date (for October) are as follows:
    • 7th: Branch day, merge window starts
    • 15th: Merge window ends, testing starts
    • 22nd: Testing ends
  • Have you recently built Racket from source? Was it faster, better, both? Matthew Flatt spent quite a bit of time working on improving the Racket CS Garbage Collector in the last couple of weeks. If you have an application that uses many places or is particularly memory-heavy give a recent snapshot a try and report back.

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.

  • net-pem(src/pkg) is a library for parsing and unparsing Privacy Enhanced Mail (RFC7468) files by TheMetaSchemer.
  • rktermios(src/pkg) is a librrary, working in both Racket BC and CS, that allows the programmer to set the terminal to raw mode by Dominik Pantucek.
  • qtops(src/pkg) is a library providing procedures for performing operations on things with qualities by emsenn.
  • trie(src/pkg) is a library that implements compact storage for nested data with overlapping elements, such as paths in a file tree by David Storrs.

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.

Congrats to last issue’s “Call to Racket” Champion xxyzz. He fixed issue issue 2314 in PR #3408 creating commit 659741b. Thank you for your contribution to Racket.

The next one is issue 3161 in racket/racket. 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!

Project in the Spotlight

This week’s project in the spotlight is Redex by Robert Bruce Findler, Casey Klein, Burke Fetscher, and Matthias Felleisen.

From the website:

PLT Redex is a domain-specific language designed for specifying and debugging operational semantics. Write down a grammar and the reduction rules, and PLT Redex allows you to interactively explore terms and to use randomized test generation to attempt to falsify properties of your semantics. PLT Redex is embedded in Racket, meaning all of the convenience of a modern programming language is available, including standard libraries (and non-standard ones) and a program-development environment.

I cannot believe this project hadn’t been featured before. It’s an amazing project that you should definitely check out. There’s a lot of documentation and a book to keep you entertained.

Featured Racket Paper

This issue’s featured paper is Profiling For Laziness, by Stephen Chang and Matthias Felleisen.

Abstract:

While many programmers appreciate the benefits of lazy programming at an abstract level, determining which parts of a concrete program to evaluate lazily poses a significant challenge for most of them. Over the past thirty years, experts have published numerous papers on the problem, but developing this level of expertise requires a significant amount of experience. We present a profiling-based technique that captures and automates this expertise for the insertion of laziness annotations into strict programs. To make this idea precise, we show how to equip a formal semantics with a metric that measures waste in an evaluation. Then we explain how to implement this metric as a dynamic profiling tool that suggests where to insert laziness into a program. Finally, we present evidence that our profiler’s suggestions either match or improve on an expert’s use of laziness in a range of real-world applications.

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 September, 2020.

# commits Issues (new/closed/open) PRs (new/closed/open)
racket 58 24/14/392 16/16/79
plot 14 1/0/7 13/14/0
drracket 11 4/2/189 7/5/3
scribble 2 3/1/66 6/2/17
typed-racket 2 5/1/235 2/1/21
redex 0 1/0/43 0/0/9

Contributions by (15):

  • Alex Harsanyi
  • Evan Minsk
  • Gustavo Massaccesi
  • Jin-Ho King
  • Matthew Flatt
  • Paulo Matos
  • Philip McGrath
  • Robby Findler
  • Ryan Culpepper
  • Shu-Hung You
  • Sorawee Porncharoenwase
  • Stephen De Gabrielle
  • bdeket
  • xxyzz
  • yjqww6

Of these, 3 are new contributors for 2020:

  • Evan Minsk
  • Jin-Ho King
  • Shu-Hung You

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

Contributors

Thanks to

  • Eric Eide
  • Stephen De Gabrielle

for their contributions to this issue.

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.