Welcome to the thirty-seventh issue of Racket News.
This comes a week after the normal planned issue but I have delayed it due to holidays. For the same reasons, this will happen again as the next issue will come out only on September 14th.
Congrats to Jesse Alama for fixing the first Call to Racket issue. There’s a new one for this issue.
Grab a coffee and enjoy!
Table of Contents
- What’s New?
- Racket Around the Web
- New Releases
- Call to Racket!
- Project in the Spotlight
- Featured Racket Paper
- Upcoming Meetups
- Matthew Flatt announced that the Utah Snapshots site will switch to Racket CS by default.
jcmdlnproposed a bug triage party which was well received. For planning and further information join the
#triagechannel in Slack.
- I have mentioned Pollen Time before but Joel Dueck keeps doing these on a regular basis and they are really interesting ways to get into Pollen, so take a look at the latest one (as well as all the others).
Note (2020.08.25): Fix link to slack.
Racket around the web
Do you blog about Racket? Let me know!
- Fafi Browser, a Racket-based Gemini client by Andre Garzia.
- Automating Tests for the Plot Package by Alex Harsányi.
- Faking Useful Refinement Types in Racket by Griffin Byatt.
Note (2020.08.25): Update author of “Faking Useful Refinement Types in Racket”.
If you know of library releases or maybe your own libraries and you want them to be featured, please let me know.
drracket-cmdline-args(src/pkg) is a DrRacket plugin that adds a text field to DrRacket for inputting command-line arguments by Sorawee Porncharoenwase.
andlet(src/pkg) is a library providing
let*-like forms coupled with
andlogic by Deren Dohoda.
private-in(src/pkg) is a library that provides functionality like
require/expose, but as a require specification instead by Cameron Moy.
simple-polynomial(src/pkg) is a library providing some basic tools for working with polynomials of one variable by Deren Dohoda.
ec(src/pkg) is a library proving Racket implementations of elliptic curve arithmetic over prime fields in Jacobian coordinates, efficient integer multiplication in the elliptic curve group, affine/Jacobian coordinate conversion, and point serialization - by Marc Burns.
base58(src/pkg) is a library providing base 58 encoding and decoding functions by Marc Burns.
bip32(src/pkg) is a library provigins an implemetantion for Bitcoin Improvement Proposal 32 by Marc Burns.
from-template(src/pkg) is a raco tool for cloning templates from the racket-templates org by Philip Dumaresq.
al2-test-runner(src/pkg) by Alex Harsányi.
Note (2020.08.25): Add missing right paren.
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.
Project in the Spotlight
This week’s project in the spotlight is
binaryio by Ryan Culpepper.
From the website:
This library provides functions for reading, writing, and converting binary data. It is designed for the use case of implementing network protocols, although this library focuses on low-level support, not high-level protocol specification.
Featured Racket Paper
This issue’s featured paper is Languages as Libraries by Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, and Matthias Felleisen.
Programming language design benefits from constructs for extending the syntax and semantics of a host language. While C’s stringbased macros empower programmers to introduce notational shorthands, the parser-level macros of Lisp encourage experimentation with domain-specific languages. The Scheme programming language improves on Lisp with macros that respect lexical scope.
The design of Racket—a descendant of Scheme—goes even further with the introduction of a full-fledged interface to the static semantics of the language. A Racket extension programmer can thus add constructs that are indistinguishable from “native” notation, large and complex embedded domain-specific languages, and even optimizing transformations for the compiler backend. This power to experiment with language design has been used to create a series of sub-languages for programming with first-class classes and modules, numerous languages for implementing the Racket system, and the creation of a complete and fully integrated typed sister language to Racket’s untyped base language.
This paper explains Racket’s language extension API via an implementation of a small typed sister language. The new language provides a rich type system that accommodates the idioms of untyped Racket. Furthermore, modules in this typed language can safely exchange values with untyped modules. Last but not least, the implementation includes a type-based optimizer that achieves promising speedups. Although these extensions are complex, their Racket implementation is just a library, like any other library, requiring no changes to the Racket implementation.
Do you know of any upcoming meetups I can advertise? Let me know.
- (chaperone) RacketCon 2020, to happen virtually sometime in October.
- Bertrand Augereau
- Deren Dohoda
- Jens Axel Soegaard
- 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.