What's everything working on this week (39/2017)?


New week, new Rust! What are you folks up to?


Little bit of uom (type-safe zero-cost dimensional analysis) work. I’ve been doing some proof-of-concept work in the playground to implement conversion between units that can support non-float underlying storage types.


I’m trying to create an API for calculating the beam/frame stress for a project i’m working on.I will probably release the docs when it’s done.


Last week I posted to Reddit about Rustbud, a tool I’m working on that’s an alternative to rustup for managing Rust toolchains. The overwhelming majority of feedback I got was “please update the README to describe how your thing differs from rustup”, so that’s what I’m working on.

Here’s what I’ve got so far.


I just added JNI bindings to the ICE candidate parser library using jni-rs. Works pretty well. If you ever have to create Java bindings for a Rust library, give jni-rs a try!


I won’t be doing much this week, as I am going on a holiday trip soon :flight_departure: . I may still give it a stab today at debugging why my icecc-rs binding is not working correctly.


After I released imag 0.4.0 just two days ago, I’m obviousely working on 0.5.0 now.

Besides that I’m making good progress with kairos - the convenient chrono frontend.

Also, I forked rust-vobject to develop a high-level interface based on it for nice vcard/icalendar reading/writing from rust. Hopefully the maintainer takes my code and releases 0.3.0 with it, as soon as it is ready.

Edit: Ah, almost forgot: I’m working on my masters thesis full-time as well, of course.


@Eijebong, @lnicola, and I just released Ammonia version 1.0-rc1, an html5ever-based library for removing malicious code from user-submitted HTML (Cross-Site Scripting, Clickjacking, and the like). The RC version is so that we can, hopefully, get feedback on the API before we finally freeze it for 1.0.


There’s always more libz blitz work to do! I’d like to make it easier to start new evaluations so will go back over the OP in internals and make sure it’s all consistent and easy to follow.

I’ll continue working on multiple address and node sniffing support in elastic and polishing up some of the rougher APIs.

Also off to RustFest this week, which I’m looking forward to!


I’m working on exporting a library interface to the Ion Shell, initial work here, and using that to develop a distributed job server powered by Tokio + Ion, with a client/multi-node architecture. It will ultimately serve as a replacement for my previous Parallel implementation.

So far, I have the service working pretty well. It can receive commands and inputs; spawns N amount of slots per loaded command, where N is the number of cores on the node; and listens for / processes inputs in parallel by generating the commands to be executed within the embedded Ion shell instance.

What I have left to do is to obtain the outputs of the embedded shell executions and return them, develop the client that will be used to control the nodes, get TLS/SSL encryption for the connections, and to open source all the work.


This week, I’m finally de-lurking! :slight_smile:

For actual coding, I’m continuing a multi-month spare-time project that I’m using to learn Rust: converting a 20k+ line C library using Corrode. (No link, since it’s not in a state for public viewing yet.)

As someone who is approaching Rust with a C background (and loves the compiler doing all the borrow checking I had to do in my head), this project is actually quite helpful! :smile: I’m even thinking about writing a “how to deal with awkward conventions common to C bindings” cookbook, once I make sure I’m doing things in a Rust-like way.

The library, by the way, is QDBM, a 10-year-old piece of open-source abandonware.


Hopefully I’ll have time to continue working on rustassonne with a couple of friends of mine. We are implementing the board game Carcassonne in Rust!


I wrote a concat_string! macro for concatenating strings at runtime and published it on crates.io. I’ve seen format! used a lot for the same thing, but it’s an order of magnitude slower than just allocating a String and copying data into it, which is basically what concat_string! does.


Finally got a chance to play with the language again so I did sort of a “Hello World” of game development and made an implementation of snake. I gotta say ggez is pretty fantastic. Much easier to get up and running than anything I tried in the past.


After a bit over a week without touching Rust, I want to go back to Popsicle :shaved_ice: and fix a couple of bugs that a workmate found last week. That’s all!