beanz Magazine

Rust

The new Rust programming language is designed to solve problems with operating systems and fix issues with C and other languages.

In some ways, Rust is an upside down systems programming language. The developers have mostly hunted through old languages to find ideas useful to solve problems software developers face today and mostly ignored recent research into programming languages. Yet Rust solves many key weaknesses of C, C++, and other languages. Rust 1.0, the first stable version of the language, was released on May 15, 2015.

What Makes Rust Special?

To solve key programming-related problems in low level C and C++ languages, ownership is the primary concern of Rust. Ownership helps solve critical security and runtime problems with memory management C and C++ programmers have dealt with for decades.

If you don’t know, low level languages run as close as possible to the native binary 1s and 0s used by your computer to run software. Low level languages are faster than langugaes which need extra runtime software included with their applications to convert their code to a lower level native language. C and C++ are low level languages. Python, Java, PHP, and other languages are higher level languages.

The idea of ownership is fairly simple to explain. When you write code, the programming language assigns your code to specific parts of your computer memory and indexes its location. The index makes it easy to find, process (compile), and run your code. With some languages like C and C++, it is possible for the programming language to become confused about where your code resides in memory. Connections within your code can’t be made and your program crashes.

Ownership enforces strict rules about how code is written to make it easier to manage the storage and indexing of your code in your computer memory. Which makes sense, if you think about it. A new programming language is free to solve this problem while an existing language has past code and concepts to deal with.

Typically, programming languages have used garbage collection to track use of your computer memory and delete memory no longer needed. Rust does not use garbage collection. Instead, the Rust compiler tracks memory location and usage based on ownership and object lifetimes. As a result, the language can be embedded in other languages and used for writing low level code like software drivers and operating systems. However, Rust reportedly runs as quickly as low level languages C and C++.

The language also is open source, like other Mozilla projects, and has a strong active community around the language. The best documentation and tutorials are on the Rust main website. If you search online for tutorials and documentation, for example, you might find a few with inaccurate information. Now that Rust is stable, anything published after May 2015 is likely accurate.

Finally, the name of the language turns out to have an amusing back story. There is no official reason for the name Rust beyond a name that can be interpreted many different ways. Wikipedia says the language is named after an amazing fungus called Rust. However, digging deeper online reveals it is simply one of many reasons for the name.

How is Rust Used?

In real world terms, Rust is designed to compete with or replace C and C++ as low level languages used in computer operating systems and other applications. Rust does include concepts from a number of other languages to round out its features and how it solves common programming problems.

Rust started as a project by the Mozilla Foundation, the people who support the Mozilla Firefox web browser. They wanted to create Servo, a new web browser software engine to run Firefox, but wanted a more robust, faster, and modern language than C or C++.

Because Rust is a new language with its first stable version released May 2015, the active community around the language is developing the first libraries and people are creating their first projects to test its features.

Learn More

Rust

http://www.rust-lang.org/
https://doc.rust-lang.org/book/
https://github.com/rust-lang
https://www.reddit.com/r/rust/
https://users.rust-lang.org/
https://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust
https://stackoverflow.com/questions/tagged/rust
https://twitter.com/rustlang
http://blog.rust-lang.org/
https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com
https://mail.mozilla.org/pipermail/rust-dev/
https://en.wikipedia.org/wiki/Rust_(programming_language)

Origin of the Name Rust

https://github.com/rust-lang/rust/pull/14896
https://github.com/rust-lang/rust/pull/20531
http://www.reddit.com/r/rust/comments/27jvdt/internet_archaeology_the_definitive_endall_source/
https://en.wikipedia.org/wiki/Rust_(fungus)

Rust 1.0 Announcement

http://blog.rust-lang.org/2015/05/15/Rust-1.0.html
http://arstechnica.com/information-technology/2015/05/mozilla-backed-rust-language-stabilizes-at-version-1-0/
http://www.extremetech.com/computing/206002-rust-1-0-the-programming-language-behind-mozillas-new-web-engine-servo-is-released

Rust by Example

http://rustbyexample.com/

A 30-Minute Introduction to Rust (January 2014)

Early version of the Rust Book.
http://words.steveklabnik.com/a-30-minute-introduction-to-rust

Steve Klabnick

http://words.steveklabnik.com/
http://www.maskmagazine.com/the-cyborgoisie-issue/work/steve-klabnik-interview
https://news.ycombinator.com/item?id=8086818
https://archive.fosdem.org/2015/interviews/2015-steve-klabnik/
http://www.reddit.com/r/rust/comments/2bpnia/long_interview_with_steve_klabnik_whos_producing/

Diving Into Rust for the First Time

https://hacks.mozilla.org/2015/05/diving-into-rust-for-the-first-time/

Rust for Rubyists

http://www.rustforrubyists.com/book/book.html

A Taste of Rust

http://www.evanmiller.org/a-taste-of-rust.html
https://news.ycombinator.com/item?id=9546757

Rust for Functional Programmers (July 2014)

http://science.raphael.poss.name/rust-for-functional-programmers.html

The Rust Programming Language: Fast, Safe, and Beautiful

O’Reilly webinar from January 2015.
http://www.oreilly.com/pub/e/3291

How do Rust and Go compare?

https://www.quora.com/How-do-Rust-and-Go-compare-1

Why is Mozilla developing the Rust language and what are the problem areas for which it is better suited than conventional languages? How does it compare to other system languages?

https://www.quora.com/Why-is-Mozilla-developing-the-Rust-language-and-what-are-the-problem-areas-for-which-it-is-better-suited-than-conventional-languages-How-does-it-compare-to-other-system-languages?redirected_qid=519553

Low Level Languages

https://en.wikipedia.org/wiki/Low-level_programming_language
http://stackoverflow.com/questions/2624781/which-programming-languages-arent-considered-high-level
http://www.codecommit.com/blog/java/defining-high-mid-and-low-level-languages

Garbage Collection

https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
http://programmers.stackexchange.com/questions/113177/why-do-languages-such-as-c-and-c-not-have-garbage-collection-while-java-does
http://stackoverflow.com/questions/1424660/garbage-collection-vs-non-garbage-collection-programming-languages

Also In The October 2015 Issue

October 2015 Issue: Internet of Things (IoT)

The Internet of Things (IoT) connects dumb devices like refrigerators to the internet and uses software to connect them to our daily lives.

There are many operating systems for internet of things devices, from existing software used to control electronic boards to efforts by Google and Apple.

Disney Infinity 3.0, Rocket League, and Super Mario Maker are three fun video games to consider for the 2015 holiday season

You can learn a little software programming and have lots of fun with any number of coding apps available for your phone or tablet computer.

Operating system software is a key part of all computers. But what are they and how do they work?

Learning how to make kittens with JavaScript is a great way to learn how to use the free Chrome web browser to practice and learn JavaScript.

Working through a book can help parents learn programming with their kids or kids learn on their own.

Board games and card games are some of the best ways to learn about programming. You don't need a computer. Play as a family or group.

These robots also can be programmed to move around rooms, one way for kids to learn programming.

Six women were hired to use their math skills to program the ENIAC computer. They called themselves The First Programmers Club.

Nicky is a Linguistics major who learned coding skills to further her research. She's also finished a PhD, won a few big awards, and co-founded Grok Learning.

Two women created an innovative online service to teach teenage girls how to code by using video.

The new Rust programming language is designed to solve problems with operating systems and fix issues with C and other languages.

Data can become alive and pose questions as well as reveal answers to questions we have.

Links from the bottom of all the articles in this issue, collected in one place for you to print, share, or bookmark.

DRY is an acronym for Don't Repeat Yourself. It's a critical programming concept and skill to learn.

Interesting news stories about computer science, software programming, and technology for August and September 2015.

CoderDojo is a free after school club for kids ages 7-17 where kids, parents, mentors, and others play with technology and learn to code.