Matthias Endler
- Backend Engineer at trivago
- Deals with Website Performance
- Worked a lot with Python and PHP
- Played a bit with Golang
- Not a Rust Programmer yet
- Likes the ideas of Rust
@matthiasendler
Slide 3
Slide 3 text
What I like about…
• PHP: Package manager, Community
• Python: Syntax, Libraries
• Golang: Tooling, Documentation
• C: Speed, no overhead
Slide 4
Slide 4 text
What I like about…
• PHP: Package manager, Community
• Python: Syntax, Libraries
• Golang: Tooling, Documentation
• C: Speed, no overhead
RUST
Slide 5
Slide 5 text
RUST: High level on bare metal
Slide 6
Slide 6 text
Complexity vs Speed
• PHP
• Python
• Golang
• Rust
• C
Faster „Easier“
Slide 7
Slide 7 text
Systems Programming
Memory management
Error handling
Static Typing
Compiling
…
Slide 8
Slide 8 text
Systems Programming
is hard!
Slide 9
Slide 9 text
Fast feedback loops
What we need:
Slide 10
Slide 10 text
Fast feedback loops
What we need:
Awesome tooling
How we get it:
Slide 11
Slide 11 text
Fast feedback loops
What we need:
Awesome tooling
How we get it:
Well integrated
All of them should be
Slide 12
Slide 12 text
IDEs?
Slide 13
Slide 13 text
Visual Studio for Rust
Slide 14
Slide 14 text
IntelliJ with Rust support
Slide 15
Slide 15 text
Atom with Rust packages
Slide 16
Slide 16 text
My tool wishlist
Unit testing
Package manager
Syntax highlighting
Formatting
Code completion
Debugging
Code linter
Benchmarking
Profiling
Code coverage
Slide 17
Slide 17 text
My tool wishlist
Unit testing: builtin
Package manager
Syntax highlighting
Formatting
Code completion
Debugging
Code linter
Benchmarking
Profiling
Code coverage
Slide 18
Slide 18 text
https://doc.rust-lang.org/book/testing.html
Unit testing
kcov …is a code coverage tester for
compiled programs, Python
scripts and shell scripts
language: rust
matrix:
fast_finish: true
include:
- rust: nightly
env: FEATURES="--features nightly"
sudo: false
- rust: nightly
env: FEATURES="--features nightly" BENCH=true
sudo: false
- rust: beta
sudo: true
after_success: |
sudo apt-get install libcurl4-openssl-dev libelf-dev libdw-dev &&
wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
tar xzf master.tar.gz && mkdir kcov-master/build && cd kcov-master/build && cmake .. && make &&
sudo make install && cd ../.. &&
kcov --coveralls-id=$TRAVIS_JOB_ID --exclude-pattern=/.cargo target/kcov target/debug/hyper-*
Put this into your .travis.yml:
Slide 31
Slide 31 text
Summary
Lots of work to do
But impressive start
Slide 32
Slide 32 text
We need to focus on those…
Unit testing
Package manager
Syntax highlighting
Formatting
Code completion
Debugging
Code linter
Benchmarking
Profiling
Code coverage
Slide 33
Slide 33 text
Bonus
rr - a reverse debugger
(http://rr-project.org/)
Dash - Offline API Documentation browser for Mac
(https://kapeli.com/dash)
Crates.io reverse package lookup
(https://crates.io/crates/serde/reverse_dependencies)
Slide 34
Slide 34 text
Even more at
https://gist.github.com/nrc/a3bbf6dd1b14ce57f18c