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
- What’s New?
- Racket Around the Web
- New Releases
- Project in the Spotlight
- Featured Racket Paper
- Upcoming Meetups
- Racket Project Statistics
- Racket Jobs
- 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!
- Racket for e-commerce by Bogdan Popa.
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
#langlanguage 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.
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.
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)|
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:
Edit (03.09.2019): Gustavo Massaccesi pointed out to me that I missed a few contributors in the first version.
- Tim Meehan
- Gustavo Massaccesi
for his contributions to this issue.
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.