What's everyone working on this week (20/2021)?

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

1 Like

Surprised no one has converted GitHub - rui314/chibicc: A small C compiler to Rust.

Inspired by the approach, trying to build a mini DSL (not C) -> wasm compiler.

4 Likes

This week I'm learning proc macros.

It was a little harder than expected to dive into, and I wonder how that could be solved (different documentations ?). I'd like to find the right approach to help other devs have the declic that was slow to come for me (assuming it's not just me).

I used proc macros to make the new version of lazy-regex this morning: lazy-regex 2, proc macros for lazy static regular expressions checked at compile time, easier match, easier captures.

2 Likes

I'm defending my Master's thesis "Using Relational Algebra to Facilitate Safe Refactoring for Performance in Rust"

The zoom meeting will be open to the public (20. May, 15:00 UTC).

Abstract

The choice of how to organize data in memory has a significant effect on the overall
efficiency of computer programs. Changing requirements over time may require this
choice to be revisited after a program's initial development has been completed.
Historically, data retrieval routines and program logic have been strongly coupled,
which hinders the maintenance programmer's ability to reorganize a program's data
without introducing new logic faults.

This paper proposes a new framework, Memquery, which separates these two
concerns, allowing a program's internal data to be reorganized without major changes
to its logic routines. The theoretical basis for this framework is relational algebra,
which has served a similar role in database systems for the past 50 years. A prototype
of the Memquery framework is presented. A comparison study with traditional
development techniques demonstrates that this prototype is capable of producing more
maintainable programs with similar performance characteristics.

(Poster; Paper)

16 Likes

Still working on reviving Stepper's test stand. The hardware I need is here now, so maybe I'll manage to make some progress this week.

1 Like

Assuming no privacy issues, could you record + post the talk? I'm terrible at tracking live events but would like to view the talk afterwards.

1 Like

I'll try. It may take a bit of time for me to figure out the video hosting; I don't know if my web server can handle that kind of load.

Don't worry about it if it's more work than clicking record screen on your machine; I'm sure you have enough tasks with thesis defense as is.

1 Like

I presume the paper is final? I'm reading it (will probably take more than a single session; very interesting, so far!) and found a typo.

1 Like

That's the version that got sent to the examiners. I think I have an opportunity to fix typos and the like before it goes into the official archives.

@2e71828 :If you have time, would you be willing to post an "Ask me anything about my thesis" thread/topic? I don't have any questions right now, but skimming through the work, there are topics (heterogeneous list, 'relational algebra' in Rust) I would like to ask you about in the future.

Yes; I'll be spending Friday doing relatively mechanical things, like publishing the code to crates.io and making the final paper submission. I should be able to keep an eye on a thread here at the same time.

I am working on fbt, "folder based testing". This is a library and a binary that I am building to test a rust based cli that I am writing.

Its kind of hard to test CLIs, with command line argument, logic of searching config files, environment variables etc. This lets you create a tests folder, in which each sub folder is a test case. In that sub folder you can specify the command you want to specify, store all the files that cli uses as input, and does a output folder comparison, stdout checking, exit code checks etc.

2 Likes

This looks interesting, and is something I hesitated to do myself. Among the features I thought were necessary was ways to generate the files & folders, especially when you need many of them, and of course the possible use in benches.

I have created a little crate slowlock to help tune proof of work functions and combine them with AEAD ciphers. Trying to get some feedback from more experienced rust developers.

So far generating the files and folder is manual, not sure how can it be done in automated way.

I would like to add bench support. Any ideas how it could work?

I was alluding to having a framework allowing you to generate a bunch of files and folders by code, have them written down as real files and cleaned behind, rather than having all the files in the repo. Of course this needs some design...

In my opinion, assuming your benchmark tool already does the warming (as all do), it's exactly like tests. But I'm not sure there's a way to have enough reproductibility this way to measure significative differences so this might be a dumb idea and I should continue test perfs of cli tools with only on memory pseudo files.

1 Like

I'm playing with SWC(Speedy web compiler) in order to transpile TypeScript for use in my quickjs projects