What's everyone working on this week (18/2019)?

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

Release a new version of sauron with ergonomics improvement.

Started rewriting the client side of Diwata from elm to sauron. Now I have both the server side and client side all written in rust.

uom (Units of measurement – type-safe zero-cost dimensional analysis) v0.22.2 was released over the week (credit to dunmatt and nicodemus26).

Continued work on various pieces of uom this week. Looking for feedback if the following set of minus sign and number character and super script characters display properly in your browser and console. Win 10 and Mac work. Looking for feedback from Linux or Win 7 users.


Displays fine on Firefox and Gnome Terminal on Linux for me.

1 Like

Finally finished writing my blog about adding regression tests to my mod-player. I also discovered Serde and how awesome it is. I also published an improved version of the mod-player crate

Been putting together onion skins in FlowBetween. They’re mostly done now and look pretty good:

Made a release of a few of the crates that support FlowBetween. I’ve given flo_binding a 1.0 release as its really been pretty stable for a long time. desync has a new release too: mainly switching from some old code that used Box to wrap futures to the newer impl Future style.

I’m going to be doing some work on the flo_curves library this week I think. The onion skins are created by via path arithmetic, and more complicated frames like this one show up some problems:

There’s a slightly weird habit of the ray caster not to find complete outlines for some paths, which leads to some missing brush strokes and sections being left un-erased. I want to work on the performance, too: most of the algorithms are still pretty naive so there’s a lot of room for improvement there.


I started developing yet another calculator :slight_smile:

My top requirements were: CLI-based, has interactive mode, transparently works with float point numbers, common fractions, complex numbers, and big integers. Here it is: https://crates.io/crates/rclc

It is not 1.0 yet but it is quite usable.

Big thanks to Pest(https://crates.io/crates/pest) - it made implementing math parser so easy and simple for me. And big thanks to everyone on this forum - I have learned a lot from reading discussions.

A short example with comments:

> sqrt(-2)  // square root of negative number
= 0.0+1.4142135623730952i
> sqr(ans) // square root of a complex number may produce a real number (ans - the result of last evaluated expression)
= -2.0000000000000006
> 345**12 // big integers in action
= 2843342266303054544082275390625
> 1\2 + 3\5  // one half and three fifth is one and one tenth
= 1\1\10
> sqr(3\5)  // square of a common fraction is a common fraction
= 9\25
> sin(90°) == sin(pi/2) // degrees and radians mixed in one expression, '°' can be replaced with 'd' for easier typing 
= 1
1 Like

Note that the instructions in the readme at https://crates.io/crates/rclc,

cargo install rcalc

do not install rclc v0.8.3. Instead they install rcalc v0.1.2, which, based on its dependencies, appears to lack most of the above features.

Thank you a lot! I started my project with the name ‘rcalc’ but after I found that such project exists I forgot to change old name in docs

Working on UI improvements (something like “make things obvious, even if it’s not beautiful”):

Working on re-implementing pi-hole in Rust as learning exercise.

Finally feeling comfortable with the Borrow Checker, Error Handling, and Standard Library. I’m going to refactor an early private crate a made with actually good practices.

I’m also gonna start reading the Embedded book (https://docs.rust-embedded.org/book/) – super excited!

Having implemented these features for abi_stable(a crate for Rust-to-Rust ffi, with a focus on creating libraries loaded at program startup, type-checked at load-time) :

  • Added Tag:A dynamically typed data structure associated with a StableAbi type,checked for compatibility at load-time.

  • Relaxed the Send/Sync bounds on DynTrait(ffi-safe multi-trait object),allowing the user to chose whether they require them or not.

  • Added conditional accessors for fields in prefix-types(how I implement vtables and modules),using a constand boolean expression to determine whether the field is accessible,changing how it’s checked at load-time.

  • Removed the requirement that DynTrait is created from a 'static type,using a different constructor function for non-'static types.

Now I am gonna work on adding Iterator and DoubleEndedIterator as usable traits in DynTrait.

I worked on three issues this week:

  1. So far I had only implemented homogeneous media, but wanted to render some heterogeneous ones.
  2. Looking at the example scenes I figured I needed a new integrator, the VolPathIntegrator.
  3. While working on both issues and related test scenes I found a bug in the current parser code … and fixed it.

Now, I’m at the point that I can render the first test scene with heterogeneous media, but:

  1. It renders far longer than the C++ side
  2. It looks different

So, that gives me something to do for the rest of this week, and probably the next week as well …