attach #valtype to more types and expose Coroutine struct fields#372
Draft
bobzhang wants to merge 1 commit into
Draft
attach #valtype to more types and expose Coroutine struct fields#372bobzhang wants to merge 1 commit into
bobzhang wants to merge 1 commit into
Conversation
- Add `#valtype` to `Task[X]` in task.mbt for efficient value passing - Add `#valtype` to `Cond` in cond_var/cond_var.mbt - Make `Coroutine` struct `pub` in internal/coroutine, exposing its fields (coro_id, state, shielded, cancelled, ready, downstream) - Remove `priv` from `State` enum in coroutine.mbt so it is visible as part of the public Coroutine struct definition - Regenerate pkg.generated.mbti for coroutine package Types like Semaphore, Queue, and socket handle types (Tcp, TcpServer, etc.) cannot be #valtype due to mutable fields or abstract IoHandle field type. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Coverage Report for CI Build 312Coverage remained the same at 79.202%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
Collaborator
|
If the intention of making |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note this is not plan to be merged.
I am thinking we need an attribute like
cc @Yu-zh
Summary
This PR extends the use of
#valtypeto more types and exposes additional struct fields in the public API.Changes
Task[X]— Added#valtype, enabling the struct to be passed as values (two reference fields:value: Ref[X?]andcoro: Coroutine)Cond(cond_var) — Added#valtype; this struct has a single non-mutable field (waiters: Deque) so it qualifiesCoroutine(internal/coroutine) — Changed from opaquetype Coroutinetopub struct Coroutine, exposing its fields (coro_id,state,shielded,cancelled,ready,downstream) for downstream use and reflectionStateenum — Removedprivso it is accessible as part of the publicCoroutinestruct definitionpkg.generated.mbtifor the coroutine packageWhy not more types?
Several candidates were evaluated but cannot be
#valtypedue to language constraints:Semaphore,Queue[X]— havemutfields;#valtypedisallows mutable fieldsTcp,TcpServer,UdpClient,UdpServer,RawFd— all hold a@event_loop.IoHandlefield which is an abstract type;#valtypedisallows abstract type fieldsTesting
moon checkpasses with no errors.