Racket News - Issue 37

Permalink: https://racket-news.com/2020/08/racket-news-issue-37.html

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

  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

What’s New?

  • Matthew Flatt announced that the Utah Snapshots site will switch to Racket CS by default.
  • User jcmdln proposed a bug triage party which was well received. For planning and further information join the #triage channel 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!

Note (2020.08.25): Update author of “Faking Useful Refinement Types in Racket”.

New Releases

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 and let*-like forms coupled with and logic 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.

Congrats to last week’s “Call to Racket” champion Jesse Alama. He fixed issue #3336 in PR #3341 creating commit b722d81. Thank you for your contribution to Racket.

The next one is issue 1400 in racket/racket. Will you be our next Champion?

Good luck!

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.

Abstract:

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.

Upcoming Meetups

Do you know of any upcoming meetups I can advertise? Let me know.

  • (chaperone) RacketCon 2020, to happen virtually sometime in October.

Contributors

Thanks to

  • Bertrand Augereau
  • Deren Dohoda
  • Jens Axel Soegaard
  • 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.