Racket News - Issue 15

Permalink: https://racket-news.com/2019/09/racket-news-issue-15.html

Welcome to the fifteenth issue of Racket News.

To all the new subscribers - and we have a few new ones, welcome! I hope to cover most of what is happening in the Racket Ecosystem but I might miss a few things as well so I am counting on you to send me suggestions and comments, in case I have missed something. This issue might have more misses than hits given I have been away exactly since I published the last issue. Wish me luck on this one!

Grab a latte and enjoy!

Table of Contents

  1. What’s New?
  2. Racket Around the Web
  3. New Releases
  4. Project in the Spotlight
  5. Featured Racket Paper
  6. Upcoming Meetups
  7. Racket Project Statistics
  8. Racket Jobs

What’s New?

  • Entries for the Standard Fish Summer Competitions kept coming until the very last day. Surely Stephen de Gabrielle will have a hard time judging these entries.
  • Manolis Ragkousis asked for input for a proposals for Minimalistic Languages devroom in FOSDEM2020.
  • A thread started by Sage Gerard regarding licensing and commercial turned into an interesting read mixing part software license discussions, part SFC related clarifications.

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.

  • tesselation by Zachary Romero is a library on top of the Racket Metapict library for creating geometric patterns.
  • koyo by Bogdan Popa is a web application development toolkit that expands upon Racket’s built-in web-server with all the functionality that a web app typically needs in a complete package.
  • polyglot by Sage Gerard is a static website generator that lets you use any #lang language you want to author content among Markdown.
  • unlike-assets by Sage Gerard is a build system like Webpack, except leaner and powered by Racket.

Project in the Spotlight

This week’s project in the spotlight is Typed Racket by the Racket team.

From the website:

Typed Racket is Racket’s gradually-typed sister language which allows the incremental addition of statically-checked type annotations. This guide is intended for programmers familiar with Racket.

Featured Racket Paper

The featured paper for this issue is close to my heart. I started my first year studying in IST, Lisbon on September 1999 - exactly 20 years ago. Our Introduction to Programming course followed SICP and the first order of business was to download and install PLT Scheme 103p1 - the rest is history. The featured paper is co-authored by one of the teachers of the subject back then - by Pedro Ramos and António Leitão: Reaching Python from Racket.

Abstract:

Racket is a descendant of Scheme, a language that has been widely used to teach computer science. Recently, the Python language has taken over this role, mainly due to its huge standard library and the great number of third-party libraries available. Given that the development of equivalent libraries for Racket is an enormous task that cannot be currently done in an acceptable time frame, the next best option is to allow the Racket platform to use Python programs and libraries.

We have been developing an implementation of Python for the Racket platform based on a source-to-source compiler. In order to provide good performance and good interoperability with the Racket platform, the runtime libraries are being implemented over Racket data-types. This, however, entails implementing all of Python’s standard library on Racket and it does not provide access to popular Python libraries implemented using C module extensions (such as Numpy and SciPy).

This paper presents an alternative approach that allows libraries from Python’s reference implementation to be imported and used in our Racket implementation of Python, immediately providing access to all of Python’s standard library and every third-party library, including NumPy and SciPy.

The proposed solution involves importing Python module objects directly from Python’s virtual machine, by calling the Python/C API through Racket’s Foreign Function Interface, and converting them to objects usable by our Racket runtime libraries, making them compatible with the Racket platform.

This compatibility layer therefore relies on relatively expensive foreign function calls to Python’s libraries, but our performance tests show that the overhead introduced by them is quite low and, for most cases, it can be minimized in order to attain the same performance as Python’s reference implementation.

Please note I am not hosting any of these files, but instead I am linking to the PDFs hosted by the researchers themselves. If you think there is a better way to do this or if I should host the files myself, drop me a line.

Edit (03.09.2019): Tim Meehan pointed out to me that the link to the paper was not working in the first version.

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, 2019.

# commits Issues (new/closed/open) PRs (new/closed/open)
racket 35 20/12/341 10/12/98
typed-racket 12 4/2/209 7/7/15
drracket 6 17/5/141 0/0/3
ChezScheme 3 0/0/0 0/0/0
plot 3 0/0/9 2/1/5
redex 2 3/1/31 0/0/7
scribble 0 3/0/58 1/0/8

Contributions by (14):

  • Ben Greenman
  • Bert De Ketelaere
  • Chuan Wei Foo
  • Fred Fu
  • Gustavo Massaccesi
  • Jesse Alama
  • John Clements
  • Matthew Flatt
  • Matthias Felleisen
  • Nick Thompson
  • Noah W M
  • Paulo Matos
  • Robby Findler
  • Sam Tobin-Hochstadt

Of these, 2 are new contributors for 2019:

  • Chuan Wei Foo
  • Nick Thompson

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

Edit (03.09.2019): Gustavo Massaccesi pointed out to me that I missed a few contributors in the first version.

Jobs

If you want to advertise any Racket related jobs, please send me an email or submit an issue.

Contributors

Thanks to

  • Tim Meehan
  • Gustavo Massaccesi

for his 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.