Tech

Programming language: Rust 1.39 appears with Async / Await

The Version 1.39 of the programming language Rust has appeared. Thus, technology for the Async Await syntax is officially available for the first time. The work began more than three years ago, as the team itself in an additional Blog entry to the technique writes. With version 1.36 released this summer, the development team has already done some important preliminary work for it.

Job market

  1. Duisburger supply and traffic mbH, Duisburg
  2. about duerenhoff GmbH, Bielefeld



The now available implementation describes the team as a minimal viable product (MVP) and accordingly assumes that the technology will continue to develop strongly in the future. With the help of the new syntax, functions and code blocks can be used as async highlight and with .await can be waited for their completion. The return value of an async function is a future. The latter, in turn, describe the developers of Rust as "suspended calculation",

The technique can be described simply with the aim to be able to pause functions. Similar techniques are also available in other languages ​​such as Javascript or C #. The Rust developers point out explicitly, however, that the own execution model differs from those in important details.

New Borrow checker is introduced

With Rust 1.39 the team also changes the behavior the newly introduced Borrow checker for the release of Rust 2018. The old technology had some problems that allowed insecure memory access, which should actually prevent Rust. The new implementation resolved these issues, but caused some bugs in productive code.

So far, the team has only displayed the changed behavior as warnings. With the now released version 1.39 it will be hard mistakes in Rust 2018. With the upcoming version 1.40 this should be implemented for Rust 2015, so that the old Borrow-Checker can be removed.

With Rust 1.39 developers can use attributes in function parameters. There are also some functions from the standard library const fn available, this includes about Vec :: new. String :: new. LinkedList :: new or len str ::, These can be in constInvoke environments, such as to create a constant vector. Further news lists the announcement.