Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use JuliaLowering.jl for a cleaner way to transform resumable functions to finite state machines [$600] #99

Open
Krastanov opened this issue Aug 1, 2024 · 5 comments
Labels
bounty:600 bug bounty There is an award for solving this issue.

Comments

@Krastanov
Copy link
Member

Krastanov commented Aug 1, 2024

Edit: #100 has fixed most of these issues without relying on the not-yet-published JuliaLowering.jl. It uses a local reimplementation of most scoping rules of the language, thus missing edge cases might exist. Leaving this (now smaller) bounty for future work of moving this implementation to JuliaLowering, to provide a more centralized source-of-truth on scoping.


This software transform annotated julia functions into finite state machines that can be paused and re-entered. The issue tracker has many reports of edge cases related to unsupported syntax or bugs due to loss of scope information. PR #92 even attempts to fix some of these issues, but it is too limited and ad-hoc.

JuliaLowering.jl is itself only experimental these days, but it should have enough capabilities for solving most of the issues depicted here.

To claim this bounty, "simply" fix all these issues ;) (or fix many or the related issues)

Required skills: Deep understanding of Julia macros, syntax, and lowering.

Reviewer: Stefan Krastanov

Duration: 3 months

Payout procedure:

The Funding for these bounties comes from the National Science Foundation and from the NSF Center for Quantum Networks. The payouts are managed by the NumFOCUS foundation and processed in bulk once every two months. If you live in a country in which NumFOCUS can make payments, you can participate in this bounty program.

Click here for more details about the bug bounty program.

Bug bounty logistic details (click to expand)

To claim exclusive time to work on this bounty either post a comment here or message [email protected] with:

  • your name
  • github username
  • (optional) a brief list of previous pertinent projects you have engaged in

Currently the project is claimed by no one until ....

If you want to, you can work on this project without making a claim, however claims are encouraged to give you and other contributors peace of mind. Whoever has made a claim takes precedence when solutions are considered.

You can always propose your own funded project, if you would like to contribute something of value that is not yet covered by an official bounty.

@Krastanov Krastanov added bug bounty There is an award for solving this issue. bounty:1600 labels Aug 1, 2024
@thofma
Copy link
Collaborator

thofma commented Aug 3, 2024

Since JuliaLowering.jl is not registered, I wonder how you envisioned a solution using JuliaLowering.jl?

@Krastanov
Copy link
Member Author

Yeah, if this gets completed, it will not be merged for a while (especially given that there is not even a stability guarantee from the nonpublished JuliaLowering).

As long as there is a branch on which a test runner that uses Pkg.add("https://github.com/c42f/JuliaLowering.jl#some_commit_sha") succeeds (and all of the bugs related to the current ad-hoc way of creating state machines are squashed) this would be counted as a completed bounty.

It would be lovely if the bounty winner comes around to help in actually merging this in a couple of years (when JuliaLowering is actually out), but that would not be a requirement.

@Krastanov
Copy link
Member Author

Also, FYI, I have not explored JuliaLowering much by myself. I know it already has most of the necessary features, but I have not checked for what is missing. It is possible that JuliaLowering itself will need additional work for this bounty to be done.

@Krastanov
Copy link
Member Author

This JuliaLowering issue describes most of the necessary steps though: c42f/JuliaLowering.jl#2

@Krastanov Krastanov changed the title Use JuliaLowering.jl for a cleaner way to transform resumable functions to finite state machines [$1600] Use JuliaLowering.jl for a cleaner way to transform resumable functions to finite state machines [$600] Nov 21, 2024
@Krastanov
Copy link
Member Author

With all of the work done by @thofma , much of this bounty is already finished. Leaving the JuliaLowering part open for future work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bounty:600 bug bounty There is an award for solving this issue.
Projects
None yet
Development

No branches or pull requests

2 participants