Happy new year! What are you folks up to?
I released my first crate https://crates.io/crates/minifb
rust-note : A simple markdown editor (local web server) ,dependency on tiny_http and rusqlite,time,rustc-serialize, Maybe it could be an example for someone like me who want to play with rust but know little about.
This week for me is more on the new book. Lots of work on the new book.
Back from the Chrismas holidays and at this instant, Max is compiling Caffe and Tensorflow to later compare the performance on an Alexnet with the performance of Leaf. There is still some more work to do, but it now boiled down implementing the weight updates for the solver and removing minor bugs. We integrated a lot of the popular Layers, thanks to Collenchyma-NN, so once the weight updates/initialization is done you can run many popular DNNs with Rust.
Are you on Linux? Give it a try!
cargo install tldr
On Windows & Mac? Yes you can, after you follow some instructions first.
Trying to build a driver for the new binary protocol (called Bolt) of neo4j graph database. Code is here.
I don’t work with Rust (yet!) nor neo4j, and I’ve never built something like this, so this will be a good challenge for me (and a lot of fun, BTW).
If I ever finish this, I’ll try to expose a C interface and then compare the performance against the official python driver, which I’m using as a reference.
I just published a GNU
wc clone in rust. I wrote it to learn some rust and play around with the language. I found the experience quite pleasant.
I didn’t publish any numbers but some informal tests using
time on my linux system showed my code to be slightly faster than GNU
wc for counting words, unicode characters, and/or line length, but about half as fast as GNU
wc when counting lines or bytes. I didn’t look at the GNU
wc source to see why as I was trying to challenge myself to see if I could do better.
Interesting! Yours is a bit fuller-featured than mine: https://github.com/steveklabnik/rwc
My understanding is the way that GNU wc is fast boils down to ‘memchr’.
Cool. Your version has almost all the features. Though I would guess it is a bit slow as you iterate the same bytes several times while counting. You pay for those higher level abstractions.
I could see how memchr would help when looking for newlines or calculating line lengths, but once you start counting words or unicode chars memchr doesn’t help anymore. Maybe that’s why my version is faster for those tasks, though if I had to guess, I would say i/o buffering was providing most of the speedups (also why mmap is the fastest). Once you are looking at every byte, the speed with which you can read the bytes becomes your limiting factor.
P.S. I would also ask, why memchr is faster than the Bytes iterator?
@iamcodemaker @steveklabnik if you have a fully working wc implementation, you could contribute it to coreutils. There already seems to be an implementation, but maybe it can be improved using your acquired knowledge.
I took a look. There are some speedups to be had, I don’t have time to do a pull request ATM.
Refactoring code & writing documentation.
cargo doc are awesome!
I had some questions (mostly on twitter) about why I would switch to Rust for ProDBG so did a post about it a few days ago and I figured it might be worth to post it here also http://prodbg.com/ProDBG-switches-to-Rust
I shipped Diesel 0.4 this week. Now I’ll be working on Diesel 0.5. Mainly will be a release focused on extensibility. In particular how we map database types to Rust types is really naive and not pluggable by third party crates, so I hope to fix that soon
I started learning Rust last week, and my first task is to sugar-coat rust-fuse. It’s an excellent fuse client, comparable to the
libfuse low-level API. My goal is to turn this into something like this.
I’m not 100% confident with the API (passing a vector of
File structs? shrug…) But the
ezfuse lib compiles and sets up all of the stub methods for the fuse callbacks. None of the moving parts are hooked up yet.
First impressions of Rust: I feel like if my code compiles, it will actually do what I expect. When the compiler errors, it’s because I’m doing something wrong. That’s a rapid feedback loop, compared to C, where the code may compile and randomly run into some undefined state later on…