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

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

Implementing arbitrary behaviour states for my game, then integrating it with atelier-assets as a precursor to properly supporting it in Amethyst.

Go further on my journey to learn rust by doing the exercism.io challenges in rust

1 Like

Working on my distributed computing project constellation. Last week I tracked down the last heisenbug I've observed in macOS CI runs; it seems it was an XNU kernel bug! This week: reboot my "showcase" distributed data processing library amadeus (build on constellation), to hopefully be ready to make an announcement soon :crossed_fingers:

Continuing my work on abi_stable, a library for Rust-to-Rust ffi, with a focus on creating libraries loaded at program startup, and with load-time type-checking.

Last week

I finished mplementing a mechanism for adding extra checks to types when they are loaded from dynamic libraries,aside from those they get by just deriving StableAbi.

Changing the error reporting of proc macros from panics to use syn::Error,
also reporting as many errors as possible while avoiding false positives.
This could be improved somewhat,but it's in a much better place now than it used to be.

This week

The most important thing I am going to be doing is writing a lot of tests for proc macros.

1 Like

I have a long flight coming up this week and hope to get a number of items on uom (type-safe zero-cost dimensional analysis) worked on including documentation for 1.0, some open PRs, and some proc-macro experimentation!

1 Like

Learning tetra game framework using real life example - a puzzle game (looks like NES game Flipull, but due to slightly different game mechanics it is not the same thing. E.g, it seems I have to create my own levels - I do not think original ones fit my mechanics). Game core is done and it is playable - but it has only 2 easy levels :slight_smile: I need to revamp graphics(the current one is a bit ugly) and add more levels. At this moment it looks this way:

At this moment the game is unavailable. I'll make the repository public after fixing two troubles mentioned above.

2 Likes

I'm going to work on issue #111 of the rs-pbrt renderer ... let the light come through :sun_with_face:

Thanks for working on abi_stable.

Something isn't exactly clear to me in the README. It starts with " libraries loaded at program startup" but it looks like it's more powerful than that.

Can you confirm there can be some dynamic loading (without unloading or reloading) at any time during the program life ?

I've mainly been working on getting Tetra working on the web - I hit a cool milestone over the weekend when I was able to get someone's Ludum Dare entry compiling:

Very cool to see what @Vladimir is working on, as well :slight_smile:

Fixed:

:tada:

3 Likes

It can,it's just that I don't recommend doing that if the library is necessary for the program to continue running.An obvious exception to the "libraries loaded at startup" thing would be a plugin system that handles the failure to load a library in some way.

While working on implementing a MarbleTexture (see issue #112) I found a bug in the original C++ code of pbrt (see bug report). Rust just doesn't allow an index out of bounds, whereas C/C++ happily do. That's why I :heart: Rust ...

1 Like

A bit more than just this week... I have checked in on github after being away for a time, some projects are gaining new maintainers and owners (petgraph and itertools), and some are seemingly doing fine already (ndarray), so that's cool, and some I'm making releases for (indexmap, arrayvec).

I've also written a sudoku solver with common strategies + dancing links solver final step, I just nerd sniped myself hard with that one and had to work some nights on it, but it was fun. Dancing links is of course using an index-into-vector based linked list implementation, and it was more appropriate than ever to do that.

Use arrays for your linked list slots :wink: not going to say more

struct Node<T> {
    /// Prev, Next, Up, Down
    link: [usize; 4],
    value: T,
}

link to expanded example code

1 Like

Good to see you back after a while @bluss :slightly_smiling_face: keep up the awesome work.

1 Like

Working on improving the unsafe ecosystem with two crates:

  • ::require_unsafe_in_body, which provides a #[require_unsafe_in_body] proc-macro attribute that lets unsafe fn lose their unsafe "hygiene", i.e., making it be a compiler error to use an unsafe construct without an unsafe block. Combined with the pattern of annotating each unsafe block usage with an explanation / proof justifying why such block is sound, it should lead to safer unsafe Rust :slight_smile:

  • ::uninit, a crate that aims to improve the ergonomics of working with uninitialized data (currently only byte buffers), sketching, for instance, a modified version of the Read trait.

2 Likes

Today I worked a bit on procedural textures and added rendered images to the (work in progress) documentation. There are also small test scenes for each texture in the scenes subfolder of the repository.

FBmTexture

That will move into the official documentation with the next release ...

1 Like

Implementing a parser generator alapgen as part of my journey to learn Rust programming. In the vein of yacc and bison, except that a single specification file is used to produce both the lexical analyzer and the parser generator.

Hi all. I started learning Rust just this month, after hearing about it from a fellow C++ dev at work, and so far I like it a lot. This week I continued learning, more than halfway through The Book now, just finished the chapter on cargo and crates.io and decided to try it in practice with my first crate, an utility for lazy initialization (not the most original choice, judging from dozens of similar crates :sweat_smile:) .