Welcome to the twenty-sixth issue of Racket News.

Racket News’ first birthday last issue got me thinking that as Racket News slowly starts growing some teeth and trying to walk (comparatively late to some babies), we need to revamp a few things. Therefore expect changes, for the better. If there’s anything that you would like to see in Racket News, please let me know. In any case, I hope to be able to bring more variety to Racket News in the following issues as well as website design improvements.

This issues features the release of Racket 7.6, bringing you a production-ready ChezScheme backend. So, if you’ve been waiting for this to be stamped with a Production seal, wait no more.

Grab yourself a nice, and soothing caramel latte and… Enjoy!

Table of Contents

What’s New?

Racket 7.6 is here featuring among other things DrRacket’s more responsive scrolling and improved dark mode support, a new safety limits construct in the web server but the highlight has been what many have been waiting for: RacketCS’s production-ready stamp.

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.

Project in the Spotlight

This week’s project in the spotlight is RacketScript by Vishesh Yadav.

From the website:

RacketScript is an experimental lightweight Racket to JavaScript compiler. The generated code is ES6, which can be translated to ES5 using Babel or Traceur. RacketScript aims to leverage both JavaScript and Racket’s ecosystem, and make interoperability between them clean and smooth. RacketScript takes in Racket source files, uses Racket’s macro expander to produce Fully Expanded Programs, and then compile these fully expanded programs to JavaScript. RacketScript doesn’t support Racket features which are expensive, for example proper tail calls and continuations.

There is also an interactive playground, go check it out!

Featured Racket Paper

This issue’s featured paper is Compilable and Composable Macros, You Want it When? by Matthew Flatt.

Abstract:

Many macro systems, especially for Lisp and Scheme, allow macro transformers to perform general computation. Moreover, the language for implementing compile-time macro transformers is usually the same as the language for implementing run-time functions. As a side effect of this sharing, implementations tend to allow the mingling of compile-time values and run-time values, as well as values from separate compilations. Such mingling breaks programming tools that must parse code without executing it. Macro implementors avoid harmful mingling by obeying certain macro definition protocols and by inserting phase-distinguishing annotations into the code. However, the annotations are fragile, the protocols are not enforced, and programmers can only reason about the result in terms of the compiler’s implementation. MzScheme - the language of the PLT Scheme tool suite - addresses the problem through a macro system that separates compilation without sacrificing the expressiveness of macros.

Upcoming Meetups

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

RacketFest 2020: organised by Jesse Alama and taking place in Berlin, Germany on February 27, 2020.

RacketCon 2020, shall be soon announced for the Fall of 2020 celebrating a quarter century of Racket.

Contributors

Thanks to

Gustavo Massaccesi

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.