Racket News - Issue 38

Permalink: https://racket-news.com/2020/09/racket-news-issue-38.html

Welcome to the thirty-eighth issue of Racket News.

Racket has a new official website and RacketCon 2020 has been announced we have an agenda. There are quite a few news and a new Call To Racket! Join the fun!

Summer is gone and we are quick heading towards the end of the year - good riddance 2020. Wherever you are, I hope you stay safe, healthy and away from the virus.

Stay inside and grab a cup of strong coffee! 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
  8. Racket Project Statistics

What’s New?

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.

No new packages this issue… was it the summer holidays effect?

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.

Unfortunately nobody has fixed issue #1400. However, the good first issue was removed as it was apparently harder to fix than initially expected. Lets try a different one: issue 2314. Racket BC when compiled with --enable-ubsan and ran through tests tests/racket/test generates some runtime errors due to undefined behaviour. Can you fix those generating warnings:

../../../bc/gc2/../src/numarith.c:1248:7: runtime error: signed integer overflow: 303003010297263104 * -189795840214982656 cannot be represented in type 'long int'
../../../bc/gc2/../src/numarith.c:1246:7: runtime error: signed integer overflow: -8203282719894814976 + -2082170704078970368 cannot be represented in type 'long int'
../../../bc/gc2/../src/numarith.c:1247:7: runtime error: signed integer overflow: 8022013976092023808 - -1740668310524263936 cannot be represented in type 'long int'

and close the bug? Good luck!

Project in the Spotlight

This week’s project in the spotlight is quickscript by Laurent Orseau.

From the website:

Quickscript’s makes it easy to extend DrRacket with small Racket scripts to automate some actions in the editor, while avoiding the need to restart DrRacket.

Creating a new script is as easy as a click on Scripts | New script.... Each script is automatically added as an item to the Scripts menu, without needing to restart DrRacket. A keyboard shortcut can be assigned to a script (via the menu item). By default, a script takes as input the currently selected text, and outputs the replacement text. There is also direct access to some elements of DrRacket GUI for advanced scripting, like DrRacket’s frame and the definition or interaction editor.

Featured Racket Paper

This issue’s featured paper is Hygienic Macro Technology, by William Clinger and Mitchell Wand.

Abstract:

The fully parenthesized Cambridge Polish syntax of Lisp, originally regarded as a temporary expedient to be replaced by more conventional syntax, possesses a peculiar virtue: A read procedure can parse it without knowing the syntax of any expressions, statements, definitions, or declarations it may represent. The result of that parsing is a list structure that establishes a standard representation for uninterpreted abstract syntax trees. This representation provides a convenient basis for macro processing, which allows the programmer to specify that some simple piece of abstract syntax should be replaced by some other, more complex piece of abstract syntax. As is well-known, this yields an abstraction mechanism that does things that procedural abstraction cannot, such as introducing new binding structures. The existence of that standard representation for uninterpreted abstract syntax trees soon led Lisp to a greater reliance upon macros than was common in other high-level languages. The importance of those features is suggested by the ten pages devoted to macros in an earlier ACM HOPL paper, “The Evolution of Lisp.” However, naïve macro expansion was a leaky abstraction, because the movement of a piece of syntax from one place to another might lead to the accidental rebinding of a program’s identifiers. Although this problem was recognized in the 1960s, it was 20 years before a reliable solution was discovered, and another 10 before a solution was discovered that was reliable, flexible, and efficient. In this paper, we summarize that early history with greater focus on hygienic macros, and continue the story by describing the further development, adoption, and influence of hygienic and partially hygienic macro technology in Scheme. The interplay between the desire for standardization and the development of new algorithms is a major theme of that story. We then survey the ways in which hygienic macro technology has been adapted into recent non-parenthetical languages. Finally, we provide a short history of attempts to provide a formal account of macro processing.

Upcoming Meetups

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

Racket Project Statistics

Some data about the activity in the Racket et al. repositories, for the month of August, 2020. Given ChezScheme is now a tree in the Racket repository, this is the last issue tracking the racket/ChezScheme repository.

# commits Issues (new/closed/open) PRs (new/closed/open)
racket 112 31/28/379 22/24/77
ChezScheme 20 0/0/1 0/0/1
scribble 9 5/4/64 9/7/13
typed-racket 7 9/3/231 3/4/20
plot 5 0/1/6 4/5/0
drracket 4 8/5/187 0/1/1
redex 3 2/2/42 0/0/9

Contributions by (22):

  • Alex Harsányi
  • Alexis King
  • Ayman Osman
  • Bogdan Popa
  • Fred Fu
  • Griffin Byatt
  • Jay McCarthy
  • Jesse Alama
  • Matthew Flatt
  • Mauer-Oats
  • Paulo Matos
  • Philip McGrath
  • Robby Findler
  • Ryan Culpepper
  • Sam Tobin-Hochstadt
  • Stephen De Gabrielle
  • William J. Bowman
  • bdeket
  • dyb
  • evdubs
  • sorawee
  • yjqww6

Of these, 8 are new contributors for 2020:

  • Ayman Osman
  • Griffin Byatt
  • Jay McCarthy
  • Jesse Alama
  • Mauer-Oats
  • William J. Bowman
  • evdubs
  • yjqww6

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

Edit (2020.09.15):Remove Mauer-Oats which showed up twice in contributors.

Contributors

Thanks to

  • Jens Soegaard
  • sorawee
  • 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.