Welcome to the thirty-third issue of Racket News.
Last time I mentioned we were close to crossing the 300 subscribers. Scratch that! We are now 306 subscribed to Racket News newsletter! Welcome to you all.
It might not be terribly obvious yet but I started a refactoring of the website from the ground up. This includes, cleaning up the CSS, HTML, improving images to be responsive, and quite a bit more. There’s a lot to more come including a website redesign and more selected content. Stay tuned!
Grab a coffee and enjoy!
Table of Contents
- What’s New?
- Racket Around the Web
- New Releases
- Project in the Spotlight
- Featured Racket Paper
- Upcoming Meetups
- Jay McCarthy announced the (chaperone RacketCon) 2020 - to be held virtually in October. The main details still have to be decided and the organization requires user feedback. If you are interested in joining make sure you fill in this form.
- Stephen De Gabrielle has added a very useful Wiki page on Artifacts: code snippets that are too small to be a package. Check it out and if you have other pearls, make sure you add them.
Racket around the web
Do you blog about Racket? Let me know!
- Announcing http-easy by Bodgan Popa.
If you know of library releases or maybe your own libraries and you want them to be featured, please let me know.
http-easy(src/pkg) is a high-level HTTP client for Racket by Bogdan Popa.
list-plus(src/pkg) provides a form that collects values into a list while supporting internal-definitions by Sorawee Porncharoenwase.
relation(src/pkg) is a library with generic interfaces and convenient utilities for using relations in Racket by Siddhartha Kasivajhula.
sci(src/pkg) is a library for scientific computing by Jens Axel Soegaard.
thread-with-id(src/pkg) is a library that allows creating threads with randomly chosen IDs that make them easier to distinguish in logs by David Storrs.
Project in the Spotlight
From the repo
A disassembler for JITed functions in Racket.
% raco pkg install disassemble
To use it, try something like this (this works only on x86 or x86–64):
[samth@punge:~/sw/disassemble (master) plt] racket Welcome to Racket v188.8.131.52. > (require disassemble) > (define (f x) 1) > (disassemble f) 0: 488943f8 (mov (mem64+ rbx #x-8) rax) 4: 4883c3f8 (add rbx #xfffffffffffffff8) 8: b803000000 (mov eax #x3) d: 4c8b75c8 (mov r14 (mem64+ rbp #x-38)) 11: 4883c428 (add rsp #x28) 15: 415d (pop r13) 17: 415c (pop r12) 19: 5b (pop rbx) 1a: 5d (pop rbp) 1b: c3 (ret)
Featured Racket Paper
This issue’s featured paper is Super 8 Languages for Making Movies (Functional Pearl), by Leif Andersen, Stephen Chang, Matthias Felleisen
The Racket doctrine tells developers to create languages (as libraries) to narrow the gap between the terminology of a problem domain and general programming constructs. This pearl illustrates this doctrine with the creation of a relatively simple domain-specific language for editing videos. To produce the video proceedings of a conference, for example, video professionals traditionally use “non-linear” GUI editors to manually edit each talk, despite the repetitive nature of the process. As it turns out, the task of video editing naturally splits into a declarative phase and an imperative rendering phase at the end. Hence it is natural to create a functional-declarative language for the first phase, which reduces a lot of manual labor. The implementation of this user-facing DSL, dubbed Video, utilizes a second, internal DSL to implement the second phase, which is an interface to a general, low-level C library. Finally, we inject type checking into our Video language via another DSL that supports programming in the language of type formalisms. In short, the development of the video editing language cleanly demonstrates how the Racket doctrine naturally leads to the creation of language hierarchies, analogous to the hierarchies of modules found in conventional functional languages.
Do you know of any upcoming meetups I can advertise? Let me know.
- (chaperone) RacketCon 2020, to happen virtually sometime in October. Fill in the survey form, if you haven’t done so already.
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.