Let's Write a Qi Compiler - Weekly on Friday

The Qi compiler project is just getting off the ground, and we are starting to meet regularly to discuss ideas, pair-program, and share updates. If you're interested in compilers and DSLs -- whether you are an expert or just learning -- you are welcome to attend and we'd be glad to have you.

Friday Aug 26 at 17:00 UTC :yin_yang: :racket:

Meetup time at your location: 2022-08-26T17:00:00Z

We will be meeting at the usual Gather.town link that we use for Racket meetups.

Format of the meetup

This is more of a "working group" than a general meetup, but it's still low-key and informal, and the more the merrier. If you're interested in attending but would like to just be a fly-on-the-wall, that's totally fine.

Broad topics

  1. What should Qi's "theory of optimization" be? That is, on what basis (e.g. unique assumptions that the language allows us to make, any "domain specific" information, any "insider information" the language gives us about the user input) can we perform optimizations?
  2. Architecture of a hosted DSL compiler -- how does one compile a DSL? Why would we do this?

Some of the discussion will be in connection with the paper Macros for Domain Specific Languages (Ballantyne et. al.), while some of the discussion will be unique to Qi as a language and oriented towards producing a working Qi compiler implementing a unique theory of optimization.

Resources for further reading

Notes from previous meetings
Qi Compiler project overview

Join us! :tropical_drink:


Thanks to all who attended! I've posted detailed meeting notes. We plan to meet at the same time next week :+1:

Reminder: the next Qi compiler gather is tomorrow.

Friday Sept 2 at 17:00 UTC :yin_yang: :racket:

Meetup time at your location: 2022-09-02T17:00:00Z
Gather.town link

(Not to be confused with the monthly Racket gather which is on Saturday :slightly_smiling_face: ).

Possible agenda for tomorrow:

  • Reviewing what's been done so far.

  • Continuing the integration of the bindingspec "meta DSL" which abstracts the expander for the DSL (in this case Qi) and may provide facilities for compilation as well (we are still learning about its capabilities).

  • Discussing specific examples of optimizations that we'd like the Qi compiler to do, towards uncovering Qi's "theory of optimization."

As always we'll do our best to keep the discussion accessible to all at a high level, even while we work out the low level details together. Reading the meeting notes should help if you are interested in the topic. See you then!

1 Like

We will be meeting later today.

Friday Sept 9 at 17:00 UTC :yin_yang: :racket:

Meetup time at your location: 2022-09-09T17:00:00Z
Gather.town meetup link
Meeting notes so far.

Last time, we completed the outsourcing of Qi's expander to a helper library. This time around, we'll report on the experience of using that outsourced expander so far -- bugs encountered, performance changes, etc.

Also, now that the expander is wrapping up, we are slowly transitioning to the compiler (the fun part), and ideas for optimizations and general strategies are welcome.

All are welcome. See you then!


We will be meeting tomorrow. The topic will be "require latency" (not Qi specific) -- see below for details.

Friday Sept 23 at 17:00 UTC :yin_yang: :racket:

Meetup time at your location: 2022-09-23T17:00:00Z
Gather.town meetup link
Meeting notes so far.

Recently there's been a decent amount of work on understanding and improving the "require latency" of Qi, that is, the amount of time that (require qi) takes. Last week we dug a little more into this and in the interim we've learned a few things about what contributes to require latency in general, in terms of time taken to "load" modules (i.e. read them from disk) vs "instantiate" them (i.e. evaluate their contents).

If you're a package author interested in improving performance of your library in this respect, or are curious about our experiments, or if you know a thing or two about this and would like to share, then stop by for tomorrow's meetup where we will review some of these findings. In any case, I'll note the results in the meeting notes, for anyone interested who can't make it.

We may also discuss compiler-specific things at a high level. See ya,

1 Like

We will be meeting soon. The topics will be adding bindings to Qi (i.e. ability to name outputs at intermediate stages of the flow via e.g. (as result)) and early experiments with compiler optimizations.

Friday Sept 30 at 17:00 UTC :yin_yang: :racket:

Meetup time at your location: 2022-09-30T17:00:00Z
Gather.town meetup link
Meeting notes so far.

P.S. Last week's discussion on factors affecting module load times may be of broad interest.

We will be meeting this Friday, November 4, for a special discussion on E-Graphs and available Racket FFI provisions for Rust's Egg library. Oliver Flatt, who works on some of these things, has kindly agreed to attend and share his experiences with these technologies as they are used in the Herbie library.

Friday Nov 4 at 17:00 UTC :yin_yang: :racket:

Meetup time at your location: 2022-11-04T17:00:00Z
Gather.town meetup link
Meeting notes so far.

The topic is not Qi-specific, except that the context of understanding these things is towards potentially using these technologies in the Qi compiler.

All welcome, see you then!