Welcome to the thirty-second issue of Racket News.
For all who recently joined the Racket News newsletter, Welcome and Thank You! We are very close to hitting 300 subscribers.
I have been planning some new sections and features for Racket News and although I haven’t managed to get to it yet, we are close to having some surprises very soon now. For those of you who contacted me and offered to help, thank you very much. Currently I am re-organizing how Racket News is published so that contributors can more directly help if they are interested. Until now Racket News has been pretty much edited and published in a chaotic world without rules. My hope is to simplify the procedure and possibly automate some parts of it so that others can more easily help out. I will keep you posted but in the meantime, thanks again for offering to help.
Stay safe, stay caffeinated, grab an espresso and lets go. Enjoy!
Table of Contents
- What’s New?
- Racket Around the Web
- New Releases
- Project in the Spotlight
- Featured Racket Paper
- Upcoming Meetups
- Racket Project Statistics
- If you ever wondered what PLT stands for in the context of the Racket community (remember it used to be called PLT Scheme), wonder no more. Shriram was there when it began and he provided an answer.
- Stress not if you thought Stephen wouldn’t think of a 2020 Standard Fish Summer Picture Competition… it’s coming and we will let you know when it’s here.
- We recently featured
rs, the racket sequencer. Now the author has created a quick demo, available now on Youtube.
- It was pointed out in the mailing list that a new version of the TechEmpower Web Framework Benchmarks (round 19) has been published and it doesn’t shine a bright light on performance for the racket web server. However, where some see disappointment, I see opportunity. If you are interested, follow Sam’s suggestions and use them to optimize Racket. In the end, things don’t improve through magic or without someone actually getting their hands dirty - it might as well be you!
Racket around the web
Do you blog about Racket? Let me know!
- Dependency Management in Racket Applications by Alex Harsányi.
- Markdown View using the Racket editor% by Alex Harsányi.
- I’m Changing How I Distribute Racket Packages by Sage Gerard.
- Toying with gemini by Andre Garzia.
- Jeremiah was a Frog by Ryan Culpepper.
- oblivious normalization by evaluation by Ryan Culpepper.
- Announcing Racket Bitvectors (
bv) by Paulo Matos (myself).
- Announcing HTML examples (
html-examples) by Paulo Matos (myself).
If you know of library releases or maybe your own libraries and you want them to be featured, please let me know.
lazytree(src/pkg) is a lightweight library with general-purpose utilities for working with tree-structured data by Siddhartha Kasivajhula.
generator-util(src/pkg) is a library with useful utilities for working with generators by Siddhartha Kasivajhula.
html-examples(src/pkg) is a one-function library that providing a way to obtain a
txexprfrom a Scribble examples block by Paulo Matos (myself).
bv(src/pkg) is a library for bitvector manipulation with a rosette-like interface by Paulo Matos (myself).
Project in the Spotlight
From the website:
Xsmith is a library for creating fuzz testers, also known as fuzzers, for programming language compilers and interpreters. In other words, Xsmith is a library for creating random program generators. Xsmith implements a domain-specific language (DSL) for defining random program generators. The DSL is used to specify a programming language’s grammar, typing rules, and other information that guides generation choices. Xsmith also includes utilities for creating a command-line interface for generating a single program or starting a web server that generates one program per request.
Featured Racket Paper
This issue’s featured paper is Sham: A DSL for Fast DSLs, by Rajan Walia, Chung-Chieh Shan, and Sam Tobin-Hochstadt
Domain-specific languages (DSLs) are touted as both easy to embed in programs and easy to optimize. Yet these goals are often in tension. Embedded or internal DSLs fit naturally with a host language, while inheriting the host’s performance characteristics. External DSLs can use external optimizers and languages but sit apart from the host. We present Sham, a toolkit designed to enable internal DSLs with high performance. Sham is itself a DSL embedded in Racket, but compiles transparently to LLVM at runtime. Sham is designed to be well suited as both a compilation target for other DSLs embedded in Racket as well as a language for transparently replacing DSL support code with faster versions. Sham programs interoperate seamlessly with Racket programs, and so no additional effort is required to use a DSL implemented with Sham. Finally, Sham comes with a framework for defining DSL compilers and transformations, which is also used in the implementation of Sham itself. We validate Sham’s design on a series of case studies, ranging from Krishnamurthi’s classic automata DSL to a sound synthesis DSL and a probabilistic programming language. All of these are existing DSLs where we replaced the backend using Sham, resulting in major performance gains.
Do you know of any upcoming meetups I can advertise? Let me know.
- RacketCon 2020, was supposed to be announced for the fall of 2020 but there are no official news about it yet.
Racket Project Statistics
Some data about the activity in the Racket et al. repositories, for the month of May, 2020.
|# commits||Issues (new/closed/open)||PRs (new/closed/open)|
Contributions by (16):
- Ben Greenman
- Bogdan Popa
- Jack Firth
- Matthew Butterick
- Matthew Flatt
- Matthew Turland
- Paulo Matos
- Robby Findler
- Sam Tobin-Hochstadt
- Sorawee Porncharoenwase
- Stephen De Gabrielle
Of these, 7 are new contributors for 2020:
- Bogdan Popa
- Matthew Turland
- Stephen De Gabrielle
Repositories included above are:
Edit (2020.06.02): Thanks to mangodrunk for small typo fix in year.
- Jesse Alama
- Siddhartha Kasivajhula
- Stephen de Gabrielle
for their contributions to this issue.
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.