Welcome to the twenty-first issue of Racket News.

We are back to December and with it we have the end of the Racket GameJam and the start of Advent of Code (there’s a Racket leaderboard - see below). Releases, Videos, competitions, blog posts, oh my! Lets go…

Grab an espresso and enjoy!

Table of Contents

What’s New?

Racket 7.5 was officially released. RacketCS is not far off being production-ready. Quoting from the release post: Racket CS remains “beta” quality for the v7.5 release, but its compatibility and performance continue to improve. We expect that it will be ready for production use by the next release. We encourage you to check how well the v7.5 CS release works for your programs, and help push the project forward by reporting any problems that you find. A shoutout to Asumu Takikawa, who maintains an up-to-date Ubuntu PPA of Racket releases.

Matthew Flatt’s presentation on “A Racket Perspective on Research, Education, and Production” in ClojureConj 2019 is now online (don’t forget the popcorn).

Advent of Code has started yesterday! If you are solving the puzzles in Racket, consider joining the Racket Leaderboard that Sam Phillips created. Also, Matthew Butterick, in a similar fashion to previous years, keeps posting his solutions accompanied by explanations - but no peeking before you solve it.

A further shoutout to Racket Stories which continues to have really interesting Racket related references - for your Racket shot in between Racket News issues.

Racket GameJam

Special section for this issue… Racket GameJam!

The Racket GameJam is now come to a close but it received 5 amazing entries - time to play some games.

Stephen De Gabrielle just submitted the results - drum-roll please.

Best package: Racket code generator for Vulkan by Sage Gerard This is a Racket package that generates Racket bindings for Vulkan. Use this for next-gen game engines, simulations, and research applications. The source code is available on GitHub along with detailed documentation.

Best Retrogame: Two winners because Terminal Phase combined retro shoot-em-up with terminal graphics, but C64 robotfindskitten utilises the Racket asi64 assembler to create a C64 game - that is also a roguelike/zen-simulator. Both are amazing! Terminal Phase by Christopher Lemmer Webber Terminal Phase is a space shooter that runs in your terminal! C64 robotfindskitten by Ross McKinlay An implementation of the classic robotfindskitten “Zen Simulator” and is written in my Racket-based 6502 assembler, asi64 https://docs.racket-lang.org/asi64/index.html

Best Boardgame Racket-Onitama by Dustin Wagner A great Racket implementation of the popular Onitama boardgame.

Best Puzzle Game: Groovee by tjm25225 Stay in the groove!

Honorable Mention: RacketTown by Hendrik Boom Urban landscape generation library!

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.

review (src/pkg) by Bogdan Popa is a surface level linter for #lang Racket modules.

(src/pkg) by Bogdan Popa is a surface level linter for Racket modules. casemate (src/pkg) by Johan Persson is a case converter in the style of camel-snake-kebab.

(src/pkg) by Johan Persson is a case converter in the style of camel-snake-kebab. relation (src/pkg) by Siddhartha Kasivajhula is a library with generic interfaces and convenient utilities for using relations.

Project in the Spotlight

This week’s project in the spotlight is charterm by Neil van Dyke.

From the website:

The charterm package provides a Racket interface for character-cell video display terminals on Unix-like systems – such as for GNU Screen and tmux sessions on cloud servers, XTerm windows on a workstation desktop, and some older hardware terminals (even the venerable DEC VT100). Currently, it implements a subset of features available on most terminals.

Edit (04.02.2020): Removed paragraph which was meaningless and a left over from a previous edit.

Featured Racket Paper

This issue’s featured paper (Tech. Report) is FrTime: Functional Reactive Programming in PLT Scheme by Gregory Cooper and Shriram Krishnamurthi.

Abstract:

Functional Reactive Programming (FRP) supports the declarative construction of reactive systems through signals, or time-varying values. In this paper, we present a new language called FrTime, which provides FRP-style signals atop a dialect of Scheme. We introduce the language with a few examples and discuss its implementation. Unlike previous FRP systems, FrTime uses impure features, such as state and asynchronous communication, to model time and to control evaluation. The use of such features yields a scalable, event-driven implementation with several important advantages. Specifically, it eases integration with other systems, supports distribution of signals across a network, and permits various benign impurities. To illustrate the language’s expressive power, we present a concise implementation of a networked paddle-ball game in FrTime.

Upcoming Meetups

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

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

Racket Project Statistics

Some data about the activity in the Racket et al. repositories, for the month of November, 2019.

# commits Issues (new/closed/open) PRs (new/closed/open) racket 99 31/28/361 30/25/104 typed-racket 15 7/1/216 7/6/18 drracket 12 4/0/159 2/1/4 ChezScheme 6 0/0/0 1/1/0 scribble 3 1/0/40 4/4/9 redex 3 1/0/40 0/0/9 plot 1 0/0/8 0/0/3

Contributions by (23):

Alexis King

Ben Greenman

Brian Wignall

David K. Storrs

Fred Fu

Gustavo Massaccesi

Jack Firth

Jay McCarthy

Joel Dueck

Leo Uino

Matthew Flatt

Paulo Matos

Reuben Thomas

Robby Findler

Ross Angle

Sage Gerard

Sam Tobin-Hochstadt

Sorawee Porncharoenwase

Stephen De Gabrielle

Timo Wilken

Winny

Zaoqi

lkh01

Of these, 10 are new contributors for 2019:

Brian Wignall

David K. Storrs

Jack Firth

Joel Dueck

Reuben Thomas

Ross Angle

Sage Gerard

Timo Wilken

Zaoqi

lkh01

Repositories included above are: racket , ChezScheme , redex , typed-racket , drracket , scribble , plot .

Contributors

Thanks to

Jesse Alama

Sam Tobin-Hochstadt

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.