A new version of Mozilla’s programming language Rust has been released with the aim of stabilizing the language syntax.

The new version removes argument modes and has full integration of borrowed pointers. Rust is a curly-brace, block-structured expression language that looks similar to C and C++.

It has different syntax to C and has been designed with the aim of giving developers ways to write code that behaves well in large and concurrent systems. The original design of Rust was by developer Graydon Hoare, though later work has been carried out by Mozilla.

(click to enlarge)

One main change to the new version is the full integration of borrowed pointers, alongside the removal of argument modes. Until this version, you could rely on type-directed heuristics to select a default argument passing behavior, but developers reported that this was confusing, so the facility has been removed.

The recommendation that borrowed pointers are now fully mature and should be used, highlights one of Rust’s more unusual features. It has three types of pointers:

borrowed, unique and managed.

Managed pointers make it easy to carry out garbage collection; unique pointers let you avoid the need to use garbage collection; and borrowed pointers allow functions to work with both unique and managed pointers.

The strength of a borrowed pointer is that it can be used to point anywhere: into the shared and exchange heaps, into the stack, and even into the interior of another data structure.

There’s a good tutorial on borrowed pointers by Mozilla's Rust developer, Niko Matsakis on his Baby Steps blog.

Someone recently quipped that if you can hang yourself with one pointer then three distinct types should do the job in far less time - but I'm sure this isn't true.

Other changes to Rust include the replacement of classes with structs, better error reporting, and a reduction in the list of reserved keywords.