Qi Meeting Sept 18 2025 - drym-org/qi GitHub Wiki
Minimizing the Second Derivative
Qi Meeting September 18 2025
Adjacent meetings: Previous | Up | Next
Summary
We moved the regular Qi meeting from Wednesdays to Fridays. We merged Eutro's PR upgrading to Syntax Spec v3. We brought our growing list of todos to a manageable state.
Background
It's the end of summer, and schedules are changing again. It was time to agree on a new weekly time for the Fall and beyond.
A while back, Eutro started a PR to upgrade Qi to Syntax Spec v3. We discovered that it caused a version regression so that Qi would only support Racket 8.10+ instead of 8.5+, and reported the issue on Syntax Spec.
Dominik pointed out on Discord that our list of todos has a positive first derivative as well as a positive second derivative. In other words, it's growing! And the rate at which it is growing also appears to be growing. We felt we should take some time to sort through them and take any actions we could to get them on a good track.
New Weekly Time
After checking with various Qi community members and regulars, we settled on Fridays as the new time. Sid said he would announce the new time after the meeting as well as update the Racket and Qi calendars.
Upgrade to Syntax Spec v3
After discussion, we felt that Racket 8.10 is already almost two years old, and so, even though the regression from 8.5+ appears to have been accidental in Syntax Spec, we decided to merge Eutro's PR to have one less thing on our plate as we corral our todos. So we're now using the latest and greatest Syntax Spec!
Taking Charge of Our Growing Todo List
Our Todo list contains tasks of different kinds: things we're actively working on, things that are on the backburner, and things that are planned for the (sometimes distant) future. We went through the list and took any actions we could to get some unblocked, "assign" some to folks who expressed interest in those tasks or who suggested them, create issues to track longer term items, and so on. We made a lot of progress in reining in all the "derivatives," as the new list shows (i.e., see Next Steps, below).
Of course, as a reminder, Qi is an ABE community and not a startup. The todos are not obligations so much as opportunities to have fun creating value together!
Next Steps
(Some of these are carried over from last time)
- Ready the inlining PR to be merged and tag for code review.
- Write phase 1 unit tests for inlining.
- Define the
define-producer,define-transformer, anddefine-consumerinterface for extending deforestation (also encapsulating both naive and stream semantics in the definition), and re-implement existing operations using it. - Implement the remaining producers and transformers in
racket/listforqi/list. - Attach a
deforestedsyntax property in the deforestation pass, and use it in compiler rules tests (instead of string matching). - Improve
qi/listand deforestation testing by writing a macro to simultaneously test the expansion and the semantics. - Investigate whether the deforested operations could be expressed using a small number of core forms like
#%producer,#%transformer,#%consumer, and#%stream. - Decide on whether there will be any deforested operations provided in
(require qi)(without(require qi/list)) - Review which
racket/listforms are actually needed inqi/list - Come up with a good way to validate the syntactic arguments to
rangeusing contracts. - Start organizing
qi-libintoqiandqi/basecollections - Publish
qi/classin some form. - Implement DAG-like binding rules for branching forms [Syntax Spec parallel binding-spec PR]
- Formalize Qi's semantics using Redex.
- Incorporate effects and bindings into Qi's pen-and-paper semantic model.
- Return to developing Qi's theory of effects, including accounting for binding rules.
- Write a proof-of-concept for implementing code generation from abstractions of "flow" and "connective tissue" that are set by a context parameter.
- Why is
range-map-carslower against Racket following the Qi 5 release? - Decide on appropriate reference implementations to use for comparison in the new benchmarks report and add them.
- Add reader flow syntax in
#lang qi - Develop a backwards-incompatibility migration tool using Resyntax, to be used in the next Qi release.
Attendees
Dominik, Eutro, Sid