Racket News - Issue 34

Permalink: https://racket-news.com/2020/07/racket-news-issue-34.html

Welcome to the thirty-fourth issue of Racket News.

We have a jam-packed newsletter this time. The start of the 7.8 release process is here, new wiki pages, new bloggers, and we have a new competition organised by Stephen De Gabrielle and Laurent Orseau: the Quickscript Competition. Find all the details in this issue - ready, set, go!

Grab a strong good-ol’ espresso and lets go. Enjoy!

Table of Contents

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

What’s New?

Quickscript Competition

Quickscript is the scripting functionality behind the DrRacket Scripts menu.

For the month of July we will be running a Quickscript Competition: Write your own script and win prizes! There will be weekly winners in categories to be determined by the judges and overall awards at the end of the month.

We follow Racket’s and the ACM’s Code of Conduct.

There will be amazing prizes!

  • An exclusive badge for your github profile recognising your efforts and contribution to the community.
  • Socks/Mugs/Hats/Stickers with the Racket logo - to be announced on Racket Users mailing list/google group.

Scripts licensed appropriately will be included in a package for installation and universal fame.

End date: 31-July (starting officially now)

Getting started

Getting started for the impatient in DrRacket.

See quickscript-extra [readme] [scripts] for a bunch of useful and example scripts.

Help and discussion will be available through the #quickscript-competition slack channel.

Once your script is ready, submit your entry!

Need some ideas to get started?

Here’s a script to open Racket News from DrRacket, submitted by Stephen De Gabrielle.

#lang racket/base

(require browser/external
         quickscript)

(script-help-string "Opens racket-news.com in the browser.")

; Launch https://racket-news.com in browser
(define-script racket-news
  #:label "Racket News (browser)"
  #:menu-path ("&News")
  #:help-string "Opens racket-news.com."
  (lambda (str) 
    (send-url "https://racket-news.com")
    #f))

Another good example is the Open terminal here script. It will open a terminal in the same folder as the currently selected file on Linux, MacOS and Windows. You can get it by installing or updating the quickscript-extra collection, or just copy the source directly into your DrRacket script library.

Fix (08.07.2020): Updated documentation links to point to snapshot documentation.

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(src/pkg) is a library to assist in the creation of geometric designs by Zachary Romero.
  • mind-map(src/pkg) is a library for authoring mind maps using Racket by Sage Gerard.
  • shlex(src/pkg) is a library for simple lexical analysis for Racket by sorawee.
  • nasa-open-api(src/pkg) is a library for a handful of NASA’s Open APIs by Michiah Hugi.
  • place-controller(src/pkg) is a library to encapsulate Racket places using helpful procedures by Sage Gerard.

Fix (07.06.2020): description of shlex package (thanks sorawee).

Project in the Spotlight

This week’s project in the spotlight is Cassius (src) by Pavel Panchekha, Adam Timothy Geller, Shoaib Kamil, Michael Ernst, Zachary Tatlock, and Emina Torlak.

From the website:

The Cassius Project develops tools that understand how web pages render. Leveraging modern equation solvers, the Cassius Project hopes to develop a new class of verification, synthesis and debugging tools for web pages.

The Cassius Framework is a mathematical formalization of web page layout, mostly implementing CSS 2.1. CSS is huge, so Cassius supports only a subset:

  • The CSS 2.1 box model: margins, padding, and borders
  • Min and max widths and heights
  • Percentage and em measurements
  • Colors, foreground and background
  • The inline, block, and inline-block display modes line-height and font-size position and positioning properties float and clear

Featured Racket Paper

This issue’s featured paper is Automated Reasoning for Web Page Layout, Pavel Panchekha and Emina Torlak

Abstract:

Web pages define their appearance using Cascading Style Sheets, a modular language for layout of tree-structured documents. In principle, using CSS is easy: the developer specifies declarative constraints on the layout of an HTML document (such as the positioning of nodes in the HTML tree), and the browser solves the constraints to produce a box-based rendering of that document. In practice, however, the subtleties of CSS semantics make it difficult to develop stylesheets that produce the intended layout across different user preferences and browser settings. This paper presents the first mechanized formalization of a substantial fragment of the CSS semantics. This formalization is equipped with an efficient reduction to the theory of quantifier-free linear real arithmetic, enabling effective automated reasoning about CSS stylesheets and their behavior. We implement this reduction in Cassius, a solver-aided framework for building semantics-aware tools for CSS. To demonstrate the utility of Cassius, we prototype new tools for automated verification, debugging, and synthesis of CSS code. We show that these tools work on fragments of real-world websites, and that Cassius is a practical first step toward solver-aided programming for the web.

Upcoming Meetups

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.

Racket Project Statistics

Some data about the activity in the Racket et al. repositories, for the month of June, 2020.

# commits Issues (new/closed/open) PRs (new/closed/open)
racket 87 34/26/371 18/23/81
ChezScheme 38 0/0/0 0/0/0
typed-racket 19 3/6/224 10/10/16
drracket 10 10/8/180 1/3/1
scribble 7 3/3/61 6/5/9
redex 5 2/3/42 0/1/9
plot 2 0/0/7 2/2/1

Contributions by (18):

  • Alex Harsanyi
  • Alexis King
  • David Florness
  • Fred Fu
  • Gustavo Massaccesi
  • Matthew Flatt
  • Mauer-Oats
  • Michael Ballantyne
  • Paulo Matos
  • Philip McGrath
  • Robby Findler
  • Ryan Culpepper
  • Sam Tobin-Hochstadt
  • Sancho McCann
  • Sorawee Porncharoenwase
  • Spencer Florence
  • Stephen De Gabrielle
  • dyb

Of these, 4 are new contributors for 2020:

  • Alex Harsanyi
  • Mauer-Oats
  • Michael Ballantyne
  • Sancho McCann

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

Contributors

Thanks to

  • Stephen De Gabrielle
  • sorawee

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.