Racket News - Issue 44

Permalink: https://racket-news.com/2021/01/racket-news-issue-44.html

Welcome to the forty-fourth issue of Racket News and Happy New Year.

Finally, 2020 is behind us and all we can do is hope for a better year this time around. This issue comes with a delay but with a huge amount of content, although hopefully not too much. We have the usual sections and a few others reviewing the last year. I certainly didn’t manage to cover everything and I probably didn’t mention everyone that deserved a mention. If you think I am at fault here regarding your contributions, please drop me a line.

We have a new sponsors section at the end of the issue. I will discuss this in more detail in an upcoming blog post. For now, let me thank Jesse Alama for sponsoring my work. If you wish to sponsor my work on Racket News, and more generally on the Racket ecosystem, check out my GitHub Sponsors page.

Grab a very long, but not too hot, 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
  8. Racket Project Statistics
  9. 2020 - Year in review
  10. Call to Racket Champions
  11. Racket News 2020 Contributions
  12. Sponsors

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.

  • base64(pkg/src) is library that provides support for Base64 encoding and decoding, similar to net/base64 but with more options, by Ryan Culpepper.
  • raco-watch(pkg/src) is an extension of raco command for watching files and re-executing a subcommand, by Lîm Tsú-thuàn.
  • extenor(pkg/src) is a library for a kind of Racket record object that can be dynamically extended, by William Hatch.
  • reporter(pkg/src) is a library inspired by codespan for beautiful diagnostic reporting, by Lîm Tsú-thuàn.
  • sauron(pkg/src) is a new Racket IDE, by Lîm Tsú-thuàn.
  • syntax-implicits(pkg/src) is a library providing a generalization of syntax parameters, by William Hatch.

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.

Welcome to a new year of Call to Racket. We start with a call to fix issue 3603 of Racket. If you are interested in fixing this but need some guidance, feel free to comment on the issue page. Will you be our next Champion?

Good luck!

Project in the Spotlight

This week’s project in the spotlight is crypto by Ryan Culpepper.

From the website:

This library provides an interface for cryptographic operations, including message digests, symmetric-key encryption, and public-key signatures, encryption, and key agreement.

Featured Racket Paper

This issue’s featured paper is Profile-Guided Meta-Programming by William J. Bowman, Swaha Miller, Vincent St-Amour, and R. Kent Dybvig.

Abstract:

Contemporary compiler systems such as GCC, .NET, and LLVM incorporate profile-guided optimizations (PGOs) on low-level intermediate code and basic blocks, with impressive results over purely static heuristics. Recent work shows that profile information is also useful for performing source-to-source optimizations via meta-programming. For example, using profiling information to inform decisions about data structures and algorithms can potentially lead to asymptotic improvements in performance.

We present a design for profile-guided meta-programming in a general-purpose meta-programming system. Our design is parametric over the particular profiler and meta-programming system. We implement this design in two different meta-programming systems - the syntactic extensions systems of Chez Scheme and Racket— and provide several profile-guided meta-programs as usability case studies.

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 December, 2020.

# commits Issues (new/closed/open) PRs (new/closed/open)
racket 130 29/28/411 39/39/79
drracket 12 10/5/194 1/2/2
redex 10 0/2/42 0/2/7
typed-racket 3 6/1/241 3/3/21
scribble 0 1/0/70 1/0/15
plot 0 0/0/7 0/0/0

Contributions by (20):

  • Alexis King
  • Bogdan Popa
  • Cameron Moy
  • David Van Horn
  • Jack Firth
  • Joel Dueck
  • Mark
  • Matthew Flatt
  • Matthias Felleisen
  • Paulo Matos
  • Phil Nguyen
  • Robby Findler
  • Ryan Culpepper
  • Sam Tobin-Hochstadt
  • Sorawee Porncharoenwase
  • Stefan Schwarzer
  • Stephen De Gabrielle
  • WarGrey Gyoudmon Ju
  • shhyou
  • yjqww6

Of these, 7 are new contributors for 2020:

  • Cameron Moy
  • David Van Horn
  • Joel Dueck
  • Mark
  • Phil Nguyen
  • Stefan Schwarzer
  • WarGrey Gyoudmon Ju

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

2020 - Year in review

The year of 2020 started with the release of Racket 7.6, after which we got three more releases with the latest in November: Racket 7.9.

The core team wrote 9 blog posts in 2020. They wrote an update on Racket CS in February 2020 and we are now at a point in which, Racket CS will become the default variant of Racket as of its next release.

In Racket 7.6, we got improved DrRacket scrolling and dark mode support with the announcement that Racket CS was ready for production use.

In Racket 7.7, Racket CS started supporting the C API for embedding into other applications and it started using a new HAMT implementation thereby reducing the memory required for immutable hash tables. GC got faster for Racket CS and the Cairo library can now be multi-threaded.

In Racket 7.8, Racket CS started supporting Aarch32 (arm32) and Aarch64 (arm64), including places and futures. The Racket CS GC got an incremental GC mode and started unboxing local floating point arithmetic. The web server concurrency got better by up to an order of magnitude. The plot package started being maintained by Alex Harsányi and the math package by Pavel Pancheka and Jens Axel Søgaard.

And to finish off the year, we got Racket 7.9 in November. Racket CS GC started supporting parallel collection among many other small fixes and improvements in order to get Racket CS stable enough to become the default Racket variant.

This was just a brief summary of the major release points, a lot of work has gone into all parts of the Racket ecosystem although a lot of focus has gone into stabilizing and improving the CS variant.

Racket turned 25, and Matthias and Matthew wrote about that. Due to the worldwide COVID19 pandemic all in-person meetings were turned upside down and Zoom became the word of the day. However, Jesse Alama managed to organize an in-person RacketFest back in February 2020, in Berlin - Germany. Racket Summer School was unfortunately cancelled and RacketCon became a virtual conference.

We had the great Racket Survey whose results where discussed in RacketCon by Sam Tobin-Hochstadt in his State of Racket, and also a short Typed Racket survey later in the year.

Stephen De Gabrielle and Laurent Orseau ran a Quickscript competition. Sam Philips together with Stephen De Gabrielle started a Racket Users video meetup after the huge success through Gather Town of RacketCon.

In terms of contributions, we had a wide-range of contributions and contributors. In 2020 there were 90 different contributors for the racket main repos (the same we have been gathering statistics for). These are:

  • 97jaz
  • Alex Bartholomew
  • Alex Harsányi
  • Alex Knauth
  • Alexander Shopov
  • Alexis King
  • Andrew Kent
  • Ayman Osman
  • Ben Greenman
  • Benjamin Yeung
  • Bob Burger
  • Bodie Solomon
  • Bogdan Popa
  • Brian Adkins
  • Brian Wignall
  • Cameron Moy
  • David Florness
  • David Van Horn
  • Dionna Amalie Glaze
  • Dominik Pantůček
  • Evan Minsk
  • Florian Weimer
  • Fred Fu
  • Georges Dupéron
  • Greg Hendershott
  • Griffin Byatt
  • Gustavo Massaccesi
  • Ilnar Salimzianov
  • Jack Firth
  • James Bornholt
  • Jamie Taylor
  • Jasper Pilgrim
  • Jay McCarthy
  • Jesse Alama
  • Jin-Ho King
  • Joel Dueck
  • John Clements
  • Jon Zeppieri
  • Jörgen Brandt
  • KDr2
  • Kartik Singhal
  • Leo Shen
  • Luka Hadzi-Djokic
  • Lîm Tsú-thuàn
  • Marc
  • Mark
  • Matthew Butterick
  • Matthew Flatt
  • Matthew Turland
  • Matthias Felleisen
  • Mauer-Oats
  • Michael Ballantyne
  • Mike Sperber
  • Neal Alexander
  • NoahStoryM
  • Paulo Matos
  • Peter Zhong
  • Phil Nguyen
  • Philip McGrath
  • R. Kent Dybvig
  • Reuben Thomas
  • Ricardo Herdt
  • Robby Findler
  • Ryan Culpepper
  • Sam Tobin-Hochstadt
  • Sancho McCann
  • Sergiu Ivanov
  • Shu-Hung You
  • Sorawee Porncharoenwase
  • Spencer Florence
  • Stefan Schwarzer
  • Stephen Chang
  • Stephen De Gabrielle
  • Syntacticlosure
  • Tom Gillespie
  • Tommy McHugh
  • Walter H. Yang
  • WarGrey Gyoudmon Ju
  • William J. Bowman
  • Xu Chunyang
  • bdeket
  • evdubs
  • frogbird
  • kryptine
  • kurinoku
  • lkh01
  • xxyzz
  • yjqww6
  • yurkobb
  • Štěpán Němec

I have used yearly statistics to plot the evolution of the number of commits, issues and prs for a few of the main projects. The plots should be self-explanatory.

Note: A problem with the datasets meant that in the first few hours after publishing, the plots reflected incorrect values. This is now fixed. Thanks to Sorawee for noticing and pointing it out to me.

racket/racket

racket/typed-racket

racket/drracket

racket/plot

racket/redex

racket/scribble

Call to Racket Champions

In issue 36 we started the new section Call to Racket and since then we have been having many Racket champions fixing suggested issues and getting their fixes merged upstream. Here are our champions for 2020:

  • Jesse Alama
  • Lîm Tsú-thuàn
  • Walter Yang
  • xxyzz

Racket News 2020 Contributions

Thanks to the many contributors to Racket News in 2020. Either by suggesting a paper, a project, calling me out on a typo or mistake you helped me make Racket News better for everyone. Keep it coming. The list of all contributors for 2020 is as follows:

  • Alex Hamilton
  • Bertrand Augereau
  • Chris Matheson
  • Deren Dohoda
  • Eric Eide
  • Gustavo Massaccesi
  • Jens Axel Soegaard
  • Jesse Alama
  • Laurent Orseau
  • mangodrunk
  • Robert O’Callahan
  • Sam Phillips
  • Sam Tobin-Hochstadt
  • Siddhartha Kasivajhula
  • sorawee
  • Stephen De Gabrielle

Once again, thank you very much. Keep the suggestions coming and I lets make Racket News even better in 2021.

Sponsors

Many thanks to my sponsors:

If you wish to sponsor me and my work on Racket and Racket News - feel free to visit my GitHub Sponsors webpage. All sponsorship levels are welcome.

Contributors

Thanks to

  • Sorawee Porncharoenwase
  • 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.