//No Comment - Rust 1.12, Nim 0.15 & VC++ For Linux 1.0,5
Written by Ian Elliot   
Tuesday, 04 October 2016

• Rust 1.12

• Nim Version 0.15.0 released

• Visual C++ for Linux 1.0.5 Updates


Sometimes the news is reported well enough elsewhere and we have little to add other than to bring it to your attention.

No Comment is a format where we present original source information, lightly edited, so that you can decide if you want to follow it up. 


Rust 1.12


Rust is Mozilla's proposed system programming language:

"Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. "

The Rust team is happy to announce the latest version of Rust, 1.12. Rust is a systems programming language with the slogan
“fast, reliable, productive: pick three.”


The largest user-facing change in 1.12 stable is the new error message format emitted by rustc


The new Rust “mid-level IR”, usually called “MIR”, gives the compiler a simpler way to think about Rust code than its previous way of operating entirely on the Rust abstract syntax tree. It makes analysis and optimizations possible that have historically been difficult to implement correctly. The first of many upcoming changes to the compiler enabled by MIR is a rewrite of the pass that generates LLVM IR, whatrustc calls “translation”, and after many months of effort the MIR-based backend has proved itself ready for prime-time.MIR exposes perfect information about the program’s control flow, so the compiler knows exactly whether types are moved or not. This means that it knows statically whether or not the value’s destructor needs to be run.

In cases where a value may or may not be moved at the end of a scope, the compiler now simply uses a single bitflag on the stack, which is in turn easier for optimization passes in LLVM to reason about. The end result is less work for the compiler and less bloat at runtime. In addition, because MIR is a simpler ‘language’ than the full AST, it’s also easier to implement compiler passes on, and easier to verify that they are correct.


The biggest feature added to Cargo this cycle is “workspaces.” Defined in RFC 1525, workspaces allow a group of Rust packages to share the same Cargo.lock file. If you have a project that’s split up into multiple packages, this makes it much easier to keep shared dependencies on a single version. To enable this feature, most multi-package projects need to add a single key, [workspace], to their top-level Cargo.toml, but more complex setups may require more configuration.Another significant feature is the ability to override the source of a crate. Using this with tools like cargo-vendor and cargo-local-registry allow vendoring dependencies locally in a robust fashion. 



Nim Version 0.15.0 released

This release includes almost 180 bug fixes and improvements.

Some of the most significant changes in this release include: 

All pages in the documentation now contain a search box and a drop down to select how procedures should be sorted. This allows you to search for procedures, types, macros and more from any documentation page. Sorting the procedures by type shows a more natural table of contents. This should also help you to find procedures and other identifiers.


The multisync macro was implemented to enable you to define both synchronous and asynchronous IO procedures without having to duplicate a lot of code.
As an example, consider the recvTwice procedure below:

proc recvTwice(socket: Socket |
  AsyncSocket): Future[string] {.multisync.} =
result = "" result.add(await socket.recv(25))
result.add(await socket.recv(20))


The multisync macro will transform this procedure into the following:

proc recvTwice(socket: Socket): string =
 result = "" result.add(socket.recv(25))
proc recvTwice(socket: AsyncSocket)
         Future[string] {.async.} =

result = ""
result.add(await socket.recv(25))
result.add(await socket.recv(20))

Allowing you to use recvTwice with both synchronous and asynchronous sockets.

Many of the httpclient module's procedures have been deprecated in favour of a new implementation using the multisync macro. There are now two types: HttpClient andAsyncHttpClient. Both of these implement the same procedures and functionality, the only difference is timeout support and whether they are blocking or not. 





Visual C++ for Linux 1.0.5 Updates


This release has some major performance improvements that feature incremental copy and build, and considerably reducing the number of connections to the remote Linux machine. We’ve also made significant improvements in IntelliSense 

  • Makefile project template
  • Remote source copy management
  • Overridable C/C++ compiler path
  • New debugging options

A Makefile project template has been added that supports using external build systems on your remote machine (make, gmake, CMake, bash script etc.). This works as you would expect under the C++ project property pages you can set your local Intellisense paths, then on the remote build property page you add the commands, semicolon separated, to trigger your build on the remote machine.

It is possible to specify at the file and project level whether or not a file should be remotely copied. This means you can use your existing build mechanisms just by mapping your existing sources locally and adding them to your project for editing and debugging.

You can now override the compiler commands used on the remote machine in the Property Pages. That will enable you to point to specific versions of GCC if needed or even point to an alternate compiler like clang. You can use either full paths or a command available on your path.

Under Build Events node of the project properties there are also new pre-build and pre-link remote build events as well as options for arbitrary file copy in all build events to provide greater flexibility.

There have also been improvements in debugging. 





To be informed about new articles on I Programmer, sign up for our weekly newsletter,subscribe to the RSS feed and follow us on, Twitter, FacebookGoogle+ or Linkedin.


Google Gemini API Developer Competition

Google is running a Gemini API Developer Competition with prizes including a 1981 custom electric DeLorean. Entrants will use the Gemini API to tackle real-world challenges, and the organizers su [ ... ]

.NET MAUI Community Toolkit Adds TouchBehavior

Version 8 of the .NET MAUI Community Toolkit has been released with the addition of TouchBehavior (previously known as the TouchEffect). The major release also has breaking changes for the Snackbar on [ ... ]

More News


raspberry pi books



or email your comment to: comments@i-programmer.info



Last Updated ( Tuesday, 04 October 2016 )