Welcome to the sixth issue of Racket News.

Surprise! I mentioned last issue that I might not be able to put out this issue mid-month due to travel arrangements but it turns out that the available content more than warrants an issue, even if it is coming a few days earlier. Hey, the Racket world doesn’t stop spinning!

I will however, stop spinning for a bit so it’s likely I won’t be replying to any emails for the next week or so.

Before we get going there’s an important issue I would like to raise. I was pointed out to the fact that I, unfairly, only name contributors to the main racket repository. And yet racket is made of several repositories so many contributors are left out. I am more than happy to add more repositories to the statistics I track but would like some suggestions.

Which repositories to track? At the moment there are 111 repositories listed in https://github.com/racket - which repositories should we select and which should we ignore. An important point here is that I don’t want to make half the newsletter simply about repo statistics, which brings us to the second point;

Shall I name contributors to other repos and present repo statistics like open issues, merged PRs, etc for the main racket repo only? Or would you like to see repo statistics for other repositories as well?

For this issue, I only mention the main racket repo but with some feedback on the above questions I will able to better organize the section for next issue, coming to you on the 1st of May.

If there’s something you really dislike, or something you want to see added to the newsletter please send me an email or submit an issue.

Grab yourself a cappuccino and lets get started!

Table of Contents

What’s New?

Jay McCarthy has posted on the mailing list a little guide on how to contribute to improve support of Racket on Chez. If you have some time in your hands and would like to learn some more about the innards of Racket, take a look!

I have posted on the mailing list about the work I have done in Racket CI on Gitlab. If you are interested in CI, take a look and get in touch if you want to help.

Racket around the web

Do you blog about Racket? Let me know!

Frog, our beloved static site generated is not going anywhere but Greg is experimenting with a different type of system - which you can read about in his more recent post: Exploding frog!

Travis Hinkelman has been publishing a few Racket posts which I have missed in the past - the latest one being Generating random numbers in R and Racket. If you have time, take a look at his blog, he has more Racket goodies in there.

New Releases

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

Project in the Spotlight

This week’s project in the spotlight is brag: a better Racket AST generator by Danny Yoo and Matthew Butterick.

From the documentation:

brag is a parser generator designed to be easy to use: It provides a #lang for writing BNF grammars. A module written in #lang brag automatically generates a parser. The grammar controls the structure of the syntax objects it generates.

The language uses a few conventions to simplify the expression of grammars. The first rule in the grammar is assumed to be the starting production. Identifiers in UPPERCASE are treated as terminal tokens. All other identifiers are treated as nonterminals.

Tokenizers can be developed independently of parsers. brag takes a liberal view on tokens: they can be strings, symbols, or instances constructed with token . Tokens can optionally provide source location, in which case a syntax object generated by the parser will too.

The parser can usually handle ambiguous grammars.

It integrates with the rest of the Racket language toolchain.

Featured Racket Paper

The paper for this week Automatically RESTful Web Applications: Marking Modular Serializable Continuations by Jay McCarthy from ICFP’09.

Abstract:

Continuation-based Web servers provide distinct advantages over traditional Web application development: expressive power and modularity. This power leads to fewer errors and more interesting applications. Furthermore, these Web servers are more than prototypes; they are used in some real commercial applications. Unfortunately, they pay a heavy price for the additional power in the form of lack of scalability. We fix this key problem with a modular program transformation that produces scalable, continuation-based Web programs based on the REST architecture. Our programs use the same features as non-scalable, continuation-based Web programs, so we do not sacrifice expressive power for performance. In particular, we allow continuation marks in Web programs. Our system uses 10 percent (or less) of the memory required by previous approaches.

Please note I am not hosting any of these files, but instead I am linking to the PDFs hosted by the researchers themselves. If you think there is a better way to do this or if I should host the files myself, drop me a line.

Upcoming Meetups

Racket School and RacketCon tickets are now for sale in a website near you. Click on the links below!

Racket School 2019 - taught by Racket heavyweights it’s your time to get you #lang-fu up to scratch. Will take place in Salt Lake City, US on July 8–12.

RacketCon 2019 - taking place in Salt Lake City, US on July 13, 14, just after Racket School.

Help Needed

Do you know a project looking for contributors or help with a task? I would love to hear about it.

Jobs

If you want to advertise any Racket related jobs, please send me an email or submit an issue.

Contributors

Thanks to

Gustavo Massaccesi

Jérôme Martin

Jesse Alama

Travis Hinkelman

for their contributions to this issue.

Racket Project Statistics

Some data about the activity in the Racket repository since the last issue.

Number of master Commits 34 Bugs open 309 PRs open 96

Contributions by (8):

Alexis King

Alex Knauth

Gustavo Massaccesi

John Clements

Matthew Flatt

Matthias Felleisen

Paulo Matos

Vladilen Kozin

Of which, making the list the first time this year (1):

Vladilen Kozin

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.