What's everyone working on this week (13/2020)?

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

Getting a new version of Amethyst published, and working on WASM support.

@chemicstry got this far with pong_wasm:

#engine-general channel on discord if you want to follow our progress

2 Likes

Still working on Von Neumann Defense Force. Highlights since last week include:

  • Made various fixes and improvements related to the camera work I did last week.
  • So far, the client is using ggez for all its graphics and input needs. I've started looking into replacing that with wgpu-rs and winit. (Because obviously there isn't enough half-finished stuff already.)
  • Implemented continuous deployment of client binaries. Whenever I push new changes, Linux and Windows clients will be released automatically. (This is of limited use right now, as the server still needs to be deployed manually, but at least it's less work I have to do manually.)

Working on structural (field accessor traits,and emulation of structural types).

I'm doing the last commits for the 0.3.0 version,which adds support for enums,and a bunch of other smaller additions,hopefully releasing it this week,

What I'm working on right now is a wrapper type to call field accessor methods,as an alternative to the extension trait that does the same thing(the trait has longer method names).

In between schoolwork, hopefully I'll get a chance to finish my rewrite of the parser for rcc. The current parser has ... issues ... which make it very difficult to expand (e.g. I want to add support for designators in initializers soon: struct { int i, j, k; } s = { .i = 1, .j = 2, .k = 3 };).

I've done most of the actual parsing now, I just need to add a separate pass for typechecking and semantic analysis. All the code is already written, I just need to make it separate from the parser. Originally I planned to rewrite it at the same time, but it's already been 3 weeks since I started so I think it'd be better to finish and I can make it nicer later.

If I have time after that, I might take a crack at rust#65983, I'd love for intra-doc links to finally be stabilized. I haven't made any big PRs to rustc before so it will definitely be a learning experience!

1 Like

Just released a new version of desync after chasing a weird bug around the houses. Desync is a concurrency library that uses a model based around scheduling tasks on data instead of on threads - which produces a much smaller (and easier to understand) API surface for a wide range of capabilities. It's also interesting in that the mutual exclusion principles are based around ordering operations rather than blocking threads.

Desync 0.6 added support for futures 0.3, and part of that work was making it so that awaiting a desync future would steal the current thread if there was work waiting, which happens a lot because it's rare that the thread pool will schedule something new faster than the await call is reached. Using this in anger in FlowBetween I found it would sometimes get stuck: turned out to be that if there are two futures, a later one could steal the earlier one's tasks and this would result in a missed wake.

Easy fix once I figured it out, but a good lesson in understanding causes rather than symptoms, as it would have been easy to force the wake call which would not have fixed the issue but would probably have made things sort of work most of the time.

This also means I've finally got a new storage layer ready for FlowBetween. It's taken a while: the old one had the issue that it pushed too many details down to the storage layer which was making it hard to add new features (ages ago I had to remove an in-memory implementation used for testing due to how painful it had got to maintain - it's back). The new version essentially adds a new 'physical' storage layer and moves the painful stuff up above it: this will also let me move some editing operations down out of the UI layers, which should make them much easier to debug (this whole thing being prompted by hard to track down bugs in my bezier curve library... really did push over the house of cards here).

Working on a baby version of a game engine (Rusty Engine) to use to make a simple racing game while teaching Rust in my full-day crash course at OSCON 2020...assuming the conference doesn't get cancelled.

I'm happy to see progress on real game engines (Amethyst) also moving forward. :heart: I'd love to switch my baby game engine to using rendy instead of glutin for future years.

2 Likes