2009-12-07

Futures: Fine Grained Parallelism in PLT

We're pleased to announce the initial release of parallel futures, a construct for fine-grained parallelism in PLT. Roughly speaking, a programmer passes a thunk to 'future' and it gets run in parallel. That "roughly" holds a few gotchas, partly because we're just getting started and partly due to the technique we're using. See the documentation for more details:

http://pre.plt-scheme.org/docs/html/futures/

If you've got a multicore machine where you can't keep the cores busy or your office/machine room is a bit cold, try this program:

#lang scheme
(require scheme/future)
(define (loop) (loop))
(for-each
 touch
 (for/list ([i (in-range 0 (processor-count))])
  (future loop)))
Note that you have to build mzscheme with futures; it isn't enabled by default, but see the docs above for how to do that. Beyond the above, we've also gotten a few parallel kernels going and are seeing good scalability up to 8 cores (the biggest machine we have around for the time being).

2009-12-01

PLT Scheme v4.2.3

PLT Scheme version 4.2.3 is now available from

  http://plt-scheme.org/
  • The unit test framework for the teaching languages provides check-member-of and check-range for checking "random functions", i.e., "functions" that may produce several different results for one and the same argument.
  • Added a new image library, 2htdp/image. Significant changes from htdp/image:
    • copying and pasting does not introduce jaggies
    • equal? comparisons are more efficient
    • added rotation & scaling
    • got rid of pinholes (new overlay, beside, above functions based on bounding boxes)
  • The scheme/vector library provides common vector operations (also reprovided by scheme).
  • The scheme/promise library provides several new kinds of promises with alternatives execution strategies.
  • New port-reading utilities: in-port, port->list, file->list.
  • A new require-macro, path-up, for requiring a file that is higher in the directory tree.