>
//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

nocomment

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

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

borrowck-error1

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.

rusticon

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. 

  

 nimbanner

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.

nocommentlanguages

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))
 result.add(socket.recv(20))
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. 

 

 

 VisualStudiologo

 

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. 

 

 

nocomment

 

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.

Banner


Zitadel Announces Funding And Future Plans
21/11/2024

Zitadel has announced a major funding round that will be used to expand technical teams and fund further product development. The company is the creator of an open source project for cloud-native iden [ ... ]



Microsoft Introduces Vector Abstractions Library For .NET
21/11/2024

Microsoft has announced a preview release of the Microsoft Extensions VectorData Abstractions library, which can be used to help integrate vector stores into .NET applications and libraries.


More News

nocommenticon4102016

espbook

 

Comments




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

 

 

Last Updated ( Tuesday, 04 October 2016 )