This talk will give a brief introduction into the Rust programming language and provide a user's perspective on the current state of the official Eclipse based tooling (Corrosion) for the language. Most of the time will be spent on explaining the Rust language.
The talk only requires basic programming knowledge, no systems programming background is required.
What is Rust?
Rust is a "systems programming languge" which usually means it provides tight control over memory management and produces highly performant executable code. It was started at Mozilla and is slowly gaining popularity (https://insights.stackoverflow.com/survey/2018/#technology-most-loved-dreaded-and-wanted-languages)
The language ensures memory- and thread safety (no use-after-free, no double-free, no data-races) at compile time. It also prevents buffer over- and underflows (partly at compiletime, partly at runtime).
This makes the language attractive for developers dreading manual memory management and concurrent code in C and C++. In contrast to Golang, Rust does not use a garbage collector, which makes it a great fit for embedding Rust code in other runtime systems.
The language is influenced by concepts from C++ (such as zero-cost abstractions and RAII) as well as concepts from Haskell (such as algebraic data types, pattern matching, and type classes). This makes Rust a unique systems language in which high level constructs can be used.
Some of the current use cases for Rust that have been successful are:
- Generally high performant, memory efficient applications (“systems / infrastructure”)
- Small command line applications
- WebAssembly libraries
- Integration into existing C/C++ applications for safety critical parts
- Integration into other language runtimes (e.g. Ruby, Python or Java) for performance sensitive parts
With the high pace of the language development, Rust will likely gain a few more strong suits soon. This will likely include asynchronous web services and embedded development.
Rust provides an early implementation of the Language Server Protocol called RLS, which allows generic integration into IDEs.
Corrosion is the official Eclipse project supporting the Rust programming language in the Eclipse IDE. The plug-in is based on the LSP4J and LSP4E projects in Eclipse to use the RLS in Eclipse.
What Rust Features Will be Presented?
We will try to cover the most important tools and language constructs of Rust.
The shown language features include
- The most relevant data types (enums, structs, etc.),
- Language constructs and provided data types for memory management (such as the infamous "borrow checker"),
- Definition of behavior for data types (including traits),
- As well as control flow features (match expressions, ?-Operator, etc.).
What Will be Shown Regarding the Eclipse-integration?
The main features of the language tooling in Eclipse will be highlighted in this talk.
We will also discuss the current state and limitations of the RLS and Eclipse Corrosion from a user's perspective.