Racket 6.4 Improves Security and Adds Incremental Garbage Collection

| by Sergio De Simone Follow 14 Followers on Feb 09, 2016. Estimated reading time: 1 minute |

Racket, a multi-paradigm programming language belonging to the Lisp/Scheme family, has reached version 6.4, PLT announced. The new version adds several new features, including an incremental garbage collector (GC), and fixes a vulnerability in the web server.

Racket’s new incremental garbage collector is specifically aimed at interactive programs, which, PLT say, will benefit in responsiveness thanks to the elimination of long GC pauses. The new GC behaviour must be specifically requested executing (collect-garbage 'incremental). The reason for not having the new GC as a default lies with the fact that it tends to use more memory, due to its collecting objects more aggressively and not using compaction, and with its overall time performance, which could be slower than the older GC. So, the old behaviour is still to be preferred for batch programs, where GC pauses are not easily noticed.

As mentioned, Racket 6.4 also fixes a serious security vulnerability in the web server, triggered by serving static files. The vulnerability make it possible to access files located on a machine running Racket’s web server and affects also Racket versions previous to 6.0. Besides fixing the vulnerability in 6.4, PLT also provides a package to patch web-server-lib for Racket 6.0+. PLT also mentions that it is possible to patch previous versions of Racket.

Other improvements to the language are in the area of Typed Racket, which generates now more permissive contracts for Any type, thus reducing the number of contract errors in typed/untyped programs. Furthermore, the Redex DSL, aimed to specify and debug the operational semantics of formal languages, now supports scoped binding of specifications. You can read the full list of changes in PLT announcement.

Racket is released under the LGPL license. One of its design goals is to serve as a platform for language creation, design, and implementation. The language is used in a variety of contexts such as scripting, general-purpose programming, computer science education, and research.

Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread


Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you