Welcome to the forty-eighth issue of Racket News.
Here is another issue of Racket News just before the RacketFest weekend - don’t forget to join in the fun. Also, the Call to Racket PRs have been closed and we finally have our first champion for 2021:
xxyzz solving not one but two Call to Racket issues - a double whammy. No blog posts unfortunately to list, so lets all get blogging!
Enjoy the issue with a good ol’espresso.
Table of Contents
- What’s New?
- Racket Around the Web
- New Releases
- Call to Racket!
- DrRacket Quickscript of the day
- Project in the Spotlight
- Featured Racket Paper
- Upcoming Meetups
- Sage Gerard has announced that Xiden, the functional dependency manager for Racket, is now in beta.
- Jack Firth, author of many packages including Resyntax, is looking for alpha testers: “especially people who frequently review Racket code such as teachers and teaching assistants in classes that use Racket”. He says: “So far I’ve found that reading code written by students is bar none the most effective way to come up with ideas for code improvements that Resyntax could suggest.”. If you are interested in helping, feel free to send him an email.
- Who hasn’t heard of SICP? I am sure that book as shaped many a Racketeer. Well, Gerald Jay Sussman has a new book on the block: Software Design Flexibility.
- Racket Stories has close to 400 links to Racket related stuff. Help it get to 500. Submit blog posts, libraries, one off Racket hacks, … New or old doesn’t matter - if it is interesting to you, it’s probably interesting to others as well. And don’t forget to vote on the stories.
- RacketFest Amateur Night is coming this weekend - make sure you don’t miss it!
Racket around the web
Do you blog about Racket? Let me know!
Sad… Nothing this week!
If you know of library releases or maybe your own libraries and you want them to be featured, please let me know.
fluent(pkg/src) is a library providing UNIX style pipes and a lambda shorthand syntax to make your Racket code more readable, by Roger Keays.
sexp-diff(pkg/src) is a library to calculate a diff for sexps based on Levenshtein-like edit distance, by Vincent StAmour and William Bowman.
satore(pkg/src) is a first-order logic resolution based theorem prover in CNF without equality, but with atom rewrite rules, by Laurent Orseau.
simple-obfuscation(pkg/src) is a library providing simple obfuscation, by Robby Findler.
mixfix(pkg/src) is a library that allows users to define and use mixfix operators in Racket, by Sorawee Porncharoenwase.
sameday(pkg/src) is a racket client for the Sameday API, by Bodgan Popa.
kittle-buffer(pkg/src) is an extended brainf*ck implementation, by ZHUO Qingliang.
float32-lib(pkg/src) is a library for single-precision floating point operations, by Brett Saiki.
envlang(pkg/src) is a prototype of a proof-of-concept for a language with first-class environments, by Suzanne Soy.
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.
Our double Call to Racket champion was
xxyzz who closed successfully #3603 with d03456b and #2883 with cc9956a. Congrats! Call to Racket is taking a break this issue, so take a breather and will be back next issue with a brand new issue to fix.
DrRacket Quickscript of the day
Quickscript (featured project of issue 38) provides an easy way to extend DrRacket with small Racket scripts to automate some actions in the editor, while avoiding the need to restart DrRacket. In this new section, contributed by Stephen De Gabrielle, we will be highlighting some of the most interesting scripts out there.
This issue we have two classics that I use every day, Open file directory that opens the files folder in you OS’s GUI Finder/File Explorer/etc. (code below), and Open terminal here that opens a command line terminal set the the directory/folder of the currently selected file.
Both are available in the quickscript-extra package and are easily installed: Using the the graphical package manger in DrRacket (
File>Package manager) enter
quickscript-extra in the Source field, or, from the command line,
raco pkg install quickscript-extra.
If DrRacket is already running, click on
scripts and reload menu.
#lang racket/base (require racket/system racket/path quickscript) (script-help-string "Open the system's file browser in the current directory.") (define cmd (case (system-type 'os) [(unix) "xdg-open"] ; or maybe mimeopen -n ? [(windows) "explorer"] [(macosx) "open"])) (define-script open-file-directory #:label "Open file directory" #:menu-path ("&Utils") (λ (str #:file f) (system (string-append cmd " \"" (path->string (path-only f)) "\"")) #f))
Quickscript is included in DrRacket, and scripts are managed by the Script menu. See the documentation at https://docs.racket-lang.org/quickscript/
Project in the Spotlight
This week’s project in the spotlight is Landau by Ivan Dolgakov.
From the website:
Landau is a language for dynamical systems with automatic differentiation. Landau is a Turing incomplete statically typed domain-specific differentiable language. The Turing incompleteness provides the ability of sophisticated source code analysis and, as a result, a highly optimized compiled code. Among other things, the language syntax supports functions, compile-time ranged for loops, if/else branching constructions, real variables and arrays, and the ability to manually discard calculation where the automatic derivatives values are expected to be negligibly small. In spite of reasonable restrictions, the language is rich enough to express and differentiate any cumbersome paper-equation with practically no effort.
Featured Racket Paper
This issue’s featured paper is Fortifying Macros by Ryan Culpepper.
Existing macro systems force programmers to make a choice between clarity of specification and robustness. If they choose clarity, they must forgo validating significant parts of the specification and thus produce low-quality language extensions. If they choose robustness, they must write in a style that mingles the implementation with the specification and therefore obscures the latter. This paper introduces a new language for writing macros. With the new macro system, programmers naturally write robust language extensions using easy-to-understand specifications. The system translates these specifications into validators that detect misuses—including violations of context-sensitive constraints—and automatically synthesize appropriate feedback, eliminating the need for ad hoc validation code.
Do you know of any upcoming meetups I can advertise? Let me know.
- Racketfest Amateur Night brought to you by Jesse Alama to take place March 26–27, from 8pm to midnight CET.
Racket users video meet up
We are going to try a session that is two hours later. CEST attendees indicated that 10pm is not too late, and 9pm in the UK might not conflict with family dinner time.Sat, 3 Apr 2021 UTC at 20:00:
- Prague: 22:00 CEST
- London: 21:00 BST
- New York: 16:00 EDT
- San Francisco: 13:00 PDT
- What have you been working on?
- Papers/package for discussion
- items from latest Racket News
Many thanks to my sponsors:
- Jesse Alama. Jesse is a Racketeer, mathematician, and writer based in Main, Germany. He is the organizer of RacketFest, and writer of various Racket books and libraries.
- John Clements. John is a researcher and professor at Cal Poly, a member of the core Racket, and Racket release manager.
- Sam Tobin-Hochstadt. Sam is a researcher and associate professor at Indiana University, a member of the core Racket team, and the brains behind Typed Racket and Pycket.
- Stephen De Gabrielle. Stephen is a product manager at epro. He is a long time Racket community contributor, moderating
r/racket, editing the Racket wiki, running many community competitions and events, among many other things.
- and my private sponsors, who shall remain anonymous.
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.
- Stephen De Gabrielle
for their contributions to this issue.
The next issue is planned for publication during week 14, specifically April, 5. Contributions welcome - deadline for next issue: Sunday, April 4, 2021.
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.